Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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
在git回购中保留本地更改_Git - Fatal编程技术网

在git回购中保留本地更改

在git回购中保留本地更改,git,Git,假设我在git回购中有一个文件: #file.py setting1 = default1 setting2 = default2 <some code> #file.py 设置1=默认值1 设置2=默认值2 现在我想做一些地方性的改变,这些改变不会被推回到回购协议中 #file.py - local change setting1 = mysetting1 setting2 = mysetting2 <some code> #file.py-本地更改 设置

假设我在git回购中有一个文件:

#file.py

setting1 = default1
setting2 = default2

<some code>
#file.py
设置1=默认值1
设置2=默认值2
现在我想做一些地方性的改变,这些改变不会被推回到回购协议中

#file.py - local change

setting1 = mysetting1
setting2 = mysetting2

<some code>
#file.py-本地更改
设置1=我的设置1
设置2=我的设置2
比如说,将来某个时候,上游回购协议会更新,我希望在不破坏本地设置的情况下撤销它们的更改。也就是说,我可以运行一个git命令来更新文件,以便

#file.py - updated copy

setting1 = mysetting1
setting2 = mysetting2

<new code>
#file.py-更新副本
设置1=我的设置1
设置2=我的设置2
有什么方法可以做到这一点,可以使用分支或其他git特性,而不必将本地设置放在单独的文件中

我见过其他几个类似的问题,但它们的重点是排除整个文件


谢谢

看看
git-stash
。它也是一种“完整文件”方法,但您可能会发现它足够灵活


否则,使用
git gui
和大量的重定基址(
git-rebase--interactive
)或cherry pick(
git-cherry pick
)或只使用一个分支应该会有所帮助。

您所做的可能是更改连接字符串等等。这是您的环境所特有的。正确的处理方法是通过涂抹/清除脚本。看一看(免费提供)。

不管这是不是他需要的,谢谢你链接到它,非常聪明。谢谢你的回答。我想我不需要这么强大的东西,但以后可能会有用。谢谢。实际上,隐藏确实会合并文件,从而对文件产生相同的影响。我发现拥有一个本地分支机构和重新定基是最可靠的,因为它似乎很容易失去一个隐藏,因此我所有的更改。哦,我从来没有暗示它不会合并。我只是想说,你不能用一个命令保存文件中的一部分更改(放弃其余更改)。所有这些方法的唯一问题是,如果在编辑的行的正下方添加一行,git merge是否总是有冲突。例如,如果我有上面这样的代码,并且我要在原始分支中的setting2下面添加“setting3=default”,那么rebase(或其他方法)将因冲突而失败,但是如果我在两者之间添加一行,它将执行rebase或其他任何精细操作。知道为什么吗?合并算法会考虑更改的上下文。有时候,它有足够的上下文信息来安全地计算结果,这是碰巧的。幸运的是,它通常不会停止并中止文本合并操作,从而避免了错误合并文本的麻烦。有时还会发生这种情况,因此在发布集成时通常会关闭该算法(
git merge-s resolve
)?(与默认合并不同)?