[英]Pulling in different Git branch
假設我創建了一個倉庫,它有一個分支稱為master。 如果有人分叉倉庫並推送到新的分支B,那么對我來說,在不覆蓋本地主分支的情況下在本地引入B的最佳方法是什么? 我是否在本地切換到分支B,然后提取更改? 我的猜測是,如果我不明確在本地切換分支,那么如果我從遠程分支B中提取更改,那么我將用B覆蓋本地主分支。這里的最佳選擇是什么?
您可以執行git fetch origin branchname
。 通過執行git pull origin branchname
您可以合並兩個分支的更改。 安裝像kdiff3這樣的mergetool。 您可以將兩者整合,請點擊此鏈接
git fetch origin
git checkout --track origin/<remote_branch_name>
您可以使用git fetch origin branchB
來從branchB
獲取所有提交,而無需修改您的master
目錄或工作目錄。
如果要將更改應用到master
,則可以在master
分支上使用git merge FETCH_HEAD
進行git merge FETCH_HEAD
。 這將創建一個新提交,其中包含master
和branchB
所有更改。 FETCH_HEAD
是最后獲取的提交。
我想當您編寫“ [某人]推送到新分支B”時,您的意思是他們推送到了自己的分叉存儲庫,而不是原始存儲庫origin
。
與其從原點獲取B
,還需要從他們的fork中獲取:
git fetch <url/to/their/fork/repo> B
您將在其分支B
中獲得提交的副本,並且可以看到帶有git branch -a
的遠程分支。 您可以checkout
遠程分支以使您的工作文件反映分支B
如果需要,可以在提取的同時創建本地分支。 創建的本地分支的名稱位於:
。
git fetch <url/to/their/fork/repo> B:B
現在,您無需在相當長的分支名稱上運行git checkout
,而只需git checkout B
請記住, pull
只是fetch
+ merge
,並且merge
發生在當前已簽出的分支中。 您的猜測是正確的,因為如果在檢出master
情況下運行git pull
,則會將pull分支的內容合並到master
。 不過,這並不是真正的覆蓋,而是向master
添加一個提交。
如果您打算多次使用他們的分叉倉庫,則可以將其添加為遠程倉庫:
git remote add their_fork <url/to/their/fork/repo>
之后,您無需編寫其整個URL,可以改用遠程名稱:
git fetch their_fork B:B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.