我需要创建预提交挂钩来对项目进行一些'完整性测试'(主要检查部署是否会没有问题)。 因为我只需要测试即将提交的更改,所以我需要在运行测试之前存储非分阶段的更改,并在执行此操作后弹出存储的更改。但是有一个问题,因为在以下情况下存储和索引之间可能存在冲突:
假设我有一个名为testfile
的文件,内容如下:
first line
second line
third line
现在我将在第二个和第三个之间添加一行
first line
second line
second and a half line
third line
然后运行git add
,这样它就会上演。
现在我将在上一行之后添加下一行,以便文件看起来像那样
first line
second line
second and a half line
second and three quarters line
third line
所以现在第一行和第二行被提交,第二行和第二行被提交,第二行和第四行未被分级,第三行被提交。
让我们直言不讳。现在,当我运行git stash --keep-index
,然后执行我的测试并尝试运行git stash pop
时,结果如下:
Auto-merging testfile
CONFLICT (content): Merge conflict in testfile
和文件内容如下所示:
first line
second line
second and a half line
<<<<<<< Updated upstream
=======
second and three quarters line
>>>>>>> Stashed changes
third line
我不知道如何在运行测试后重新应用隐藏的更改并避免此类冲突。我很高兴能指出正确的方向。
答案 0 :(得分:0)
你基本上想要git checkout --theirs
然后(对于冲突的文件),如果你想让藏匿版本(--theirs
引用它)。
然后git reset HEAD
删除索引中的更改(因冲突而添加),最后添加git stash drop
。
如果git-stash pop
有一个选项可以更好地处理这个问题会很好,因为这通常是你想要的。