Skip to main content

分支與主線同步

Cache Flow

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