Answers:
首先,在当前位置创建一个新分支(以防您需要旧的“拧紧”历史记录):
git branch fubar-pin
更新您的远程分支机构列表并同步新的提交:
git fetch --all
然后,将分支重置为原点/分支指向的位置:
git reset --hard origin/branch
小心,这将从您的工作树中删除所有更改!
git fetch origin复位前
origin/branch。决不。
git resetHEAD指向分支时,该分支将跟随。
当弄乱本地分支时,我要做的只是重命名断开的分支,然后再次签出/分支上游分支:
git branch -m branch branch-old
git fetch remote
git checkout -b branch remote/branch
然后,如果确定您不希望从旧分支中获取任何东西,请将其删除:
git branch -D branch-old
但是通常我会把旧分支留在本地,以防万一我在里面有东西。
git checkout -b <branch> --track <remote>/<branch>没有,您的命令是否同样有效--track?
branch.autoSetupMerge(我认为默认为true)使--track隐式。而且,是的,在我的所有git设置中--track,执行checkout -bYMMV 时都不需要显式。
您的本地分支可能已对其进行了修改,而您希望将其丢弃。为此,您需要用于git reset将分支头重置为与上游仓库的分支分开的最后一个点。使用git branch -v发现上游分支的SHA1 ID,并使用重置您的分支它它git reset SHA1ID。然后,您应该可以执行git checkout放弃保留在目录中的更改。
注意:请始终在备份存储库上执行此操作。这样一来,您可以确保自己工作正常。否则,您将有一个备份要还原。
git reset --hard
这是将所有本地更改恢复到原点