2012-01-20 50 views
0
git clone [email protected]:foo/bar.git bar-master 

git branch release 
git push origin release 

git clone -b release [email protected]:foo/bar.git bar-release 

cd bar-master 
touch foo.txt 
git commit -m "foo.txt" 

cd bar-release 

如何合併來自主服務器的更改爲條形釋放並將更改推回到遠程原始/發佈分支​​。合併更改並將更改推送回遠程分支的正確方法是什麼?如何合併推送來自遠程分支的更改

回答

5

我真的鼓勵你習慣的一個目錄內工作。 Git是專門爲此設計的。

如果你這樣做的原因是因爲你不能馬上告訴你用什麼其他比目錄名,然後我會鼓勵尋找到的東西,將您提示包括是哪一個分支上分支名稱。我在我的個人dot文件這樣的事情(bash prompt setting here__git_ps_1 command here

這爲我節省了這麼多次這是值得其重量的黃金。


現在,我們已經得到了多目錄問題解決了,你應該閱讀這個偉大的文章,名爲"A successful Git branching model",涵蓋了使用幾個不同的分支進行開發,儘管在一個存儲庫。

一旦你完成了,現在你已經準備好應用這個相同的東西給其他代表ositories。首先,你需要將遠程倉庫添加到git跟蹤的遠程列表中。這僅僅是有幫助的,你可以通過而不是地址參考,名稱一般比地址短得多。

git remote add main [email protected]:organization/main.git 

我在這裏假設遙控器是這個release分支。你會想在這裏做的第一件事是更新此版本庫,你可以用這個命令執行的信息:

git fetch main 

如果你有多個遙控器工作(這表明,一些瘋狂你的一部分)的水平,你可以用git fetch --all獲取它們。

無論如何,一旦你做到了,最初的提取,然後你可以結賬mainrelease分支到你的資料庫:

git checkout main/release -b release 

這告訴混帳,「嘿,給我主/釋放的分支,在這個存儲庫中稱它爲釋放(請)「。現在

,假設你已經一個良好的開發,你應該能夠直接合並您提交跨越到這個分支從master分支。現在,你就可以在release分支是基於關閉main/release所以你只需要做到這一點。

git merge master 

這裏的一些人會問你rebase代替(There's an interesting discussion about this here具有相同的語法作爲合併:git rebase release

現在你需要真的確保,因爲它應該一切的工作那是給你

一旦你超級自信的是,你可以把你的。跳轉到main庫運行以下命令:

git push main release 

現在出去和Git :)

+0

感謝Ryan的回答。 – Sam

+0

不用擔心隊友,我希望它能幫助你。 –

1

你應該使用相同的資源庫和2個不同的遙控器。你可以繼續這樣做,但現在你必須管理兩個本地和遠程之間的推拉。

對於你的問題,雖然,你將推動和2組地方的人之間取來安排你需要什麼,然後按從一方到GitHub的遙控器。

+0

我在這裏使用相同的存儲庫,或者只是讓我知道我應該如何管理合並/雙遙控器之間的推。 – Sam

+0

兩個遙控器之間的管理非常簡單。你想要做的是'git remote add other git:// url/to/other'。現在,您將擁有2個遙控器,您可以在一個回購中推送或取回。只需指示獲取或推送您想要採取行動的遠程設備,然後是分支 - 如果您省略分支,則默認情況下將全部跟蹤分支。 'git push other some-branch' –

+0

很抱歉,我使用單個回購網址(使用多個遠程 - 起源/主控,起源/發佈)。我們的代碼從master - > release發佈。我對本地/遠程分支感到困惑,所以我創建了兩個不同的目錄,以使源代碼與它們對應。我是否以不正確的方式獲取遠程分支,請提供結帳/合併/推送的整個序列。對我來說混亂的一點是,當我將主代碼庫合併到發行版時,發行版的HEAD指向主,並且我不確定這是否是正確的行爲。 – Sam