保持本地变化

我怎样才能安全地更新(拉)一个git项目,保持特定的文件不变,即使有上游的变化?

myrepo /配置/ config.php中

有没有办法,即使这个文件正在远程更改,当我拉,其他所有更新,但这个文件是不变的(甚至没有合并)?

PS。 我需要做我所问的,因为我只写基于git的部署脚本。 我无法将配置文件更改为模板。

所以,我需要编写不会丢失本地更改内容的更新脚本。 我希望有如下简单的事情:

git assume-remote-unchanged file1
git assume-remote-unchanged file2

然后git pull


有一个基于Git存储的简单解决方案。 把所有变化的东西都藏起来,把所有新东西都拿出来,把你的藏起来。

git stash
git pull
git stash pop

存储弹出可能会有冲突。 在你描述的情况下,实际上config.php会有冲突。 但是,解决冲突是很容易的,因为你知道你把什么放在隐藏处是你想要的。 所以这样做:

git checkout --theirs -- config.php

如果你的repo文件中有一个文件应该由大多数文件创建者定制,那么将文件重命名为config.php.template ,并将config.php文件添加到你的.gitignore


更新:这实际上回答了问题,但我认为KurzedMetal的答案确实是你想要的。

假如说:

  • 你在分支master
  • 上游分支是origin master
  • 您没有未提交的更改
  • ....你可以这样做:

    # Do a pull as usual, but don't commit the result:
    git pull --no-commit
    
    # Overwrite config/config.php with the version that was there before the merge
    # and also stage that version:
    git checkout HEAD config/config.php
    
    # Create the commit:
    git commit -F .git/MERGE_MSG
    

    如果需要频繁操作,可以为其创建别名。 请注意,如果您对config/config.php有未提交的更改,则会导致它们丢失。

    链接地址: http://www.djcxy.com/p/7793.html

    上一篇: git pull keeping local changes

    下一篇: What are the differences between .gitignore and .gitkeep?