我一直在做某件事,然后觉得它完全搞砸了……在犯下一些罪行之后。所以我尝试了下面的顺序:
git reset --hard
git rebase origin
git fetch
git pull
git checkout
这时我明白了
Your branch is ahead of 'origin/master' by 2 commits.
我想放弃本地提交,而不必清除本地目录并重新下载所有内容。我怎么才能做到呢?
我一直在做某件事,然后觉得它完全搞砸了……在犯下一些罪行之后。所以我尝试了下面的顺序:
git reset --hard
git rebase origin
git fetch
git pull
git checkout
这时我明白了
Your branch is ahead of 'origin/master' by 2 commits.
我想放弃本地提交,而不必清除本地目录并重新下载所有内容。我怎么才能做到呢?
当前回答
你需要逃离
git fetch
获得所有更改,然后您将不会收到“您的分支领先”的消息。
其他回答
你需要逃离
git fetch
获得所有更改,然后您将不会收到“您的分支领先”的消息。
git reset --hard origin/master
将删除所有不在origin/master中的提交,其中origin是repo名称,master是分支名称。
说句题外话,除了米帕迪的回答(顺便说一句,它应该有用),你应该知道做:
git branch -D master
git checkout master
也完全是你想要的,而不必重新下载所有的东西(你的引用转述)。这是因为您的本地回购包含远程回购的副本(该副本与您的本地目录不相同,甚至与您的签出分支不相同)。
清除一个分支是完全安全的,重建该分支非常快,不涉及网络流量。记住,git在设计上主要是一个本地回购。即使是远程分支机构在本地也有一个副本。只有一点元数据告诉git特定的本地副本实际上是一个远程分支。在git中,所有的文件都在你的硬盘上。
如果你没有master之外的任何分支,你应该:
git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp
我曾经见过远程不同步,需要更新的例子。如果reset -hard或branch -D失败,请尝试
git pull origin
git reset --hard
我必须做一个:
git checkout -b master
就像少年犯说的,它不存在,因为它已经被抹去了
git -D master