Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在每次从master拉取后将本地更改应用于git回购,而不必推送到master_Git_Git Branch_Gitignore_Git Stash - Fatal编程技术网

如何在每次从master拉取后将本地更改应用于git回购,而不必推送到master

如何在每次从master拉取后将本地更改应用于git回购,而不必推送到master,git,git-branch,gitignore,git-stash,Git,Git Branch,Gitignore,Git Stash,我的开发设置与团队中的其他开发人员完全不同——mac vs linux -码头工人与流浪汉 每次我拉一个新的分支时,我必须对配置文件和docker相关文件进行大量更改,以使我的开发环境正常工作 我需要避免将它们推到我的工作分支,因为它们不能合并到master中 目前,我将关闭这些文件git add,然后在每次切换分支并执行拉操作时手动将它们添加回来 下面的问题建议我可以git stash然后git stash apply 我认为,如果我保持git存储整洁,并且最后一个仅限于我的开发更改,那么这将

我的开发设置与团队中的其他开发人员完全不同——mac vs linux -码头工人与流浪汉

每次我拉一个新的分支时,我必须对配置文件和docker相关文件进行大量更改,以使我的开发环境正常工作

我需要避免将它们推到我的工作分支,因为它们不能合并到master中

目前,我将关闭这些文件
git add
,然后在每次切换分支并执行拉操作时手动将它们添加回来

下面的问题建议我可以
git stash
然后
git stash apply

我认为,如果我保持git存储整洁,并且最后一个仅限于我的开发更改,那么这将起作用。我想知道是否有更好的方法来处理这个工作流


我可以将这些更改保存在dev安装分支中,并以与stash方法类似的方式使用吗

一种解决方案是将这些文件添加到本地忽略的文件中。 它位于.git/info/exclude。
它的工作方式与通常的一样。gitignore(请参阅)

如果文件在上游更新,则在拉取后,您将看不到本地文件上的任何修改。 在将这些文件从该排除文件中删除之前,您将无法提交对这些文件的任何更改。

我在前面接受的答案之外添加了一个答案,只是为了将实现“这是我的环境”所获得的所有其他经验汇集在一起

保留gitignore文件的本地开发人员版本以处理个人开发人员设置 这是一个非常有用的链接:本地(个人)、共享或全局(所有回购)

基本上,为了保持您自己的本地文件版本(不会被git的推拉操作影响),您需要:

  • 将相关文件添加到.git/info/exclude中的个人排除文件中(感谢@Abel接受的答案)
现在,剩下的过程将根据以下情况而有所不同:

您希望从远程服务器删除文件(这将影响repo的所有用户),只需保持本地:

  • 从git缓存中删除这些文件(如果它们已经暂存),并在下一次推送时远程删除
您想让远程文件保持独立,让git“忘记”您的本地版本及其相关的远程更改

  • 使用git reset--file_name将它们从暂存中删除
  • 使用
    git更新索引从git工作流中删除它们--跳过工作树
这个堆栈溢出Q&A特别有用

如果您正在使用
跳过工作树

  • 使用
    gitls文件-v.|grep^S
  • 要将文件添加回工作树,请使用git update index--no skip worktree

这真的很有趣。我会试一试,看看它是否对我有帮助。事实上,这太棒了,可以帮我节省时间!还有一件事要补充。这些文件中的大多数都已经准备好提交,所以我必须
git rm--cached file\u name
,即使我已经将它们
.git/info/exclude
。这个页面在这方面对我也很有用,因为它解释了gitignore的各种方式-本地、全局和共享。我很高兴我能提供帮助,并感谢“git rm--缓存文件名”我没有想到这一点。因此需要更多更新:
git rm--cached file\u name
在我们希望从远程回购中删除文件并只保留本地版本时是合适的。在我的情况下,我想离开远程版本,但只保留本地副本与我自己的调整
git reset--file_name
将取消相关文件的存储,但gitignore文件仍不会覆盖这些文件,因为它们之前已被跟踪过。这个答案显示了如何使用
git update index--skip worktree从索引中删除