2015-07-11 72 views
1

我在Git(位桶)中創建了一個分支。兩人正在修改相同的文件。一個人犯了這個文件。其他人也在同一個文件中進行本地更改。第二個人應該能夠合併他的代碼而不會丟失他的內容,並且早期的提交也應該完好無損。我搜索了很多選項,但可以找到明確的答覆。請幫助我。Git(位桶)將兩個用戶的更改合併到同一分支

+0

可能重複[混帳合併緊接着又混帳合併?(http://stackoverflow.com/questions/22029872/git-merge-followed-by-another-git-合併) – Yawar

回答

0

是的,第二人將能夠提交他的更改。但在提交之前,他將不得不對第一人的變更進行修改。在發生合併衝突後拉動更改後,第二個人必須修復這些衝突,然後進行提交。提示:同時處理同一個文件不是一個好主意。幾乎總是會產生衝突。

1

Git不允許你(除非你--force它)推送一組提交到遠程分支,除非該遠程分支的HEAD是該提交集的祖先。

換句話說,如果你推,而另一個人推着你,另一個人的推動將失敗,因爲他們的提交不是你的提交的後代。他們將不得不fetch你的變化,rebase他們承諾的變化(或merge它,作爲重新選擇的替代品),只有這樣他們才能推動(假設遠程回購並沒有改變更多的同時他們正在重組)。

+0

非常感謝您的快速回復。 隱藏在這種情況下工作嗎?我想解釋的場景是: 我從其他用戶提交之前存儲我的工作 隱藏應用我的更改 它將我的更改與先前的提交合並,我可以在本地回購中看到它。 這是正確的過程嗎?或者有更好的方法嗎? –

0

好了,你的問題是獨立於供應商的git使用(github上,到位桶,代碼庫等)

一個可能的工作流程,你的情況是以下。

有兩個開發人員,愛麗絲鮑勃。兩者都用下一個內容修改了parameters.yml文件。

# parameters.yml 
database_user: 'root' 
database_password: 'root' 

愛麗絲增加了一個參數,以打開/關閉的高速緩存中。

# parameters.yml 
database_user: 'root' 
database_password: 'root' 
cache: true 

雖然鮑勃添加其他參數來開啓/關閉調試模式中的應用程序。

# parameters.yml 
database_user: 'root' 
database_password: 'root' 
debug: false 

愛麗絲推她改變super-cache分支。之後,鮑勃也推動他的變化super-cache分支。然而,他的推動失敗,因爲@PSkocik說,Bob的提交不是Alice的提交的後代。

鮑勃必須提取阿里斯的提交之前,他推動他的承諾。他選擇用rebase做一次拉動git pull --rebase origin/super-cache

鮑勃將在parameters.yml有衝突。解析後的文件中的衝突將是

# parameters.yml 
database_user: 'root' 
database_password: 'root' 
debug: false 
cache: true 

現在,鮑勃可以繼續合併與git rebase --continue

在此之後,鮑勃super-cache分支加上他提交的所有提交。

最後,鮑勃可以推他的承諾。

你可以看到:Git rebase of Atlassian

相關問題