2009-05-11 12 views
21

私はmasterブランチから外したブランチで100%作業します。同僚がorigin/masterにプッシュバックしたので、私はこれらの変更を私の個人的な支店に押し込もうとしました。私は「gitの状態」に続いて「Gitチェックアウトマスター」を行うとき、私は、次を得る:Git:元の/ masterより先にコミットしていないブランチはどうですか

# Your branch is ahead of 'origin/master' by 2 commits. 

どのように私は2回のコミットでの先にコミットしたことがないブランチですか?何がコミットしているかを知り、本質的に元に戻す最良の方法は何ですか?私は起源/マスターに何かを押し戻したくないので、それは未知の競合を引き起こす可能性があります。

+0

Gitがこのような単純なツールであるため、これは最も紛らわしい部分です。私はあなたとまったく同じ問題を抱えています。私は私の枝に決してコミットしません。私はいつも枝分かれして自分の変更を行います。私が 'git pull origin master'を実行すると、それは200コミット後になることがわかります。どうして?私は決して触れなかった。彼らがこれをクリアすることを願っています。 – Jeff

答えて

35

起源/マスターしていない頭の中であなたが持っているコミットを参照するには、次の

git log origin/master.. 

が離れてそれらを吹くと、原点/マスターと同じあなたの頭を作成するには:

git reset --hard origin/master 

方法を自分のリポジトリに変更をプッシュしましたか?私はあなたが "プッシュ"と述べたことに気づいた...原点は中央のレポですか?あなたの同僚のレポ?あなたが実際にやりたかったことは、押しているのではなく、直接または中央のステージングポイントからの同僚の変化を引き出すことでした。原点/マスターよりも前の2つの変更は、実際には同僚の変更ですが、元/マスタートラッキングブランチは古くなっている可能性があります。

+0

ありがとうaraqnid。ちょうど不思議なことに、git log origin/master ..はこの場合何をしますか? –

+3

リビジョンの*範囲*を取るgitコマンドでは、A..Bは "B^A"または "B --not A"の省略形です。 "A .."はそれ自体が "HEAD - not A"の略語です。 gitはリビジョンBを読み込み、Aから到達可能なコミット(たいていはA自身)に遭遇したときにリビジョングラフを返します。 グラフが単なる行である単純な改訂履歴の場合、これはAの後にBを含むコミットを簡略化します。 – araqnid

+0

+1ありがとうございます。 <3 –

0

ブランチにgit rebaseさんがいますか?ですか?

ブランチ(git checkout -b testrebase)をコピーし、git rebase masterを発行してそれが機能するかどうか試してみてください。これはあなたがマスターに関連して行ったすべてのコミットを解き、それを元に戻そうとします(基本的に歴史は理にかなっています)。うまくいかない場合は、testrebaseを削除してください。

4

masterのブランチで作業していて、origin/masterには2つのコミットがあります。

メッセージ# Your branch is ahead of 'origin/master' by 2 commits.が言っている:

# Your branch 'mybranch' has two commits not in 'origin/master' 

想像GitのユーザーSVNのようなリビジョン番号、あなたは枝がコミットしているなら1、2、3、4、5 - しかしorigin/masterのみ1、2持っています、 3.だから改訂履歴は..

your branch         -- [commit 4]--[commit 5] 
              /     /\ HEAD 
master --[commit 1]--[commit 2]--[commit 3]-/ 
             /\ origin/master 

ログの最後の2つのコミットを表示するには、あなたが行うことができます。..次安っぽいASCII図のようになります

git log HEAD..HEAD~2 
0

原産地/マスターがレポ版のマスターで最新であることを確認する必要があります。試してみてください:

git fetch origin master 

あなたのローカル起源/マスターはレポのマスターと同じです。その後、実行するときに

git pull origin master 

を入力すると、ローカルマスターのコミット数が正確に表示されます。その後、araqnid's commandを実行して、実際にどのコミットが異なるかを確認することができます。

関連する問題