@nrailgun
2016-05-08T19:34:57.000000Z
字数 1011
阅读 1985
强力软件
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
,有两种情况:
merge
只需移动指针;最坏的情况是出现了合并冲突:两个分支改变了同一个文件(即使这改变是相同的)。产生冲突之后,Git 不会提交,而会留下一系列冲突信息,根据冲突信息手动合并文件改动,再次提交。产生太多的冲突会影响开发工作。
rebase
不同于 merge
。rebase
舍弃本分支所做的提交,创建等价的提交到目标分支之上。优点是保持了提交历史的简单,方便做 bisect
定位 BUG 从哪个分支引入;缺点是隐藏了真实的提交历史。另外,如果分支被另一个开发者克隆,那么舍弃当前分支将导致这位开发者陷入尴尬。Git Book 要求使用者决不能 rebase
那些会被克隆的分支。
有一点非常重要,Git 是离线的。这意味着,对于开发者,本地所看到的远程仓库只是真正远程仓库的一个拷贝,而所有的更新都要手动拉取。对这一特性的错误理解可能导致频繁出现冲突。
git branch -d -r origin/dev
git checkout --track -b origin/dev_branch