Git 覆盖远程存储库中的本地更改

Git 覆盖远程存储库中的本地更改,git,merge,repository,Git,Merge,Repository,我有两个远程存储库。第一个(框架)被拉入第二个(MySite)。我对MySite做了一些更改,比如CSS,并将其全部推送到MySite repo 现在,如果我(或其他开发人员)更改MySite repo上的PHP文件,例如User.PHP(存储在Framework repo上),并将Framework repo拉入MySite,则需要使用Framework repo上的文件覆盖User.PHP文件 这是我的本地git配置: [core] repositoryformatversion =

我有两个远程存储库。第一个(框架)被拉入第二个(MySite)。我对MySite做了一些更改,比如CSS,并将其全部推送到MySite repo

现在,如果我(或其他开发人员)更改MySite repo上的PHP文件,例如User.PHP(存储在Framework repo上),并将Framework repo拉入MySite,则需要使用Framework repo上的文件覆盖User.PHP文件

这是我的本地git配置:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "MySite"]
    url = username@domain.com: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 = username@ 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 repo的文件夹结构

application/
    modules/
      User/
          User.php
public/
    images/
    themes/
        default/
          css/
        MySite_Theme/
          css/
settings.php
settings.php.sample
tmp/
当我拉框架时,它什么也不做(除非在框架上更改了文件)

是因为MySite是第一家上市的回购协议吗


当框架被拉入MySite时,我如何让框架覆盖框架repo中的任何文件?

在您描述的场景中,框架repo通常被称为
上游
repo。对于您来说,更新MySite repo可以从框架repo中获取更改并覆盖对于冲突文件,这些命令应执行以下操作:

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

这将从框架repo中提取更改,合并过程中发生冲突的任何文件都将被框架中的文件覆盖。

这是我认为应该的,但这并不是我所认为的。我在MySite repo中对框架repo中的文件进行了更改。然后,当我提取框架时,我ant it覆盖我对该文件所做的更改。但是我不能使用reset,因为MySite上的文件不在Framework中。我已经更新了我的答案,以更好地解决您的情况。这没有任何作用。没有冲突或任何问题。然后我想我不理解这个问题。您能展示一下您的文件夹结构是什么样的,以及哪个文件您希望被更改吗?为两个repo添加了文件夹结构。创建新网站时,我将框架拉入新网站repo(MySite)然后我创建一些站点所需的文件,比如settings.php和一个主题,然后我将其推送到远程MySite repo。User.php应该只在Framework repo上更改,然后拉入MySite。但是,如果出于某种原因,另一个开发人员确实在MySite repo上编辑User.php,我希望在拉入Framewor时,它被Framework上的一个覆盖稍后进入MySite获取更新。