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

我试过:

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 repo 中的未追踪和修改的文件产生任何影响(我尝试了上述所有选项)。

幸运的是,我没有其他我照顾的分支。

xkcd: Git

其他回答

如果你有像我这样的问题,你已经做了一些改变,但现在,出于任何原因你想摆脱它,最快的方式是使用 git 重新设置如下:

git reset --hard HEAD~2

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

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

git reset --hard HEAD~5

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

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

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

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

git reset --hard origin/HEAD

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

这是我经常使用的:

git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;

請注意,這是一個很好的做法,不做變化到您的當地主/開發分支,但相反,支票到另一個分支,任何變化,與分支名稱由變化類型,例如 feat/, chore/, fix/,等,所以你只需要拖動變化,不推任何變化從主。

git remote --verbose

git checkout develop;
git commit -m "Saving work.";
git branch saved-work;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force

git add .
git commit -m "Reset to upstream/develop"
git push --force origin develop

git merge -s recursive -X theirs develop

使用时

git merge -s recursive -X ours develop

与所有的变化相结合:

git commit -m "Saving work.";
git branch saved-work;
git checkout develop;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
git add .;
git commit -m "Reset to upstream/develop";
git push --force origin develop;
git checkout branch_name;
git merge develop;

请注意,而不是上流/开发,您可以使用一个承诺标签,其他分支名称等 使用一个 CLI 工具,如 Oh My Zsh 检查您的分支是绿色的,表明没有什么承诺和工作目录是干净的(这是确认或也可以通过 git 状态验证)。

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

git fetch origin
git reset --hard origin/master

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

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

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

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

首先,使用 git 重新设置以重新设置到相应的上流分支的预定头:

git reset --hard @{u}

指定 @{u} 或其字面表格 @{upstream} 的优点是,远程 repo 和分支的名称不需要明确指定。

接下来,如有必要,使用 git clean 删除未追踪的文件,可选也使用 -x:

git clean -df

最后,如有必要,获取最新变更:

git pull