在 git 中,从上游源(即原始项目)拉取时如何免除某些文件?
我正在开发一个项目,该项目最初是从一个非常活跃的存储库中分叉出来的。我已将原始版本添加为名为“upstream”的远程版本,以便可以运行:
git pull upstream
并将项目更新到最新的提交。
问题:有一些文件(例如我的Gruntfile.js
)我不想与原始项目一起更新。每当我提取这些提交时,我都会遇到合并冲突,因为我已经更改了自己版本中的文件。
我确实想跟踪这些文件以进行我自己的本地提交并从我自己的来源中提取更改,因此将它们添加到.gitignore
永久不是一个选择。
我目前的解决方案是临时添加一个grunt任务Gruntfile.js
和其他人.gitignore
,从上游拉,然后从.gitignore
这样我就可以跟踪自己的变化并推动我的起源。然而,这感觉很奇怪。
有什么方法可以仅在从“上游”拉取时忽略这些文件?
是的,你可以这么做。
git pull 是 git fetch 的简写,后跟 git merge FETCH_HEAD
所以首先你可以做一个,
git fetch upstream
其次是,
git merge --no-log --no-ff --no-commit upstream/branch
Git 将在提交之前停止。因此,您应该能够修改合并并排除所需的文件。
UPDATE
可以使用 git 别名组合这些命令。
在 ~/.gitconfig 中创建别名
[alias]
fnm = !git fetch upstream && git merge --no-log --no-ff --no-commit upstream/branch
您可以进一步添加,
[alias]
fnm = !git fetch upstream && git merge --no-log --no-ff --no-commit upstream/branch && git reset file/path/not/to/be/updated && git checkout file/path/not/to/be/updated
Use git fnm
以完成完整的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)