git分支的新建与合并(Git通俗易懂系列四)
git分支的新建与合并(Git通俗易懂系列四)$ git checkout -b hotfix 这相当于执行下面这两条命令:我把要新建的分支取名为 hotfix。要新建并切换到该分支,运行 git checkout 并加上 -b 参数:$ git checkout testing 这样 HEAD 就指向了 testing 分支。HEAD 在你转换分支(checkout)时指向新的分支。每次提交后 HEAD,随着分支一起向前移动。非常有趣,现在 testing 分支向前移动了一格,而 master 分支仍然指向原先 git checkout 时所在的 commit 对象。现在我们回到 master 分支看看:
分支简介使用 Git branch 命令创建分支:$ git branch testing
Git 如何知道你当前在哪个分支上工作的呢?
它保存着一个名为 HEAD 的特别指针。它和Subversion、CVS 里的 HEAD 概念大不相同。在 Git 中,它是一个指向你正在工作中的本地分支的指针(将 HEAD 想象为当前分支的别名)。
运行 git branch 命令,建立了一个新的分支,如果要切换到新分支,执行:
$ git checkout testing
这样 HEAD 就指向了 testing 分支。
HEAD 在你转换分支(checkout)时指向新的分支。每次提交后 HEAD,随着分支一起向前移动。
非常有趣,现在 testing 分支向前移动了一格,而 master 分支仍然指向原先 git checkout 时所在的 commit 对象。现在我们回到 master 分支看看:
分支的新建与合并我把要新建的分支取名为 hotfix。要新建并切换到该分支,运行 git checkout 并加上 -b 参数:
$ git checkout -b hotfix
这相当于执行下面这两条命令:
$ git branch hotfix $ git checkout hotfix
合并分支:
$ git merge hotfix
删除分支:
$ git branch -d hotfix 遇到冲突时的分支合并
如果在不同的分支中都修改了同一个文件,Git 就无法干净地把两者合到一起。
比如,合并iss53分支:
$ git merge iss53 Auto-merging index.html CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.
以用 git status 查阅,未解决的文件会显示unmerged(未合并):
你自己提交:
可以运行 git fetch origin 同步远程服务器上的数据到本地。会把 origin/master 的指针移到它最新的位置上:
fetch 操作下载代码后,你仍然无法在本地编辑该远程仓库中的分支。本地的代码并没有变,有的只是一个你无法移动的 origin/master 指针。
如果要把该远程分支的内容合并到当前分支,可以运行 git merge命令。
git pull 相当于fetch merge命令。
从远程分支 checkout 出来的本地分支,称为 跟踪分支 (tracking branch)。在跟踪分支里输入 git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。同样, git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。
推送本地分支git push (远程仓库名) (分支名)。如:
$ git push origin serverfix 或者: $ git push origin serverfix:serverfix 删除远程分支
1、可以用非常无厘头的语法来删除它:git push [远程名] :[分支名]。如果想在服务器上删除 serverfix 分支,运行下面的命令:
$ git push origin :serverfix