これは私がよく使うものです:
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
ローカルの master/develop ブランチを変更するのではなく、代わりに別のブランチにチェックアウトして、変更の種類 (例: 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 では、作業をそこに保存するために、ローカル ブランチと同じ名前のブランチをチェックアウトすることもできます。例として開発ブランチを使用していますが、既存の任意のブランチ名にすることができます。
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;
アップストリーム/開発の代わりに、コミット ハッシュや他のブランチ名などを使用できることに注意してください。 Oh My Zsh などの CLI ツールを使用して、コミットするものがなく、作業ディレクトリがクリーンであることを示すブランチが緑色であることを確認します (これは、によって確認または検証可能git status
です)。UML ダイアグラム、ライセンス ヘッダーなど、コミットによって自動的に追加されるものがある場合、上流の開発と比較して実際にコミットが追加される可能性があることに注意してorigin develop
くださいupstream develop
。