[关闭]
@nrailgun 2016-05-08T19:34:57.000000Z 字数 1011 阅读 1985

Git 分支处理与冲突解决

强力软件


Git 是强大的版本控制工具,但是正确使用 Git 可能是一件困难的工作。多人项目中,如果团队中有人不正确使用 Git,可能会制造麻烦。

基本命令

命令 描述
init 创建一个空的仓库
add 添加文件到预存区
rm 删除文件
mv 移动文件
commit 提交
status 检查状态
diff 检查未预存的修改
log 查看日志
tag 对提交打标签
clone 克隆远程仓库
remote 检查远程仓库
remote add 添加远程仓库
remote rm 删除远程仓库
fetch 拉取远程仓库信息到本地
push 向远程仓库推送

分支

分支是 Git 的重要特性。Git 的实现允许分支被快速创建,而 Git 也鼓励使用者创建分支。使用分支可以把你的开发工作与开发主线分离,避免影响主线。

命令 描述
branch 创建分支
checkout 切换到另一个分支
merge 合并分支
rebase 舍弃当前分支提交,创建目标分支等价提交

你可以从主线克隆仓库,通过 branch 创建自己的分支进行开发工作。当你的开发逐渐成熟,通过 merge 操作,合并两个分支。对于无冲突的 merge,有两种情况:

最坏的情况是出现了合并冲突:两个分支改变了同一个文件(即使这改变是相同的)。产生冲突之后,Git 不会提交,而会留下一系列冲突信息,根据冲突信息手动合并文件改动,再次提交。产生太多的冲突会影响开发工作。

rebase 不同于 mergerebase 舍弃本分支所做的提交,创建等价的提交到目标分支之上。优点是保持了提交历史的简单,方便做 bisect 定位 BUG 从哪个分支引入;缺点是隐藏了真实的提交历史。另外,如果分支被另一个开发者克隆,那么舍弃当前分支将导致这位开发者陷入尴尬。Git Book 要求使用者决不能 rebase 那些会被克隆的分支。

远程仓库

有一点非常重要,Git 是离线的。这意味着,对于开发者,本地所看到的远程仓库只是真正远程仓库的一个拷贝,而所有的更新都要手动拉取。对这一特性的错误理解可能导致频繁出现冲突。

Stop tracking remote branch

  1. git branch -d -r origin/dev

Tracking remote branch

  1. git checkout --track -b origin/dev_branch
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注