jGIT通过提交、推送和拉取检测冲突

r6vfmomb  于 2023-01-11  发布在  Git
关注(0)|答案(1)|浏览(218)

除了合并分支之外,GIT还可以通过以下方式产生冲突

  • 提交/推送(如果同时修改了GIT中的文件
  • 如果本地文件已被我修改,则通过"拉"。

如何在推送或拉入之前列出这些冲突并将其标记为已修复?
我尝试使用Git.status(),并希望看到这些文件处于冲突状态,但没有列出任何内容。

Status status = git.status().call();
status.getConflicting();

下面是我使用的一些代码片段:
x一个一个一个一个x一个一个二个x

jyztefdp

jyztefdp1#

两点澄清:

  1. git push不会触发 * 冲突 *(不是merge会触发的文件级冲突),它只是在你推送的提交不是现有分支提示的快进时拒绝更新分支
  2. git pull实际上是一个2步命令:git fetch,它从远程存储库恢复提交,后面跟着git merge <upstream branch>
    冲突可能由第二步触发(常规git merge
  • 还有 * 其他命令可能会触发冲突:git cherry-pickgit rebase

修复1.的问题:运行git status时您不会看到任何内容,您应该更新远程视图(git fetch),检查历史记录并选择要执行的操作:

  • 可能运行git merge <upstream/branch>git rebase <upstream/branch>

如上所述:运行git fetch,然后运行git merge与运行git pull相同,区别在于您可以在运行git merge之前 * 检查存储库的状态 *。

  • 或用力推动:git push --force-with-lease origin

修复2.的问题:您可以运行常规的合并冲突解决。

相关问题