如何把Git的某个commit提交到指定的本地分支和远程分支

如题所述

Git的分支合并主要依赖于checkout命令和cherry-pick 命令。cherry-pick就是从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。如果你以并行方式在处理两个或以上分支,你可能会发现一个在全部分支中都有的bug,如果你在一个分支中解决了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不会弄乱其他的文件或commit。

1.例子:如我的Git文件在H:盘下,/h/myfirstproject,该目录中有三个分支:test分支,newbranch1分支和mater分支。如果想把test分支的某个commit合并到master,需要经过下面的步骤:

    执行git log -3 --graph test,查看test分支下的commit:    æ³¨ï¼šcommit 后面的hash值代表某个commit,这里把”2e1ada53819d46557b24ee7376dc61d37a06939d“这个commit提交到master。

    执行git checkout master,切换到master分支。

    执行 git cherry-pick 2e1ada53819d46557b24ee7376dc61d37a06939d,该commit便被提交到了master分支。

    到此,”2e1ada53819d46557b24ee7376dc61d37a06939d“这个commit便被提交到了master分支。

    2.例子:把本地的test分支的某个commit提交到远程testdevelop分支。

    从远程分支 checkout å‡ºæ¥çš„本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的本地分支。在跟踪分支里输入Git push,Git
    会自行推断应该向哪个服务器的哪个分支推送数据。反过来,在这些分支里运行git pull ä¼šèŽ·å–所有远程索引,并把它们的数据都合并到本地分支中来。

    在克隆仓库时,Git 通常会自动创建一个名为 master çš„分支来跟踪 origin/master。这正是git push å’Œ git pull ä¸€å¼€å§‹å°±èƒ½æ­£å¸¸å·¥ä½œçš„原因。当然,你可以随心所欲地设定为其它跟踪分支,比如origin ä¸Šé™¤äº† master ä¹‹å¤–的其它分支。刚才我们已经看到了这样的一个例子:git checkout -b [分支名]
    [远程名]/[分支名]。

    1.首先新建一个临时分支,并把临时分支与远程分支关联。

    git checkout -b tempbarch --track origin/testdevelop

    2.此时已经切换到了tempbarch分支。再执行:git log -3 --graph test,查看test分支下的commit:

    3.执行git cherry-pick f6cb436ff5a010cdd72dc2c8ff018db8e8832271 即可把”f6cb436ff5a010cdd72dc2c8ff018db8e8832271“这个commit提交到tempbranch分支。

    然后再通过Tortoise客户端的push命令,即可把该commit提交到远程testdevelop分支。

    4.切换到任何非tempbranch分支,如master分支,执行git branch -d tempbranch,即可把tempbranch分支删除掉。

温馨提示:答案为网友推荐,仅供参考
相似回答