以下是这种情况。我们得到了:
branch_old
branch_new
Branch_new包含新创建的文件 DeveloperOptions 。此文件是repo的一部分(因此它会在新安装时被删除),但是,当编译将 git --assume-unchanged 添加到 git --assume-unchanged 的项目时,脚本会在开发人员计算机上运行那个文件。然后允许开发人员指定他们自己的个人选项"通过修改该文件(主要是输出日志级别和输出自定义)进行编译,其方式将被git忽略,因此永远不会在远程提交/推送/更改。
问题在于:当我们从branch_new(有文件)结账到branch_old(没有文件)时,git不会允许结账,因为"您的工作树包含将被结帐覆盖的更改。"现在,如果我们将 branch_new 分支到 branch_very_new ,我们可以无休止地来回反复,没有任何问题。但是在旧的分支上,由于文件不存在,git试图在结账时将其从系统中删除,从而引发警告。
这有什么办法吗?或者,是否有任何合适的方法让git忽略对跟踪文件的所有未来更改?这就是我们真正想要的。
答案 0 :(得分:2)
Git非常小心,不会覆盖您的更改。因此,您需要编写用于更改分支的别名或脚本,以便不会覆盖用户更改。
git update-index --no-assume-unchanged <config file>
git stash //Put it in the stash to change branches
git checkout <branchname>
git stash pop //Bring back your changes
git update-index --assume-unchanged <config file>
您的假设未更改会阻止git跟踪更改。因此它将它视为未跟踪的文件,您的其他分支具有旧的更改并检查该分支意味着git将要应用这些更改(如果分支正在跟踪分支中未跟踪的文件,也会发生这种情况) )。 Git不确定如何解决这些差异,因此它会停止结账以防止丢失任何内容。