[解決済み] Git は、あるブランチを別のブランチの上にリベースします。
質問
私の git リポジトリには
Master
というブランチがあります。リモートの開発者の一人が、ブランチ
Branch1
ブランチを作成し、そこにたくさんのコミットをしました。私はブランチを
Branch1
という新しいブランチを作成しました。
Branch2
(
git checkout -b Branch2 Branch1
) のような
Branch2
に追加された最後のコミットで
Branch1
: (このように見えます)
Master---
\
Branch1--commit1--commit2
\
Branch2 (my local branch)
Branch1
には多くの変更がありました。他の開発者は彼のコミットを破棄し、さらにいくつかのコミットを追加しました。一方、私のブランチではたくさんの変更を行いましたが、まだ何もコミットしていません。現在の構造は以下のような感じです。
Master---
\
Branch1--squashed commit1,2--commit3--commit4
\
Branch2 (my local branch)
今度は、変更した内容をリベースして
Branch1
. 私はこれをどのように行うかについて非常に混乱しています。最初のステップは、私の変更を
git add .
と
git commit -m "message"
. しかし、その後でプッシュするのですか?
git push origin Branch2
それとも
git push origin Branch2 Branch1
? また、ブランチのバックアップを作成することができれば、私が何かを台無しにした場合に備えて、それは素晴らしいことです。
どのように解決するのですか?
まず、現在の
Branch2
:
# from Branch2
git checkout -b Branch2_backup
次にリベース
Branch2
で
Branch1
:
# from Branch2
git fetch origin # update all tracking branches, including Branch1
git rebase origin/Branch1 # rebase on latest Branch1
リベース後は以下のようなブランチ構成になります。
master --
\
1 -- 2 -- 3 -- 4 -- Branch2'
上の図では、アポストロフィの付いた
Branch2
のすべてのコミットがリベースされたことを示します。
Branch2
の後に
コミット4は実際にはリライトです。
の履歴を書き換えたことに留意してください。
Branch2
でリモートへ強制的にプッシュする必要があります。
git push --force origin Branch2
強制プッシュは
Branch2
を使っている人に迷惑がかかるので、注意が必要です。
関連
-
解决[email protected]。パーミッションが拒否されました (publickey)。リモートリポジトリから読み取れませんでした
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] git rebase の取り消し
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Gitのエラーについて覚えておく-すべて最新にする
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] 機能ブランチを別の機能ブランチにリベースする
-
git-fatal: 設定されたプッシュターゲットがありません / 警告: store/README.md の LF は CRLF に置き換えられています。
-
git reports an error fatal: unable to auto-detect email address (got 'Administrator@MS-20180504MMDH.(none)')
-
[解決済み] 単一ファイルのマージをやり直す
-
[解決済み] stash@{1}は曖昧?
-
[解決済み] CVS から Git への移行: $Id$ 相当?
-
[解決済み] git add --patch' で新しいファイルをインクルードする?
-
[解決済み] Git Repo から既存のファイルを削除する