作者:段兴
Git 配置
使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名。
$ git config --global user.name "Scott Chacon"
$ git config --global user.email "schacon@gmail.com"
Clone一个仓库
git clone git://git.kernel.org/pub/scm/git/git.git
创建一个新的仓库
现在假设有一个叫”project.tar.gz”的压缩文件里包含了你的一些文件,你可以用下面的命令让它置于Git的版本控制
管理之下.
$ tar xzf project.tar.gz
$ cd project
$ git init
如何提交一个文件?
1:将文件添加到索引当中去(即暂存区):
$ git add file1 file2 file3
2:将索引中的文件提交到远程仓库
$ git commit
或者使用git commmit -a 来提交暂存区(索引)中的所有的文件。
注意:在上述过程中,可以使用下面的命令来查看暂存区中有哪些文件将被提交:
$ git diff --cached
分支使用:
1:创建一个分支(如experimental):
$ git branch experimental
2:查看当前分支列表:
$ git branch
3:切换分支
假定当前分支是master分支,要切换到experimental分支,运行如下命令:
$ git checkout experimental
4:合并分支
假定当前处在master分支下,要将experimental分支合并过来,可使用如下命令:
$ git merge experimental
注意:合并的过程中,可能会出现冲突,可使用:$git diff 命令查看哪些文件有冲突,然后手动修改冲突。
解决冲突示例:
解决合并中的冲突
如果执行自动合并没有成功的话,git会在索引和工作树里设置一个特殊的状态, 提示你如何解决合并中出现的冲
突。
有冲突(conflicts)的文件会保存在索引中,除非你解决了问题了并且更新了索引,否则执行git commit都会失败:
$ git commit
file.txt: needs merge
如果执行git status 会显示这些文件没有合并(unmerged),这些有冲突的文件里面会添加像下面的冲突标识符:
<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
你所需要的做是就是编辑解决冲突,(接着把冲突标识符删掉),再执行下面的命令:
$ git add file.txt
$ git commit
注意:提交注释里已经有一些关于合并的信息了,通常是用这些默认信息,但是你可以添加一些你想要的注释。
上面这些就是你要做一个简单合并所要知道的,但是git提供更多的一些信息来 帮助解决冲突。
撤销一个合并:
如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
$ git reset --hard HEAD
或者你已经把合并后的代码提交,但还是想把它们撒销:
$ git reset --hard ORIG_HEAD
5:删除分支:
$ git branch -d experimental
日志管理:
1:查看日志
git log命令可以显示所有的提交(commit)的日志信息。
可以添加一些参数,限定git log命令
让git log显示补丁(patchs):
$ git log -p
如果用--stat选项使用'git log',它会显示在每个提交(commit)中哪些文件被修改了
$ git log --stat
可以按你的要求来格式化日志输出。‘--pretty'参数可以使用若干表现格式
$ git log --pretty=oneline
$ git log --pretty=short
2:日志排序
你也可以把日志记录按一些不同的顺序来显示。注意,git日志从最近的提交(commit)开始,并且从这里开始向它们
父分支回溯。如果你要指定一个特定的顺序,可以为git log命令添加顺序参数(ordering option)。
$ git log --pretty=format:'%h : %s' --topo-order --graph
$ git log --pretty=format:'%h : %s' --date-order --graph
也可以用 ‘--reverse'参数来逆向显示所有日志。
分布式工作流程:
1:获取工程代码:
在本机上另外一个开发者目录下clone一份代码
$ git clone /home/alice/project myrepo
也可以从远程获取代码:
git clone git://git.kernel.org/pub/scm/git/git.git
2:对代码进行开发,然后提交。
$ git commit -a
此处,可以开发过程中可以多次重复进行。
3:另一个开发者,可以从远程将其他人提交的修改同步过来。
$ git pull /home/bob/myrepo master
注意:git pull 命令的用法, git pull 本地开发代码 远程代码
从远程pull代码,一般有两步:
(1):从远程分支(remote branch)抓取被修改的内容
在config文件中定义$ git remote add bob /home/bob/myrepo(使用git remote命令建立了Bob的运程仓库的缩写)
这样就可以使用:$ git fetch bob来完成该第一部分工作。
(2):把修改的内容合并进当前的分支
采用git merge bob/master命令即可。