git cherry-pick命令

          git cherry-pick 可以合入某個分支的commit,開發功能需要新建一個分支,開發完畢之後要將新鍵分支修改code合到主分支上去就需要用到這個命令。

當下git內容

lj@lj-virtual-machine:~/111111/git/gittest$ git branch
* master
lj@lj-virtual-machine:~/111111/git/gittest$ ls
test.sh
lj@lj-virtual-machine:~/111111/git/gittest$ cat test.sh 
11
lj@lj-virtual-machine:~/111111/git/gittest$ 

新建一個分支test,查看該分支,內容和master分支上內容一樣

lj@lj-virtual-machine:~/111111/git/gittest$ git checkout -b test
切換到一個新分支 'test'
lj@lj-virtual-machine:~/111111/git/gittest$ git branch
  master
* test
lj@lj-virtual-machine:~/111111/git/gittest$ cat test.sh 
11
lj@lj-virtual-machine:~/111111/git/gittest$

增加test.sh內容(22),切換分支,這時候不能切換分支,因爲你的代碼boss還沒有審覈,所以你要先把你的修改commit並push到遠端。

lj@lj-virtual-machine:~/111111/git/gittest$ git status
位於分支 test
尚未暫存以備提交的變更:
  (使用 "git add <文件>..." 更新要提交的內容)
  (使用 "git checkout -- <文件>..." 丟棄工作區的改動)

	修改:         test.sh

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
lj@lj-virtual-machine:~/111111/git/gittest$ git add test.sh 
lj@lj-virtual-machine:~/111111/git/gittest$ git commit
[test 5e78967] test
 1 file changed, 1 insertion(+)
lj@lj-virtual-machine:~/111111/git/gittest$ git log
commit 5e78967005660b5debe810b4435a5d638c6a757d
Author: yaori <[email protected]>
Date:   Thu Mar 28 20:46:43 2019 +0800

    test

commit bfbbb585de8626fecfc4cd2afecf414f04637af2
Author: yaori <[email protected]>
Date:   Thu Mar 28 20:30:40 2019 +0800

    :wq

commit 0d4a4182f4ca18e14919727bbedffccc4f187ac7
Author: yaori <[email protected]>
Date:   Thu Mar 28 19:25:03 2019 +0800

    1

commit 6aadf6389b03a29123a72f26071ff57b514e4467
Author: yaori <[email protected]>
Date:   Thu Mar 28 09:26:05 2019 +0800

    test branch cherry-pick

commit 415428a4be7cc41a1d91381fe6b0dbe88b471cd0
Author: yaori <[email protected]>
lj@lj-virtual-machine:~/111111/git/gittest$ git push origin test
Counting objects: 6, done.
Compressing objects: 100% (1/1), done.
Writing objects: 100% (3/3), 233 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://git.iservernetwork.com/iserver/gittest.git
 * [new branch]      test -> test
lj@lj-virtual-machine:~/111111/git/gittest$ 

這次的commit id是5e78967005660b5debe810b4435a5d638c6a757d

git show commit id查看修改了啥

lj@lj-virtual-machine:~/111111/git/gittest$ git show 5e78967005660b5debe810b4435a5d638c6a757d
commit 5e78967005660b5debe810b4435a5d638c6a757d
Author: yaori <[email protected]>
Date:   Thu Mar 28 20:46:43 2019 +0800

    test

diff --git a/test.sh b/test.sh
index b4de394..bfc04a9 100644
--- a/test.sh
+++ b/test.sh
@@ -1 +1,2 @@
 11
+22
lj@lj-virtual-machine:~/111111/git/gittest$ 

在主分支下面git cherry-pick commit id(test分支)

lj@lj-virtual-machine:~/111111/git/gittest$ git cherry-pick 5e78967005660b5debe810b4435a5d638c6a757d
位於分支 master
您的分支領先 'origin/master' 共 1 個提交。
  (使用 "git push" 來發布您的本地提交)

您在執行揀選提交 5e78967 的操作。

無文件要提交,乾淨的工作區
之前的揀選操作現在是一個空提交,可能是由衝突解決導致的。如果您無論如何
也要提交,使用命令:

    git commit --allow-empty

否則,請使用命令 'git reset'

然後在push一次,test分支裏面的修改就push到遠程master分支了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章