我如何将我的本地分支重新设置为远程存储库的分支类似?
我试过:
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 重新设置以重新设置到相应的上流分支的预定头:
git reset --hard @{u}
指定 @{u} 或其字面表格 @{upstream} 的优点是,远程 repo 和分支的名称不需要明确指定。
接下来,如有必要,使用 git clean 删除未追踪的文件,可选也使用 -x:
git clean -df
最后,如有必要,获取最新变更:
git pull
确保远程存储库的起源,并且您对分支_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
這種方法讓檢查的分支如同它一樣,工作樹不受觸摸,它只是將分支的頭轉移到另一個承諾,無論是第二個論點,這是特別有用的,如果多個分支需要更新到新的遠方頭。