[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
質問
なぜか私の
master
と私の
origin/master
ブランチが分岐しています。
実は、分岐してほしくないんです。
これらの違いをどのように捉えればよいのか、また マージ ということです。
解決方法は?
あなたは 違いを確認する を使っています。
git log HEAD..origin/master
以前 引っ張る (フェッチ + マージ) (参照) "gitに常に特定のブランチからpullするようにするにはどうしたらいいですか? )
というようなメッセージがある場合。
"あなたのブランチと 'origin/master' が分岐し、 # それぞれ 1 つと 1 つの異なるコミットが存在します "。
を確認します。
更新の必要性
origin
. もし
origin
が最新であれば、いくつかのコミットが
origin
ローカルで自分のコミットをしている間に、他のリポジトリから自分のコミットが行われました。
... o ---- o ---- A ---- B origin/master (upstream work)
\
C master (your work)
コミットCをコミットAに基づかせたのは、それがその時点で上流から取ってきた最新の作業だったからです。
しかし、あなたがオリジンにプッシュバックしようとする前に、他の誰かがコミットBをプッシュしました。
開発履歴が別経路に分岐してしまった。
その後、マージまたはリベースを行うことができます。参照 プロGit。Git のブランチング - リベース をご覧ください。
マージ
git mergeコマンドを使用します。
$ git merge origin/master
の変更を統合するよう Git に伝えます。
origin/master
を作成し、マージコミットを行います。
履歴のグラフは今、このようになっています。
... o ---- o ---- A ---- B origin/master (upstream work)
\ \
C ---- M master (your work)
新しいマージ、コミット M は 2 つの親を持ち、それぞれがそのコミットに格納されたコンテンツに至る開発の 1 パスを表しています。
Mの背後にある歴史は、現在では非線形であることに注意してください。
リベース
git rebaseコマンドを使用します。
$ git rebase origin/master
これは、コミット C (あなたの作業) を、コミット A ではなくコミット B を基にしているかのように再生するように Git に指示します。
CVS や Subversion のユーザーは、コミット前に更新する際に、ローカルの変更を上流の作業の上にリベースすることが日常的になっています。
Gitは、コミットとリベースのステップを明示的に分離しているだけです。
履歴のグラフはこのようになりました。
... o ---- o ---- A ---- B origin/master (upstream work)
\
C' master (your work)
コミットC'は、git rebaseコマンドによって作成された新しいコミットです。
Cとは2つの点で異なります。
- 歴史が違う。AではなくBである。
- その内容は、BとCの両方の変更を考慮したもので、マージの例のMと同じです。
C'の背後にある歴史はまだ線形であることに注意してください。
では、(今のところ)線形履歴のみを許可することにしました。
cmake.org/cmake.git
.
この方法は、以前使用していたCVSベースのワークフローを維持し、移行を容易にする可能性があります。
C' を私たちのリポジトリにプッシュする試みはうまくいきます (あなたにパーミッションがあり、あなたがリベースしている間に誰もプッシュしていないと仮定しています)。
git pull コマンドは、オリジンから取得したデータをローカルでリベースするための省略記法を提供します。
$ git pull --rebase
これは、上記のフェッチとリベースのステップを1つのコマンドにまとめたものです。
関連
-
[解決済み】git revert <hash> not allowed due to a merge but no -m option was given.
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルリポジトリのブランチをリセットして、リモートリポジトリのHEADと同じにする
-
[解決済み】ローカルの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 push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
[解決済み] GIT_DISCOVERY_ACROSS_FILESYSTEM が設定されていない。
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] GitLabのエラーを修正しました。"このプロジェクトでは保護されたブランチにコードをプッシュすることが許可されていません"?
-
[解決済み] エラーです。リベースを使用してプルできません。あなたはステージングされていない変更を持っています
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] Gitのmasterブランチを、別のブランチから完全に置き換えるには?[重複]。
-
[解決済み] git が常に特定のブランチからプルするようにするにはどうしたらいいですか?
-
[解決済み】Gitでブランチの変更点を取得する方法
-
[解決済み] git pull "で保留中の変更を自動的にstashしたりpopしたりできますか?