2012-11-19 46 views
3

我們使用github回購作爲我們的「中央存儲庫」。git從特定分支拉到特定分支

我們計劃有多個編碼器以下列方式臨時服務器上的工作:

  1. 編碼人員對他們的本地回購一個單獨的分支工作;
  2. 編碼器推送改變github;然後
  3. 打碼機拉從GitHub更新到服務器回購

因此,在實踐中,在步驟3,編碼器將運行在分期回購如下:

git checkout coderA-updates
git pull origin coderA-updates
git checkout master

有沒有辦法更新一個特定的分支,而不必先git checkout


TLDR: 你怎麼做這樣的事情git pull origin remoteBranch localBranch,而無需切換活躍的分支?

謝謝:)

+0

你的意思是「更新一個特定的分支」?其文件處於可用狀態的唯一分支是已檢出的當前分支。如果你想更新內部的回購,git fetch也會爲其他分支做這件事,但是如果沒有分支是最新的,你將無法處理這些文件。簡而言之,您可以更新您想要的任何分支或所有分支,但只有當前分支的文件可用。 – eis

+0

嗨eis。通過「更新特定的分支」,我的意思是通過從github獲取最新的提交來更新分支。我只想更新分支,我不需要這些文件可用。你如何使用git fetch來只更新一個特定的分支?謝謝 – Bibokid

回答

1
git checkout branchB 
git pull origin branchA 

這得到這發生在branchA變化並將它們合併成當地branchB

git help merge說:

Incorporates changes from the named commits (since the time their histories diverged from the current branch) into the current branch.

所以,我認爲這是不可能不使當前的其中一人2個分支工作。

您可以在當前活動分支中使用git stash以保存更改,然後結賬branchB並拉branchA。合併完成後,您簽出您存儲更改的分支並使用git stash apply

或者您可以簡單地在檢查/提取之前提交更改。

我希望這會有所幫助。

+0

謝謝sergey。這雖然改變了當前活動的分支。我想擁有它,以便當前活動的分支保持不變 – Bibokid

+0

我的問題是當有2個編碼器拉動時。說編碼器A在分支A上工作,編碼器B在分支B上工作。當編碼器A處於測試分支A的中間時,編碼器B必須等到編碼器A完成測試之後,才能將任何東西拉到分支B.謝謝btw :) – Bibokid

+2

@Bibokid你的意思是這兩個編碼器在同一個文件系統上工作?你能否澄清這個問題呢? – eis

0

git help pull

SYNOPSIS

git pull [options] [<repository> [<refspec>...]] 

DESCRIPTION

[...]

can name an arbitrary remote ref (for example, the name of a tag) or even a collection of refs with corresponding remote-tracking branches (e.g., refs/heads/:refs/remotes/origin/), but usually it is the name of a branch in the remote repository.

所以,你可以做git pull remoteBranch:localBranch,它會工作。

+0

謝謝,我會稍後再試 – Bibokid

+0

我嘗試過'git pull origin remote remote:localBranch'但是錯誤:被拒絕(非fastforward)雖然我確定'localBranch'是'remoteBranch'的早期版本 – Bibokid

+0

嘗試查看提交哈希。也許有一個'git rebase'或類似的東西影響了哈希。 – mgarciaisaia

0

使用普通fetch

git fetch origin remoteBranch:localBranch 

這隻會默認快進的改變工作(見docs)。