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

我试过:

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

当前回答

以前的答案假设要重新设置的分支是当前的分支(检查出来)。在评论中,OP hap497澄清了分支实际上被检查出来,但这不是原始问题明确要求的。 由于至少有一个“重复”问题,重新设置分支完全到存储状态,这并不假设分支被检查出来,这里有一个替代方案:

git update-ref refs/heads/mybranch myremote/mybranch

這種方法讓檢查的分支如同它一樣,工作樹不受觸摸,它只是將分支的頭轉移到另一個承諾,無論是第二個論點,這是特別有用的,如果多個分支需要更新到新的遠方頭。

其他回答

这里的顶级评分答案并没有像预期那样重新设置我的本地代码。

如今,主人通常是主要的它不做任何事情与未追踪的文件你可能在周围撒谎

而不是:

检查您的默认远程分支的名称(这不是一个 git 事,所以在 GitHub 中检查)然后在下面的步骤4中取代主或主,以此保存当前事物 git stash -u 更新从远程 git fetch 起源重新设置到远程默认分支(但参见上面的步骤1) git 重新设置 --hard 起源/main

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

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 重新设置如下:

git reset --hard HEAD~2

我有2不需要的订单,因此第2号,你可以将其更改到自己的订单数量重新设置。

所以回答你的问题 - 如果你有5个承诺在远程存储头,你应该运行这个命令:

git reset --hard HEAD~5

请注意,你会失去你所做的改变,所以要小心!

确保远程存储库的起源,并且您对分支_name感兴趣:

git fetch origin
git reset --hard origin/<branch_name>

此外,您将重新设置现有起源分支到头部。

git fetch origin
git reset --hard origin/HEAD

它是如何工作的:

git fetch 起源从远程下载最新的,而无需尝试合并或拆除任何东西。

然后 git 重新设置将 <branch_name> 分支重新设置为您刚刚抓住的。 --hard 选项将您的工作树中的所有文件更改以匹配原始/branch_name 中的文件。

以前的答案假设要重新设置的分支是当前的分支(检查出来)。在评论中,OP hap497澄清了分支实际上被检查出来,但这不是原始问题明确要求的。 由于至少有一个“重复”问题,重新设置分支完全到存储状态,这并不假设分支被检查出来,这里有一个替代方案:

git update-ref refs/heads/mybranch myremote/mybranch

這種方法讓檢查的分支如同它一樣,工作樹不受觸摸,它只是將分支的頭轉移到另一個承諾,無論是第二個論點,這是特別有用的,如果多個分支需要更新到新的遠方頭。