我如何将我的本地分支重新设置为远程存储库的分支类似?

我试过:

git reset --hard HEAD

但 git 状态声明我有修改的文件:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
      modified:   java/com/mycompany/TestContacts.java
      modified:   java/com/mycompany/TestParser.java

当前回答

我做了:

git branch -D master
git checkout master

完全重新设置分支


注意,您应该检查到另一个分支,以便能够删除所需分支。

其他回答

使用下面的命令. 这些命令将从本地 git 删除所有未追踪的文件

git fetch origin
git reset --hard origin/master
git clean -d -f

git reset --hard HEAD 实际上只会重新设置到最后的承诺状态. 在这种情况下, HEAD 指的是您的分支的 HEAD。

如果你有几个承诺,这不会工作。

你可能想做的事情,是重新设置到起源头或你远程存储所叫什么。

git reset --hard origin/HEAD

但是要小心. 硬重新设置不能轻易失去. 最好按照 Dan 建议做,并在重新设置之前将您的更改复制。

首先,请使用 git 状态检查您是否有任何本地变更。

然后执行:

git fetch
git reset --hard @{push}

它将重新设置当前的本地分支到相同的远程分支,将用于 git push. 这特别有用,当 git config push.default 电流设置时. 例如,当您的分支是 abc 和远程是起源时,它将重新设置为起源/abc。

请参见 Git 评论,了解更多关于 @{push} 的详细信息

唯一的解决方案,在所有情况下工作,我已经看到的是删除和分解. 也许有另一种方式,但显然,这种方式不会留下旧状态的机会,所以我更喜欢它。

REPO_PATH=$(pwd) && GIT_URL=$(git config --get remote.origin.url) && cd .. && rm -rf $REPO_PATH && git clone --recursive $GIT_URL $REPO_PATH && cd $REPO_PATH

* 假设您的.git 文件不受腐败

将您的分支与远程分支相匹配,可以在两个步骤中完成:

git fetch origin
git reset --hard origin/master

如果你想在这样做之前保存你的当前分支状态(仅在这种情况下),你可以:

git commit -a -m "Saving my work, just in case"
git branch my-saved-work

现在你的工作存储在“我保存的工作”分支上,如果你决定你想要它回来(或者想稍后查看它或反对你的更新分支)。

请注意,第一个例子假设远程雷波的名称是“起源”,而远程雷波的分支称为“主”与您本地雷波的目前已检查的分支相匹配。