git:忽略来自remote1的文件,但将本地版本推送到remote2

时间:2013-07-03 06:39:24

标签: git gitignore git-pull git-remote git-checkout

我有3个git存储库:

  • local:我的本地机器上的开发代码;
  • remote1用于与其他开发者合作;
  • remote2这是一个生产服务器。

    1. 我希望pull定期从remote1到我的local回购,并保留一些本地跟踪文件(即从remote1获取和合并,但是排除某些本地跟踪文件被合并)。

    2. 另一方面,我想定期pushremote2,我希望推送本地跟踪文件。

换句话说,我想拥有以下版本的file1

  • local:file1 v.1
  • remote1:file1, v.2
  • remote2:file1, v.1

注意:file1可以是任何内容(.css,.html,甚至.png)

我尝试了以下方法:

  • .gitignore一个文件(不起作用,从remote1拉出后再次跟踪该文件)
  • git pull --no-ff --no-commit remote1 master,然后根据this git checkout --ours file1(不起作用,file1变为v.2)
  • .git/info/exclude如上所述here(不起作用,不会被忽略,即使被忽略,file1也不会被推送到remote2

1 个答案:

答案 0 :(得分:1)

您可以尝试:

  • git update-index --assume-unchanged -- path/to/file1 之前来自remote1
  • git update-index --no-assume-unchanged -- path/to/file1。拉出后,
  • remote1

(如果这不起作用,请尝试git update-index --skip-worktree