2014-09-06 104 views
2

我有兩個遠程存儲庫。第一個(框架)get被拉入第二個(MySite)。我對MySite進行了一些更改,例如CSS,並將其全部推送到MySite回購站。如果我(或另一個開發人員)更改了一個PHP文件,例如User.php(存儲在Framework回購庫中),在MySite回購站中,並將Framework回購站移入MySite的User.php文件需要的使用Framework回購文件覆蓋。覆蓋來自遠程存儲庫的本地更改

這裏是我的本地混帳配置:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
    precomposeunicode = true 
[remote "MySite"] 
    url = [email protected]:mysite 
    fetch = +refs/heads/*:refs/remotes/MySite/* 
    gtPrivateKeyPath = /Users/MY_MAC_USER/.ssh/my_key 
    sslVerify = true 
[branch "master"] 
    remote = MySite 
    merge = refs/heads/master 
[remote "Framework"] 
    url = [email protected] domain.com:framework 
    fetch = +refs/heads/*:refs/remotes/Framework/* 
    gtPrivateKeyPath = /Users/MY_MAC_USER/.ssh/my_key 
    sslVerify = true 

的文件夾結構爲框架式回購:

application/ 
    modules/ 
     User/ 
      User.php 
public/ 
    images/ 
    themes/ 
     default/ 
      css/ 
settings.php.sample 
tmp/ 

爲mysite的回購協議的文件夾結構

application/ 
    modules/ 
     User/ 
      User.php 
public/ 
    images/ 
    themes/ 
     default/ 
      css/ 
     MySite_Theme/ 
      css/ 
settings.php 
settings.php.sample 
tmp/ 

當我拉框架,它不什麼都不做(除非在Framework上文件被更改了)

是否因爲MySite是第一個上市的回購協議?

如何讓框架覆蓋框架回購庫中的任何文件,當它被拉入MySite?

回答

1

在您描述的情況下,框架回購通常被稱爲upstream回購。爲您更新您的MySite回購正從框架回購的變化和覆蓋在衝突的文件進行任何更改,這些命令應該這樣做:

$ git checkout master # make sure you're on your master branch in MySite 
$ git fetch Framework 
$ git merge -s recursive -X theirs Framework/master 

這將拉動從框架回購的變化和任何文件在合併期間發生衝突將被來自Framework的文件覆蓋。

+0

這就是我認爲它應該是,但是這不是做我認爲它會做。我對MySite回購庫進行了更改,將其更改爲框架回購庫中的文件。然後,當我拉框架我想它覆蓋我對該文件所做的更改。但我無法使用重置,因爲MySite上的文件不在Framework中。 – Draven 2014-09-07 15:52:19

+0

我已更新我的答案,以更好地解決您的情況。 – magikid 2014-09-07 16:26:42

+0

那什麼也沒做。沒有衝突或任何事情。 – Draven 2014-09-07 17:43:03