Git用法詳解

        默認,git項目只有一個分支master,當然可以在本地創建多個分支,並推送到遠程git倉庫上,或者將遠程git倉庫上的其他分支拉取到本地。

一、查看本地已有的分支

進入到項目根目錄,打開命令行/終端,輸入指令git branch,將會顯示該項目的本地的全部分支,其中、當前分支的前面有*號。

二、本地檢出一個新的分支並推送到遠程倉庫

1.創建本地分支

git checkout -b 新分支名

執行該指令後,會在本地創建一個新分支,該分支是從當前分支上檢出的,所以所有文件內容都和當前分支一模一樣,這是正常的。創建成功後,將自動切換至新分支上。

2.推送本地分支到遠程倉庫

git push --set-upstream origin/分支名

例如,把上一步創建的本地dev1推送到遠程倉庫: 

三、將遠程git倉庫裏的指定分支拉取到本地(本地不存在的分支)

git checkout -b 本地分支名 origin/遠程分支名

這個將會自動創建一個新的本地分支,並與指定的遠程分支關聯起來。
例如遠程倉庫裏有個分支approve,我本地沒有該分支,我要把approve拉到我本地:

若成功,將會在本地創建新分支approve-20190511,並自動切到分支approve-20190511上。

四、git cherry-pick用法

        git cherry-pick可以理解爲”挑揀”提交,它會獲取某一個分支的單筆提交,並作爲一個新的提交引入到你當前分支上。 當我們需要在本地合入其他分支的提交時,如果我們不想對整個分支進行合併,而是隻想將某一次提交合入到本地當前分支上,那麼就要使用git cherry-pick了。用法如下:

git cherry-pick [<options>] <commit-ish>...

常用options:
    --quit                退出當前的chery-pick序列
    --continue            繼續當前的chery-pick序列
    --abort               取消當前的chery-pick序列,恢復當前分支
    -n, --no-commit       不自動提交
    -e, --edit            編輯提交信息

   (1)git cherry-pick commitid
    在本地倉庫中,有兩個分支:branch1和branch2,我們先來查看各個分支的提交:

# 切換到branch2分支
$ git checkout branch2
Switched to branch 'branch2'
$ 
$ 
# 查看最近三次提交
$ git log --oneline -3
23d9422 [Description]:branch2 commit 3
2555c6e [Description]:branch2 commit 2
b82ba0f [Description]:branch2 commit 1
# 切換到branch1分支
$ git checkout branch1
Switched to branch 'branch1'
# 查看最近三次提交
$ git log --oneline -3
20fe2f9 commit second
c51adbe commit first
ae2bd14 commit 3th

   現在,我想要將branch2分支上的第一次提交內容合入到branch1分支上,則可以使用git cherry-pick命令:  

$ git cherry-pick 2555c6e
error: could not apply 2555c6e... [Description]:branch2 commit 2
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

      當cherry-pick時,沒有成功自動提交,這說明存在衝突,因此首先需要解決衝突, 解決衝突後依次運行git add .git cherry-pick --continue命令。 

$ git add .
$ git cherry-pick --continue .
[branch1 790f431] [Description]:branch2 commit 2
 Date: Fri Jul 13 18:36:44 2018 +0800
 1 file changed, 1 insertion(+)
 create mode 100644 only-for-branch2.txt

   現在查看提交信息: 

$ git log --oneline -3
790f431 [Description]:branch2 commit 2
20fe2f9 commit second
c51adbe commit first

(2)git cherry-pick commitid

git cherry-pick xxx_id1..xxx_id3

 注意:中間的兩個點,表示把兩個commit區間的所有commit多複製過去。但是不包含第一個commitid , 即 git cherry-pick (commitid1..commitid100], 如果想搞成[]區間,使用 git cherry-pick A^..B 相當於[A B]包含A。

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