banner
克喵爱吃卤面

喵落阁

光就是一切的意义!
telegram
github
qq
email
x
bilibili

Git 同步上游倉庫的更新

Git 同步上游倉庫的更新#

  使用一個 Github Template 創建了我自己的倉庫,需要同步一下補丁更新,總不能自己手抄一遍吧,搜了一下解決方案。

  記錄一下。

添加上游倉庫#

  給上游倉庫取個名字,如果將命名為 upstream​ ,可以在本地倉庫中運行以下命令:

git remote add upstream https://github.com/$<upstream-repo>.git

獲取上游倉庫的更改#

  運行以下命令以獲取上游倉庫中的所有分支和提交:

git fetch upstream

合併上游更改#

  現在,將上游 main 分支的更改合併到您的本地 main 分支:

git merge upstream/main --allow-unrelated-histories

  如果只需要合併特定的 commit :

git cherry-pick <commit-hash>

  也可以使用

gcp <commit-hash>

  commit-hash 可以直接從 github 網頁上複製。

  這時 commit 的作者是源倉庫的作者, Vercel 提示我 Build 失敗,需要升級到 Pro,可以再修改一個文件,自己添加一條 commit 。

  當然這很不優雅,可以使用下面的命令獲取更改到文件,但是不會提交 commit ,

git cherry-pick <commit-hash> --no-commit

  然後手動提交一下

git commit -m "commit information"

解決衝突#

  如何自己已經修改過源代碼,在合併過程中可能發生衝突,需要手動解決。
Git 也會進行提示,手動編輯衝突文件並保存,然後再提交更改。

批量提交#

git cherry-pick <起始提>^..<結束提>

  如果有衝突會按照順序處理,然後執行, continue 直到結束

git cherry-pick --continue
  • <起始提交>​:範圍的開始點(不包含此提交,除非用 <起始提交>~ 或 < 起始提交 >^)。
  • <結束提交>​:範圍的結束點(包含此提交)。
  • ^​ 是 Git 的語法,用於指定 “之前的提交”。
  • ..​ 表示範圍。

推送#

git push origin main

  當然默認來說,並不會推送到新加入的 upstream​ ,直接 git push​ 即可

  如果不再需要同步,可以刪除上游的倉庫

git remote remove upstream
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。