[英]Undo git pull from master, bring repo to state with local changes
[英]How to apply local changes to git repo after every pull from master without ever pushing to master
我的开发设置与团队中的其他开发人员完全不同 - mac vs linux - docker vs vagrant
每次我拉新分支时,我都要对配置文件和docker相关文件进行大量更改,以使我的开发环境正常运行。
我需要避免将这些推送到我的工作分支,因为它们无法合并到master中。
目前我将这些文件从git add
,然后每次切换分支并执行拉动时手动添加它们。
以下SO问题表明我可以git stash
然后git stash apply
如何在没有提交的情况下保持git本地更改并在切换后应用于不同的repos
我认为这样可以提供我保持我的git stashes整洁,最后一个仅限于我的开发更改。 我想知道是否有更好的方法来处理这个工作流程。
我可以将这些更改保存在开发设置分支中,并以与存储方法类似的方式使用吗?
一种解决方案是将这些文件添加到本地忽略的文件中。 它位于.git / info / exclude 。
它的工作方式与通常的.gitignore相同(请参阅https://git-scm.com/docs/gitignore )。
如果文件在上游更新,则在拉取后您将看不到对本地文件的任何修改。 在从这个排除文件中删除之前,您将无法对这些文件进行任何更改。
我正在添加一个答案,除了我之前接受的那个,只是为了汇集所有额外的知识,实现这是我的环境。
这是关于不同类型的gitignore的超级有用链接:本地(个人),共享或全局(所有回购)。
基本上要保留自己的本地文件版本,这些版本将保持不受git推送和拉动的影响,您需要:
现在剩下的过程将根据是否:
您想要从远程服务器删除文件(这将影响回购的所有用户),并保持在本地:
git rm --cached file_name
远程删除 - 缓存git rm --cached file_name
您希望单独保留远程文件并让git“忘记”您的本地版本及其相关的远程更改
git reset -- file_name
从暂存中删除它们 git update-index --skip-worktree <file_name>
从git工作流中删除它们 这个Stack Overflow Q&A特别有用Git - '假设未改变'和'跳过工作树'之间的区别
如果您使用skip-worktree
则有用的代码片段
git ls-files -v . | grep ^S
git ls-files -v . | grep ^S
git update-index --no-skip-worktree <file_name>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.