簡體   English   中英

拉入不同的Git分支

[英]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 這將創建一個新提交,其中包含masterbranchB所有更改。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM