You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
5.2 KiB

  1. # 同期のとれていない git ブランチの再同期
  2. <!---
  3. grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
  4. original document: 0.9.0:docs/newbs_git_resynchronize_a_branch.md
  5. git diff 0.9.0 HEAD -- docs/newbs_git_resynchronize_a_branch.md | cat
  6. -->
  7. 仮にあなたの `master` ブランチにあなたのコミットを行い、そしてあなたの QMK リポジトリの更新が必要になったとします。
  8. (フォーク元の) QMK の `master` ブランチをあなたの `master` ブランチに `git pull` することもできますが、GitHub は、あなたのブランチが `qmk:master` より何コミットか先行していると通知します、この状態で QMK にプルリクエストを行う場合、問題が発生する可能性があります。
  9. (訳注:この通知は、GitHub のあなたのリポジトリの code ペインのブランチ選択メニューの下のあたりで `This branch is 3 commit ahead of qmk:master` という様な文面で表示されています。)
  10. ?> このドキュメントは [あなたのフォークの master ブランチ: 更新は頻繁に、コミットはしないこと](ja/newbs_git_using_your_master_branch.md) で詳述されている概念に基づいています。その概念に慣れていない場合は、まずそれを読んでから、ここに戻ってください。
  11. (訳注:この文書で言う、「同期のとれていない git ブランチ」とは、master ブランチに関する、この「コミットしない」方針を逸脱して、QMK の master リポジトリに存在しないコミットがあなたのフォークの master ブランチに入っている状態を指します。)
  12. ## あなた自身の `master` ブランチでの変更のバックアップ(オプション)
  13. 救えるものなら自分の行った変更を失いたくはないでしょう。
  14. あなたの `master` ブランチに既に加えた変更を保存したい場合、最も簡単な方法は、単に「ダーティな」`master` ブランチの複製を作成することです:
  15. ```sh
  16. git branch old_master master
  17. ```
  18. これで、 `master` ブランチの複製である `old_master` という名前のブランチができました。
  19. ## あなたのブランチの再同期
  20. さあ、`master` ブランチを再同期します。
  21. この手順では、QMK のリポジトリを git のリモートリポジトリとして設定する必要があります。
  22. 設定済みのリモートリポジトリを確認するには、`git remote -v` を実行し、次のような結果が返されなければなりません。
  23. ```sh
  24. QMKuser ~/qmk_firmware (master)
  25. $ git remote -v
  26. origin https://github.com/<your_username>/qmk_firmware.git (fetch)
  27. origin https://github.com/<your_username>/qmk_firmware.git (push)
  28. upstream https://github.com/qmk/qmk_firmware.git (fetch)
  29. upstream https://github.com/qmk/qmk_firmware.git (push)
  30. ```
  31. もし、上記のようにならずに以下のように参照されるフォークが、1つだけ表示される場合:
  32. ```sh
  33. QMKuser ~/qmk_firmware (master)
  34. $ git remote -v
  35. origin https://github.com/qmk/qmk_firmware.git (fetch)
  36. origin https://github.com/qmk/qmk_firmware.git (push)
  37. ```
  38. 新しいリモートリポジトリを追加します:
  39. ```sh
  40. git remote add upstream https://github.com/qmk/qmk_firmware.git
  41. ```
  42. 次に、`origin` リモートリポジトリを、あなた自身のフォークにリダイレクトします:
  43. ```sh
  44. git remote set-url origin https://github.com/<あなたのユーザ名>/qmk_firmware.git
  45. ```
  46. 両方のリモートリポジトリが設定されたので、次を実行して、QMK である `upstream` リポジトリの参照を更新する必要があります。
  47. ```sh
  48. git fetch upstream
  49. ```
  50. この時点で、次を実行してあなたの(訳注:master)ブランチを QMK のブランチに再同期します。
  51. (訳注: 今現在 `master` ブランチがチェックアウトされていなければなりません。
  52. そうなってなければ、`git checkout master` を先に実行しておく必要があります。)
  53. ```sh
  54. git reset --hard upstream/master
  55. ```
  56. これらの手順により、あなたのコンピュータ上のリポジトリが更新されますが、あなたの GitHub 上のフォークはまだ同期されていません。
  57. GitHub 上のフォークを再同期するには、あなたのフォークにプッシュして、ローカルリポジトリに反映されていないリモート変更をオーバーライドするように Git に指示する必要があります。
  58. これを行うには、次を実行します:
  59. ```sh
  60. git push --force-with-lease
  61. ```
  62. !> 他のユーザーがコミットを投稿するフォークで `git push --force-with-lease` を**実行しないでください**。これをすると、かれらのコミットが消去されてしまいます。
  63. これで、あなたの GitHub フォーク、あなたのローカルファイル、および QMK のリポジトリはすべて同じになりました。
  64. ここから、[ブランチを使って](ja/newbs_git_using_your_master_branch.md#making-changes)さらに必要な変更を加え、通常どおりそれらを投稿できます。