代码版本控制工具GIT

GIT

Linus:

                I’m an egotistical bastard, and I name all my projects after myself. First Linux, now git.

官方指南:https://git-scm.com/book/zh/v2

一图胜千言:

Git 是一个版本控制工具,它能实现团队中的代码协作开发,在代码同步和管理方面功能强大、理念先进。

Git 是当下最流行的分布式版本控制工具,轻量级,但功能强大,由 linux 之父 linus 开发。它的使用特别广泛,尤其开源社区基本都用它作为版本控制工具。我们每个人也要尽量掌握它。

而网站 github.com 是基于 git 工具的一个代码托管网站,目前基本所有知名的开源项目都选择把代码部署到这个网站。这里的代码包罗万象,是个学习的天堂。实属居家旅行、杀人拿塔的必备网站。

如果想用 git 工具下载同步代码,方法如下:

#1. 进入 git bash,切换到相应目录,比如,e 盘下的 course 目录

cd/e/course/


#2. 如果是第一次下载,执行以下命令

git clone https://github.com/13431/notes.git


#3. 如果不是第一次下载,只是更新代码,执行以下命令

#ps. 要经常运行这个命令,保持与服务器的同步

cd/e/course/notes/

git pull


这是 Git 的一个教程,大家有时间可以按照上面的看看、练练,以后务必掌握基本用法: Git 廖雪峰 教程

下面总结了一下常用的基本命令:

## 修改 .gitconfig 文件,这是 git 的配置文件

vi~/.gitconfig


## 初始化 版本库

git init

git init-db


## 添加忽略文件。这个文件控制,哪些文件不要被提交

echo "*.svn" > .gitignore


## 将改变增加至索引

git add .


## 从索引写入到库

git commit -m "提交到版本库"

git commit -a -m "提交,连同所有未 add 的修改文件"

git commit --amend -a -m "替换最后一次的提交信息"


## 查看修改了什么东西

git diff

git diff --cached

git status


## 回撤版本,重新提交。后悔药。

git reset HEAD^                               # 回撤到上一版本,默认是 --mix 形式,另有 --soft 和 --hard 形式

git status                                      # 可以看到,上一版本提交的文件没有增加到 index 的状态

git add/commit...                         # 做完处理后,重新提交 

## 查看日志,历史记录

git show

git log

git log --pretty=oneline                             #定制 log 的显示样式

git log -2 -p                                                 #显示最近两次提交的详细信息

git log --stat --summary                                #简要显示每次更新的统计信息(提交过那些文件,有多少行修改)

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'--abbrev-commit


## 增加/查看/切换/删除 分支

git branch                                               #查看分支

git branch 1234                                  #创建分支 1234

git branch 1234 343223                           #以 343223 为起点创建1234 分支

git checkout 1234                                      #切换到分支 1234    

git checkout -b tmp                                #创建并切换到分支 tmp

git branch -D tmp                                #删除分支 tmp

## 合并工作到主分支(1234 -> master)

git checkout master                        #切换到主分支

git merge HEAD 1234                #将 1234 的最新版本合并到当前分支

git pull.1234                                  #相当于 git fetch && git merge

## 生成并应用补丁,这是另外一个合并工作的方法。暂时不需要搞太清楚。

git format-patch master>A.patchgit checkout master                    #先生成补丁文件,再切换到分支目录

git apply A.patch                                         #应用补丁文件到当前分支

git add/commit...                                 #然后提交修改

## 下载/上传/更新 信息到指定版本库

git clone git://192.168.1.1/repo.git

git push git://192.168.1.1/repo.git 1234:master

git pull git://192.168.1.1/repo.git master:1234

git fetch public

## 其他命令:

git tag                             #将某个版本做个标记,即赋予一个好记的名字

git gc                                #垃圾收集,能大大减小版本库大小

git repack                      #同上,也能大大减小版本库大小

git ls-tree HEAD                #查看版本库中的文件结构,下面语句是跟 awk 合作,打印整个目录结构

git ls-tree -r HEAD|awk'{print $4}'>d:/home/index/repTree

git whatchanged                                               #显示某个版本改变了哪些文件

git show-branch                                                #显示分支变动情况

git reflog                                                           #显示所有变更历史(跟 git log 不同)

git clone                                                           #相当于 git init && git fetch

git pull                                                             #相当于 git fetch && git merge

git rebase                                                        #git merge 外,合并仓库的另一种形式

## 下面的例子是建立一个纯仓库,并作为开发的中心仓库(即 GIT 服务端)

git clone --bare /workspace/hnpmi /repo/1234.git                #创建一个新的纯仓库,用于备份、共享

cd/workspace/1234                                                               #这是我们的工作目录

git remote add origin /repo/1234.git                                      #将刚才新建的仓库添加为我们的远程分支

git push origin master                                                             #本地的 master 分支有更新,同步到远程分支

Subversion


首先,下载可爱的小乌龟:

wget https://nchc.dl.sourceforge.net/project/tortoisesvn/1.9.5/Application/TortoiseSVN-1.9.5.27581-x64-svn-1.9.5.msi

其次,如果想使用 svn 从服务器上下载东西:

svn checkout http://svn.apache.org/repos/asf/struts/struts2

svn co http://svn.apache.org/repos/asf/struts/struts2

如果想同步代码:

svn update

查看当前代码的修改情况:

svn status

svn st

如果想提交代码:

svn commit -m 我的注释

svn ci -m "My Message"

查看日志:

svn log

寻求帮助

svn --help

svn update --help

搭建服务器

首先,创建一个 svn 库:

svnadmin create /var/svn/aaa

修改下面的 conf/svnserver.conf 文件,将下面几条注释去掉

anon-access = read # 匿名用户只能读,不能改

anon-access = write      # 已登录用户,可以修改

password-db = passwd    # 指明验证文件的名字

其次,开启服务:

svnserve --daemon --root /tmp/bbb

然后,就可以访问了

svn co svn://ip

导入文件夹到项目,可以用 import 命令:

svn import ~/hello svn://ip/hello

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容