TLDR:执行 git reset --hard origin/mybranch 将本地存储库重置为更早的版本而不是最新版本。
开发分支看起来像这样:
我认为这最好用一个例子来解释
[myusername@myhost myapp]$ git branch
* dev
[myusername@myhost myapp]$ git pull origin dev
From bitbucket.org:
* branch dev -> FETCH_HEAD
Already up-to-date.
[myusername@myhost myapp]$ git reset --hard origin/dev
HEAD is now at 2be5b0e Merged in mybranch (pull request #57)
[myusername@myhost myapp]$ git pull origin dev
From github.com:myusername/myapp
* branch dev -> FETCH_HEAD
Updating 2be5b0e..2cdc555
Fast-forward
--file list here--
19 files changed, 324 insertions(+), 196 deletions(-)
[myusername@myhost myapp]$ git log
commit 2cdc555dde1ef7ef187756036bb2d19dacae0c26
Merge: 6c9399d fc7d29f
Author: First Last <first.last@myhost.com>
Date: Thu Jun 4 00:53:16 2020 +0000
Merged in mybranch (pull request #81)
[myusername@myhost myappc]$ git reset --hard origin/dev
HEAD is now at 2be5b0e Merged in mybranch (pull request #57)
我原以为执行 git reset --hard origin/dev 会将 repo 重置为最后一次提交(即 pull 请求 #81)?
我还从文件系统中删除了所有文件和文件夹(包括 .git*),并在上周重新克隆了 repo。它有一段时间表现正常,这又发生了。
最佳答案
[myusername@myhost myapp]$ git pull origin dev
From bitbucket.org:
* branch dev -> FETCH_HEAD
Already up-to-date.
这里
origin/dev
没有更新。好像remote.origin.fetch
没有正确设置。试试 git -c remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* pull origin dev
看看是否origin/dev
得到更新。如果是,运行 git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
以便 origin/foo
会在git pull origin foo
之后更新从那时起。旁注:在 Windows 的 git-bash 中,我经历过
origin/foo
尽管 foo -> origin/foo
确实得到更新没有打印在git pull origin foo
的日志中,所以日志并不完全负责。
关于git - 在我的本地仓库副本上运行 git reset --hard 时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62206710/