2014-09-06 6 views
2

J'ai deux référentiels distants. Le premier (Framework) est tiré dans le second (MySite). J'apporte quelques modifications à MySite, comme CSS par exemple, et je pousse tout cela dans le repo de MySite. Maintenant, si je (ou un autre dev) change un fichier PHP, User.php par exemple (qui est stocké sur le repo Framework), sur le repo MySite et tirez le repo Framework dans MySite que le fichier User.php a besoin à remplacer en utilisant le fichier sur le repo Framework.Remplacer les modifications locales du référentiel distant

Voici ma config git locale:

[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 

Structure des dossiers pour repo-cadre:

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

Structure des dossiers pour MySite repo

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

Quand je cadre tire, il doesn Ne faites rien (sauf si les fichiers ont été modifiés sur le framework.)

Est-ce parce que MySite est le premier référencé?

Comment puis-je faire en sorte que Framework écrase tous les fichiers qui se trouvent dans le repo de Framework lorsqu'il est extrait dans MySite?

Répondre

1

Dans le scénario que vous avez décrit, le référentiel Framework est généralement appelé repo upstream. Pour vous mettre à jour votre repo MySite obtenir les changements du repo-cadre et écrasez tout changement dans les conflits de fichiers, ces commandes devraient faire:

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

qui va tirer dans les changements du repo-cadre et tout fichier est conflictuel lors de la fusion sera écrasé avec le fichier de Framework.

+0

C'est ce que je pensais que ce devrait être, mais ce n'est pas ce que je pensais qu'il ferait. J'ai fait des changements sur le repo de MySite aux fichiers qui sont dans le repo de cadre. Ensuite, lorsque j'utilise Framework, je veux qu'il remplace les modifications que j'ai apportées à ce fichier. Mais je ne peux pas utiliser reset car il y a des fichiers sur MySite qui ne sont pas dans Framework. – Draven

+0

J'ai mis à jour ma réponse pour mieux répondre à votre situation. – magikid

+0

Cela n'a rien fait. Il n'y a pas de conflits ou quoi que ce soit. – Draven

Questions connexes