私は、特定のブランチで2つの異なるプロジェクトに取り組んでいる状況があります。私はプロジェクト "A"を終了し、変更をコミットし、変更をリモートにプッシュしました。この変更 "A"は現在検討中であるため、ブランチにまだマージされていません。一方私は、同じブランチ内の別のプロジェクトの無関係な変更に取り組み始めました。この変更を "B"と呼んでいます。私はこの変更をコーディングし終えました。私はこれをコミットしてプッシュする準備ができています。しかし、変更 "A"がまだマージされていないので、これをどのように行うべきか分かりません。この2つの変更 "A"と "B"を互いに依存しない別々の変更としてプッシュするにはどうすればよいですか?複数の無関係なコミットをリモートgitリポジトリにプッシュ
答えて
まず、変更AとBの共通の親となるコミットを特定する必要があります。説明したとおり、これはコミットAの親です。git log
を使用して、コミットのハッシュを見つけてください。あなたがちょうどコミットハッシュの最初の数文字/数字を入力することができます。のは、それをふりをしてみましょうことは、我々はどこ、そこから新しいブランチを作成して変更B.
git checkout parent_commit
次のための新しい枝の頭部として使用しようとしている「parent_commit」今
このコミットチェックアウト、ある我々 Bの変更をコミットします。
git checkout -b changeB
最後に、この新しいブランチにご変更Bをコミットするgit add
とgit commit
を使用しています。完了したらgit push
を実行して、変更Aとは関係ない新しいブランチからコミットBをプッシュします。または、変更Bを既にコミットしている場合は、git cherry-pick commitB
とgit pull
を使用します。
今、あなたはA.発言を閉じる
の親までの歴史を共有し、Bを使用してAと元支店、および新しい枝を持っています:あなたはすでにBを犯し、そのためのブランチを作っていた場合あなたが他の回答で述べたリベースワンライナー行っている可能性(とそれがチェックアウトしました):基本的に
git rebase --onto master commit_A_sha
あなたは何を言っているのか理解していますが、共通の親のコミットIDを与えることで、新しいブランチ "common_parent"をどのように作成できるか説明できます。私の変更 "A"はすでにコミットされているので、これを行う必要があります。 – DarezGhost
私の答えをもう少しステップバイステップで編集します.1秒です。 – shelhamer
Shelhamerの応答と同じ結果に。 1つのコマンドで同じ結果を得るにはgit rebase --onto
を使用できます。 「古い」親(あなたの例ではA)のSHA id、新しい親のSHA id(たとえばマスター)を探します。そして、あなたは質問(B)に支店を持っていると仮定して実行し、チェックアウト:
git rebase --onto <new parent> <old parent>
これは、本質的に以降から分岐B上のすべてを「-拾う」し、それをマスターオフに基づいていますので、それを移動します。その後、通常通りgit push
となります。
- 1. リモートgitリポジトリにコミットする方法
- 2. Gitリポジトリ:複数のリモコンにプッシュ
- 3. 空のコミットをリモートにプッシュ
- 4. Git、リモートにプッシュ
- 5. 私のリモートgitリポジトリを特定のコミットに戻すには?
- 6. リモートGitリポジトリにアクセス
- 7. bitbucketのリモートgitリポジトリにローカル変更をプッシュする方法
- 8. 変更されたコミットをリモートのgitリポジトリにプッシュする最も効率的な方法は何ですか?
- 9. リモートgitサーバにプッシュ
- 10. コミットをgitとnetbeansを使って複数のブランチにプッシュ
- 11. TeamCityで複数のリモートGitリポジトリを使用するには?
- 12. Git - 1つの統合コミットで新しいリモートにプッシュ
- 13. プッシュ前にコミットされていないファイルを無関係に処理する
- 14. gitで苦労し、リモートのBitBucketリポジトリにプッシュできません
- 15. はリモートのGitリポジトリにプッシュできません
- 16. 複数のリモートgitリポジトリを1つのリポジトリに組み込む方法は?
- 17. Mercurialの別のリポジトリに無関係なリポジトリをインポートする
- 18. 複数の入力を伴う追加/コミット/プッシュのGitエイリアスコマンド
- 19. GITコミットはリポジトリにプッシュされませんか?
- 20. リモートgitリポジトリから複数のmavenプロジェクトをチェックアウトする方法
- 21. Railsを使ってGitリポジトリをコミットしてプッシュ
- 22. リモートgitリポジトリをプッシュすることができません
- 23. ローカルのgitリポジトリをリモートのgitリポジトリにバックアップする方法
- 24. リポジトリから別のリポジトリにプッシュ - Git
- 25. Git - ローカルとリモートの両方のリポジトリから複数の前回のコミットを削除する
- 26. リモートとローカルのgitリポジトリ
- 27. git - 将来コミットしたファイルを無視してリポジトリに残す
- 28. Git:プッシュなしでコミットをテストする
- 29. リモートVSO gitリポジトリのGitクリーンアップ/ガベージコレクション
- 30. git - ファイルを1つのリモートにプッシュ
私は自分の答えを編集しました。 'git checkout parent_commit'のステップでは、parent_commit =コミットハッシュはそのコミットでリポジトリの状態をチェックアウトし、' git checkout -b commitB'は新しいブランチを作成します。 – shelhamer