分支與主線同步
git pull
- 切換到新分支
- 從遠端更新程式碼,並將 master 合併至新的分支。HEAD 指向新分支的程式碼。
git checkout <new_branch>
git pull origin master
git checkout <new_branch>
# 加入參數 --rebase,以 rebase 的方式合併
git pull --rebase origin master
git fetch + git merge
- 本地獲取遠端更新
- 將 master 的程式碼合併至新分支中,HEAD 指向新分支的程式碼
# 遠端更新
git fetch origin master
git checkout master
git merge origin/master
# 在新分支合併 master
git checkout <new_branch>
git merge master
不更新本地 master,在新分支直接合併本地分支 origin/master
git fetch origin master
git merge origin/master
git fetch + git rebase
- 本地獲取遠端更新
- 切換到新分支,將新分支的基準點修改至新的基準點,而新分支所修改的程式碼紀錄接在後面。HEAD 指向新分支的程式碼。
# 遠端更新
git fetch origin master
git checkout master
git merge origin/master
# 切換新分支,修改新分支的基準點
git checkout <new_branch>
git rebase master
不切換到新分支,直接指定新的基準點。
# 遠端更新
git fetch origin master
git checkout master
git merge origin/master
# 修改新分支的基準點
git rebase master <new_branch>
不更新本地 master 分支,直接修改新分支的基準點以 origin/master 為新的基準點。
# 在新分支進行遠端更新
git fetch origin master
git rebase origin/master
簡化指令
# 等同 git fetch + git rebase,在所在分支直接進行修改基準點
git pull --rebase origin master
git cherry-pick
- 本地獲取遠端更新
- 切換新分支
- 使用 cherry-pick 將目前 origin/master 與新分支差異的提交紀錄合併至新分支,建立一個提交記錄
# 遠端更新
git fetch origin master
# 切換新分支,進行 cherry-pick
git checkout <new_branch>
git cherry-pick origin/master