定期执行git pull
我注意到命令有时会以
Your local changes to the following files would be overwritten by merge:
app/Ribbon.xaml
Please, commit your changes or stash them before you can merge
在这个特殊情况下,我在本地修改了这个文件中的一行,并且它在存储库中的新版本也改变了一个遥远的行 - 没有冲突,没有重命名,行结尾没有变化,没有子模块。所以在这种情况下,我希望git自动合并更改,而不需要git commit
或git stash
...
我知道git能够自动合并更改(通常会这样做),但在这种情况下不能。
问题是:什么可能阻止git自动合并无冲突的更改(进入本地修改的文件)?
我想,在我的问题中可能会漏掉一些数据。如果是这样,请告诉我还应该检查什么。
<小时/> [27.JU.2012 14:15]根据答案中的提示,拒绝将任何更改合并到本地修改的文件中是git的正常策略。考虑到这一点,我会将问题改为如何让git自动将更改合并到本地修改的文件?
答案 0 :(得分:0)
我认为这只是git的自然行为。因为您的文件没有暂存或提交,git实际上并不知道您要对文件做什么。 git最好拒绝拉动,而不是猜测你对文件的意图。我通常在拉动之前存储我未提交和未分级的更改,然后在之后应用存储。
答案 1 :(得分:0)
Git处理它的存储库中的文件,位于项目根目录下的.git /目录下。
Git在进行拉动和合并时使用此存储库进行比较。
在你的情况下,Git足够聪明,可以注意到你已经进行了更改,但没有添加或提交它们,因此git将无法使用它们。
您收到消息,即使更改位于单独的代码区域,因为您尚未将文件实际添加到git中,而git实际上并不知道是否存在冲突。 ..直到git'看到'文件。如果您git add
然后git commit
该文件,那么它就在存储库中,那么git可以在其上“工作”,如果更改位于不同的区域,它将能够执行该操作自动合并您希望看到。
所以它给出了这个信息。
您的选择是:
添加并提交本地文件,然后git可以执行合并。
存储本地更改以将其保存在一边,然后拉出新服务器文件。
使用当前更改创建分支 - 使用checkout,然后切换回master并使用reset。