私は、特定のブランチで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. 空のコミットをリモートにプッシュ
- 3. Git、リモートにプッシュ
- 4. 私のリモートgitリポジトリを特定のコミットに戻すには?
- 5. bitbucketのリモートgitリポジトリにローカル変更をプッシュする方法
- 6. Git - 1つの統合コミットで新しいリモートにプッシュ
- 7. gitで苦労し、リモートのBitBucketリポジトリにプッシュできません
- 8. はリモートのGitリポジトリにプッシュできません
- 9. 複数のリモートgitリポジトリを1つのリポジトリに組み込む方法は?
- 10. GITコミットはリポジトリにプッシュされませんか?
- 11. Railsを使ってGitリポジトリをコミットしてプッシュ
- 12. リポジトリから別のリポジトリにプッシュ - Git
- 13. SQLITE3:複数の無関係なテーブルと複数行の連合
- 14. 複数のプロジェクトとgitリポジトリ
- 15. GIT:リモートリポジトリにプッシュされた複数のコミットをスクラッシュする方法は?
- 16. TortoiseGitを使用してリモートGitリポジトリにプッシュする際の認証エラー
- 17. 既存のsvnリポジトリをgitにプッシュ
- 18. ! [リモート拒否]エラーがgitリポジトリ
- 19. Androidスタジオでリモートgitリポジトリを複製するには?
- 20. 1つのgitリポジトリ内の無関係のディレクトリを維持する
- 21. Gitリポジトリ:他のブランチにコミット分割
- 22. GIT:複数のリポジトリにコミットする方法はありますか?
- 23. 新しいGitリポジトリへのプッシュに関する問題
- 24. Gitリポジトリ:フォルダへのシンボリックリンクをコミットする
- 25. 既存のgitリポジトリを既存のSVNリポジトリにプッシュ
- 26. 同じソース要素を持つ無関係な複数のグラフインスタンス?
- 27. リモートにプッシュされていない不要なコミットを削除するgitコマンドは何ですか?
- 28. 複数のGitリポジトリを持つ
- 29. 共有リポジトリへのGitコミットの修正
- 30. pluginPathと私のPDEビルドでリモートP2リポジトリから依存関係
私は自分の答えを編集しました。 'git checkout parent_commit'のステップでは、parent_commit =コミットハッシュはそのコミットでリポジトリの状態をチェックアウトし、' git checkout -b commitB'は新しいブランチを作成します。 – shelhamer