使用分支
git branch
分支代表了一条独立的开发流水线.新的提交被存放在当前分支的历史中,导致了项目历史被 fork 了一份。
git branch 命令允许你创建、列出、重命名和删除分支,
git branch
和 git checkout
、git merge
这两个命令通常紧密地结合在一起使用。
用法
#列出仓库中所有分支
git branch
#创建一个名为 <branch> 的分支。不会 自动切换到那个分支去。
git branch <branch>
#删除指定分支。这是一个安全的操作,Git 会阻止你删除包含未合并更改的分支。
git branch -d <branch>
#强制删除指定分支,即使包含未合并更改。如果你希望永远删除某条开发线的所有提交,你应该用这个命令。
git branch -D <branch>
#将当前分支命名为 <branch> 也就是将当前分支重命名。
git branch -m <branch>
讨论
不管 bug 是大是小——你都应该新建一个分支来封装你的修改,
例子
创建分支
分支只是指向提交的 指针 ,理解这一点很重要。当你创建一个分支是,Git 只需要创建一个新的指针——仓库不会受到任何影响
删除分支
一旦你完成了分支上的工作,准备将它并入主代码库,你可以自由地删除这个分支,而不丢失项目历史:
git checkout
#创建并查看 <new-branch>,-b 选项是一个方便的标记,告诉Git在运行 git checkout <new-branch> 之前运行 git branch <new-branch>。
git checkout -b <new-branch>
#将 <existing-branch> 作为新分支的基,而不是当前分支
git checkout -b <new-branch> <existing-branch>
分离的 HEAD
HEAD 是 Git 指向当前快照的引用
git merge
合并是 Git 将被 fork 的历史放回到一起的方式。git merge 命令允许你将 git branch 创建的多条分支合并成一个。
用法
#将指定分支并入当前分支
git merge <branch>
讨论
快速向前合并 。Git 只需要将当前分支顶端(快速向前地)移动到目标分支顶端
如果分支已经分叉了,那么就无法进行快速向前合并。当和目标分支之间的路径不是线性之时,Git 只能执行 三路合并 。三路合并使用一个专门的提交来合并两个分支的历史.
快速向前合并
下面的代码创建了一个分支,在后面添加了两个提交,然后使用快速向前合并将它并入主分支
# 开始新功能
git checkout -b new-feature master
# 编辑文件
git add <file>
git commit -m "开始新功能"
# 编辑文件
git add <file>
git commit -m "完成功能"
# 合并new-feature分支
git checkout master
git merge new-feature
git branch -d new-feature
三路合并
需要进行三路合并,因为 master 在这个功能开发时取得了新进展。这是复杂功能和多个开发者同时工作时常见的情形
# 开始新功能
git checkout -b new-feature master
# 编辑文件
git add <file>
git commit -m "开始新功能"
# 编辑文件
git add <file>
git commit -m "完成功能"
# 在master分支上开发
git checkout master
# 编辑文件
git add <file>
git commit -m "在master上添加了一些极其稳定的功能"
# 合并new-feature分支
git merge new-feature
git branch -d new-feature
# git远程删除分支后,本地git branch -a 依然能看到的解决办法。
使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息
此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用 git remote prune origin 命令:
提示你可以通过git remote prune 移除这个分支。(也就是说你可以刷新本地仓库与远程仓库的保持这些改动的同步)
这个在远程删除的分支在你本地仓库也将被删除。再通过git branch –a 来查看。
注意,Git 现在无法进行快速向前合并,因为无法将 master 直接移动到 new-feature。
博客所有内容仅供自已学习和学习过程的记录,如有侵权,请联系我删除!!!