2016-03-01 94 views
1

我已經分叉了一個git回購(稱爲上游),我在我的github上有一個副本(稱之爲原點),並且我有一個本地副本叉在我的機器上。我想保持我的叉與最初的回購日期。Git:從分叉回購拉並推到我的貨叉

該項目有幾個分支機構,我可能在某一天處理其中的任何一個分支。我查看了我的分支的本地副本,並且想要使用上游/分支的最新更改對其進行更新,然後將這些更改推送到origin/branch,以便一切都是最新的。

有沒有辦法設置一個分支從遠程拉到原點?我現在可以通過手動設置跟蹤分支到上游/分支,執行git pull,然後手動將跟蹤分支設置爲原點/分支並執行git push來完成。這工作,但它似乎很笨拙。有沒有更乾淨的方法來做到這一點?

+0

只是爲了討論的緣故,通常你的私人分支將被稱爲「原產地」,而原始回購被稱爲「上游」。有時候我把我的個人名稱命名爲「personal」 –

+0

謝謝,我已經編輯過符合這個慣例 – KBriggs

回答

2

國際海事組織在這種情況下,我更喜歡我的pushpull聲明是明確的,即使它是更多的打字。

例如,而不是依靠之類的東西跟蹤分支,我會用以下形式:

git push|pull <remote> <branch> 

例子:

# pull from remote 
git pull remote master 

# push to origin 
git push origin master 

這樣,我相信,我已經拉/從/推送到正確的位置。

如果這似乎有太多的打字,你總是可以定義一個別名:

git config --global alias.pullr "pull remote master" 
git config --global alias.pusho "push origin master" 

並調用這樣的別名:

git pullr 
git pusho 

運行這些git-config命令後,您可以編輯您別名在您的~/.gitconfig文件中。

+1

'git remote --help'同意這個。 「 」請注意,推送網址和提取網址雖然可以被設置爲 ,但仍必須指向相同的位置,而您推送到推送網址的內容應該是您立即從中獲取的 如果您試圖從一個地方(例如您的上游)獲取 並推送到另一個地方(例如您的 發佈存儲庫),請使用兩個單獨的遙控器。「 –

0

雖然我也通常使用喬納森的做法,你完成你在問題中描述的方法是:

git remote set-url --push REMOTE_NAME URL_OF_ORIGIN_FORK

例如,如果你的遙控器被命名爲「上游」,你會說:

git remote set-url --push upstream URL_OF_ORIGIN_FORK

這將使git push發送更改爲「原產地」和git pull將抓住從「上游」的轉變。