如何检测git pull是否会由于未跟踪的本地文件而失败?
当您执行如何检测git pull是否会由于未跟踪的本地文件而失败?,git,Git,当您执行Git pull时,Git正确地给出了一个错误,因为合并的提交将创建一个您在本地拥有但未被跟踪的文件 错误:合并将覆盖以下未跟踪的工作树文件 我希望在脚本中检测到这种情况,以便在真正执行git pull之前对其进行处理。 我该怎么做?我尝试了git pull--dry run,但令人恼火的是没有注意到pull会失败(git版本2.11.0) 试验 注意。我意识到我可以“清理”未跟踪的文件;未跟踪的文件是令人讨厌的;我可以隐藏更改等,但这不是我想要的。git pull是一个快捷方式:git
Git pull
时,Git正确地给出了一个错误,因为合并的提交将创建一个您在本地拥有但未被跟踪的文件
错误:合并将覆盖以下未跟踪的工作树文件
我希望在脚本中检测到这种情况,以便在真正执行git pull之前对其进行处理。
我该怎么做?我尝试了git pull--dry run,但令人恼火的是没有注意到pull会失败(git版本2.11.0)
试验
注意。我意识到我可以“清理”未跟踪的文件;未跟踪的文件是令人讨厌的;我可以隐藏更改等,但这不是我想要的。
git pull
是一个快捷方式:git fetch
+git merge
在施加拉力之前“检测”的一种方法是:
- 运行
git fetch
- 检查远程分支中的某些文件是否与磁盘上的现有文件冲突:
- 对上游分支运行
git merge--no commit
# if current branch is "linked" to a remote branch, # @{u} is a shortcut to say "the linked remote branch" git merge --no-commit @{u} # or you can explicitly name the remote reference : git merge --no-commit origin/you/know/what/branch
- 查看此操作是否触发任何错误或合并冲突
- 恢复到以前的状态:
git merge --abort
- 对上游分支运行
另一种检查“此合并是否会产生冲突?”的方法出现在中。感谢的提示,我发现了一些似乎有效的方法:
function merge_will_work {
git diff master..origin/master | git apply --check &>/dev/null
return $?
}
- 创建修补程序
- 测试它是否可以干净地应用
- (重要的是)不会以任何方式更改单个文件。(避免了文件可能瞬间更改的合并/合并中止情况。)
--no commit
,就像我投了赞成票的答案一样),如果这是总体计划的一部分。我想这是我不清楚该怎么做的第二个要点
function merge_will_work {
git diff master..origin/master | git apply --check &>/dev/null
return $?
}