繁体   English   中英

如何在每次从master下拉之后对git repo应用本地更改,而不必推送到master

[英]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文件的本地开发人员版本以处理个人开发人员设置

这是关于不同类型的gitignore的超级有用链接:本地(个人),共享或全局(所有回购)。

基本上要保留自己的本地文件版本,这些版本将保持不受git推送和拉动的影响,您需要:

  • 将相关文件添加到.git / info / exclude中的个人排除文件中(感谢@Abel接受的答案)

现在剩下的过程将根据是否:

您想要从远程服务器删除文件(这将影响回购的所有用户),并保持在本地:

  • 从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则有用的代码片段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM