这是我经常使用的:
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
请注意,这是很好的做法不更改您的本地主/开发分支,而是结帐另一个分支的任何变化,与变化的类型,例如前置分行的名称feat/
,chore/
,fix/
等于是你只需要拉更改,而不是从主那里推送任何更改。对于其他人贡献的其他分支机构也是如此。因此,仅当您碰巧将更改提交给其他人已提交并需要重置的分支时,才应使用以上内容。否则,将来避免推到其他人推到的分支,而是签出并通过签出的分支推到所述分支。
如果您想将本地分支重置为上游分支中的最新提交,到目前为止对我有用的是:
检查您的远程服务器,确保上游和原始服务器是您期望的,如果没有按预期使用git remote add upstream <insert URL>
,请使用,例如您从中派生的原始GitHub存储库,和/或git remote add origin <insert URL of the forked GitHub repo>
。
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
在GitHub上,您也可以签出与本地名称相同的分支,以将其保存在此处,尽管如果Origin开发与本地保存的工作分支具有相同的更改,则不必这样做。我以develop分支为例,但它可以是任何现有的分支名称。
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
保留branch_name冲突的更改。否则,将mergetool与git mergetool
。
与所有更改一起:
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 status
)。请注意,这反而可能会增加相比,上游开发,如果有自动添加一个承诺,比如UML图,许可证头,等什么提交,所以在这种情况下,你可以再拉的变化origin develop
来upstream develop
,如果需要的话。
git status
您的第二条命令的输出git reset --hard HEAD
失败。但是,您没有粘贴它的输出。→不完整的问题。