Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git签出错误_Git_Github_Cygwin_Commit_Git Checkout - Fatal编程技术网

Git签出错误

Git签出错误,git,github,cygwin,commit,git-checkout,Git,Github,Cygwin,Commit,Git Checkout,我使用一个脚本来自动签出过去12个月内每个月的第一次提交。偶尔会发生一些奇怪的事情,我不再被允许检查过去的提交。错误如下所示: 错误:您对以下文件的本地更改将被签出覆盖: db测试/framework.cpp 请在切换分支之前提交或隐藏更改。正在中止 这种情况发生过很多次(我没有编辑任何文件,只是将它们签出)。我通常只是从Github下载一份新的回购协议副本,然后重新开始这个过程,它就可以工作了。但一旦它坏了,我就不知道如何修复它,而且它一直在发生。有什么想法吗 下面是我的脚本中正在进行的迭代,

我使用一个脚本来自动签出过去12个月内每个月的第一次提交。偶尔会发生一些奇怪的事情,我不再被允许检查过去的提交。错误如下所示:

错误:您对以下文件的本地更改将被签出覆盖:

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 ...