我最近收到了一个来自git的“强制更新”警告,该警告来自于一个只有我自己提交的存储库。我没有做任何重建,所以我不知道为什么会发生这种情况。我想知道的是,我应该在哪里查找可能已经丢失的更改?
为了说明,假设有三个存储库副本,L、D和S(笔记本电脑、台式机、服务器)。
首先,所有三个存储库都是同步的。然后在D上完成工作并推送到S。然后L运行git pull
并获得“强制更新”。这是否意味着在L上所做的更改已经被覆盖,或者它们是在其他地方?我怎么才能找到他们呢?谢谢。
发布于 2012-08-22 06:17:49
“强制更新”意味着远程跟踪分支是最近的。如果您在某人对存储库执行强制推送之后获取(或拉取),就会发生这种情况。
但是,在执行git pull
时,您的本地分支不会丢失任何历史记录。由于远程分支的历史记录现在与本地分支不同,因此git pull
将执行合并。如果查看最近的提交(只需运行git log
),您应该会看到合并提交,第一个父级是本地分支的先前状态,第二个父级是远程分支的新值。
为了说明起见,我刚刚重现了强制更新场景,git pull
输出了以下内容:
> git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From /Volumes/UserData/Users/kballard/Dev/Scratch/foo/server
+ 7193788...a978889 master -> origin/master (forced update)
Merge made by the 'recursive' strategy.
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 d
pull的fetch部分打印(forced update)
,但是origin/master
的新值随后被合并到本地分支。
https://stackoverflow.com/questions/12063345
复制相似问题