2011-10-12 11 views
9

私が作業しているコードベースのマスターと "PersonalSite"ブランチを持っています。私は繰り返しマスターをパーソナルサイトのブランチにマージして無駄にしようとしています。git mergeがマージされない

この時、私は私がすべてをまっすぐにしていたと思ったので、私がやった:

git checkout master 
git pull 
git checkout PersonalSite 
git pull 
git merge master 

すべてが働いていたようですが、見えた、それは私が期待していたファイルのセットを記載されているが、競合がありました。競合は正しかったので、私はそれを修正し、 "git add"、 "git commit"、そして "git push"を修正しました。しかし今、私がgitログを見ると、コード変更はなくただ一つの矛盾があるだけのコミットを示しています。

「PersonalSite」ブランチから「git merge master」を実行すると、「既に最新の状態」と表示されます。しかし、私が実際にマージしようとした変更のどれもが実際にマージされていないので、これは明らかではありません。この時点でマスターを実際にマージさせるにはどうすればいいですか?

答えて

5

競合を修正してマージ競合をコミットすると、すでにマージが完了しています。 Gitは必要に応じてマージコミットを追加しますが、それは正常ですが、マージが行われたことと、競合があった場合にマージされたファイル以外は何も記録しません。あなたのログをもっと詳しく見ると、実際にマスターからのコミットがあることがわかります。

編集: さて、これをテストしてみてください。マージコマンドを使用する必要はありません。マスターをPersonalSiteにプルするだけです。

git checkout PersonalSite 
git pull origin master 

何が表示されますか。最新の状態になっていれば正しくマージされています。

ローカルでトラッキングブランチをローカルにマージする場合は、ローカルトラッキングブランチが最新であることを確認する必要があります。常に

git pull origin master 
git pull origin PersonalSite 
+1

理由であっても、マージ後PersonalSiteブランチに反映されていないマスターブランチの変更... – LAW

+0

更新の答えがあるということです。 – sciritai

+1

git pull origin [ブランチ名]トリックしました – Bijan

0

マージでは、競合の解決以外の変更は表示されません。マージのいずれかの側の違いを確認するには

が行います。他の方のための

git diff head^.. 

git diff head^2.. 

を。

これが役に立ちます。

3

は、あなたが実際にあなたが(あなたの説明を与えられ、伝えることができたが、ハードディスクである)マージする何を意味するのか合併していると仮定すると、からプルするブランチ名を指定して、あなたはまだ出力に差分を表示されませんgit logのコミットメッセージだけです。 -pを使用してgit logにdiffを表示したとしても、マージコミットのdiffは一般に空であるか、場合によっては競合解決を表示します。これは意味的に、競合解決のみがマージコミットの一部であるためです。その他の変更は他のコミットの一部です。

とにかくコミットあなたはgit logはあなたにマージの完全な効果を表示したい場合は、あなたが使用することができます。

git log -p -m -c 

オプションの機能:

  • -pは差分を表示するように指示し、ありませんメッセージをコミットします。
  • -mは、マージコミットについてもdiffsを表示するように指示します。そして
  • -cgitk

差分ビューは同じことを行いますコミットマージのために一つに2つの差分を組み合わせるためにそれを伝えます。

4

これは以前の質問であることを認識していますが、私は同じ問題だと思っています。私はそれが他の回答のコマンドのいずれかの組み合わせで解決し得ることができませんでしたが、私はしたいブランチで実行することによってそれを解決したのに合流:あなたのためにそう

git checkout <desired_branch_name> -- . 

git checkout master -- . 

私はここにこの答えを見つけました:私はそれをマージしていなかったと言う git: checkout files from another branch into current branch (don't switch HEAD to the other branch)

関連する問題