Git签出错误
我使用一个脚本来自动签出过去12个月内每个月的第一次提交。偶尔会发生一些奇怪的事情,我不再被允许检查过去的提交。错误如下所示:Git签出错误,git,github,cygwin,commit,git-checkout,Git,Github,Cygwin,Commit,Git Checkout,我使用一个脚本来自动签出过去12个月内每个月的第一次提交。偶尔会发生一些奇怪的事情,我不再被允许检查过去的提交。错误如下所示: 错误:您对以下文件的本地更改将被签出覆盖: db测试/framework.cpp 请在切换分支之前提交或隐藏更改。正在中止 这种情况发生过很多次(我没有编辑任何文件,只是将它们签出)。我通常只是从Github下载一份新的回购协议副本,然后重新开始这个过程,它就可以工作了。但一旦它坏了,我就不知道如何修复它,而且它一直在发生。有什么想法吗 下面是我的脚本中正在进行的迭代,
错误:您对以下文件的本地更改将被签出覆盖:
db测试/framework.cpp
请在切换分支之前提交或隐藏更改。正在中止
这种情况发生过很多次(我没有编辑任何文件,只是将它们签出)。我通常只是从Github下载一份新的回购协议副本,然后重新开始这个过程,它就可以工作了。但一旦它坏了,我就不知道如何修复它,而且它一直在发生。有什么想法吗
下面是我的脚本中正在进行的迭代,然后是git status
for i in {12..1}
do
cd
cd git/mongodb/mongo
git checkout master
git checkout $(git rev-list --before "$(date -d "$(date +%Y-%m-01) -$i months 00:01" +%Y-%m)-01" -n 1 HEAD)
git checkout master
Git状态:
论分行行长
未为提交而暂存的更改:
modified: dbtests/framework.cpp
未跟踪的文件:
SHA1.txt
SHA1.txt.
file
file.
没有为提交添加任何更改您可以使用--force
标志使Git执行签出操作
或者,您可以使用git reset--hard来重置提交,而不是使用checkout。2019+语法现在将使用(git 2.23+) -f是
--discard changes
选项的别名:
即使索引或工作树与HEAD不同,也要继续操作。索引树和工作树都被还原以匹配切换目标。
如果指定了--递归子模块,子模块内容也会恢复以匹配切换目标 这用于丢弃本地更改
我们可以从脚本的这一部分看到代码吗?发生这种情况时,
git status
的输出是什么?core.autocrlf的配置设置是什么?谢谢。使用--force
和git reset--hard
有什么不利之处吗?如果我使用git reset--hard
,那么git checkout master
会将我返回到master吗?--force
无法识别,但git reset--hard
有效。但我不确定以后如何返回到最新的提交。帮助?如果您当前在一个分支上,请使用git reset--hard
移动分支指针。如果不想修改当前分支,请签出一个新分支或使用git checkout-f
。如果已经移动了指针,可以使用远程跟踪参考(假设它是最新的):git reset--hard origin/master
。如果做不到这一点,您可以使用reflog(git reflog
)找到您的分支过去指向的位置,并重置到该位置。太好了,我找到了。谢谢你的帮助。
git switch -f ...