2012-07-09 89 views
1

文件我有跨主機和其客戶的私人分支共同文件「FOOBAR」。以前,他們分歧,現在我設法得到一個單一的文件,蘋果的所有私人分支。使從主分支權威性重建基礎分支

爲了讓我的客戶轉移到追蹤高手,我已經成功地使用git rebase -i master

不過,我現在已經有力地「同步」的git checkout master -- foobar在我的私人分支,致力於它,現在我的混帳底墊被示數出來。每次手工固定需要太長時間。

git checkout master -- foobar && git add foobar && git rebase --continue 

有人可以提供一個或兩個提示如何擺脫這種粘性情況?在私有分支上還原我的提交不是問題。基本上我希望我所有的分支都能使用master的foobar文件,結束。

+0

他們也可以使用'master'的其餘部分,還是隻使用一個文件? – Christopher 2012-07-09 17:41:57

+0

只是在這種情況下的一個文件。私人分支在許多文件中是不同的。我反駁他們反對主人,因爲它本質上是authorative,但配置文件等等不同。 – hendry 2012-07-09 17:55:34

+0

這裏有各種各樣的解決方案,但他們沒有看起來更容易/更少雜亂:http://stackoverflow.com/questions/449541/how-do-you-merge-selective-files-with-git-merge。 – Christopher 2012-07-09 18:24:14

回答

0

使用自定義屬性通過合併司機:

git checkout master 
echo foobar merge=checkoutMaster > dir/to/foobar/.gitattributes 
git add dir/to/foobar/.gitattributes 
git commit -m "Always use master version of foobar" 
git config merge.checkoutMaster.name "Use master version of foobar" 
git config merge.checkoutMaster.driver "~/checkoutMasterFoobar.sh %O %A %B" 
echo "git checkout master -- dir/to/foobar/foobar && exit 0" > ~/checkoutMasterFoobar.sh 
+0

爲什麼驅動程序?爲什麼這麼複雜!?我只是想讓我的基金會像他們曾經做過的一樣工作... ...。 – hendry 2012-07-10 07:24:35

+0

問題是,您希望一個文件的處理方式與所有其他文件不同。這是你想在這裏工作的非常具體的事情。我通常不會跟蹤這樣的配置文件,或者故意在其中創建無效條目,並在部署之前使用搜索替換腳本。 – 2012-07-10 08:17:18

+0

好的,讓我在這個意義上重新提到我的問題,我想在這個時候只進行一次「同步」同步,並使我的rebase不會彈出。 – hendry 2012-07-10 10:00:17

0

我想我已經找到了解決方案,由此我重訂,然後結帳出來,從主的變化。當你做反向

不好的事情發生。即從主人簽出文件,然後重新綁定。