2011-06-26 7 views
2

は、私は1つの既存のファイルtest.csGitとGitHubの新機能は間違っていますか?

  1. のgitアドオンへの変更を行います。
  2. Gitはgitの原点マスター
  3. を引っ張る
  4. "test.csに私の変更を" -mをコミット>それは私がビルドをチェック>(他の誰かではなく、新しいことで変更)SomeOtherFile.cs
  5. を引き下げます。 ...)
  6. Gitのプッシュ

私はgithubのに行くとき、そこに私のプッシュの下に2つのコミット、 'test.cs' の1である、とSomeOtherFile.cs

のための1つは、このexpecteです行動?あなたがgit add .を行うと

おかげで..

答えて

0

をだから、マージとリベースの違いは何あなたがここに実行されています。あなたがしたとき:

git pull origin master 

マスターからの変更をマージしたマージコミットを作成しました。そのマージコミットは空ですが、作成されました。マージからのこの動作は期待されますが、私の意見では望ましくありません。コミットは、2つのブランチ(ローカルとオリジナルマスタ)の違いを保持するために作成され、相違の有無にかかわらず作成されます。代わりに発行した場合

git pull --rebase origin master 

リベースを済ませたとします。 rebaseは、ローカルとOriginマスターが共通している最後のコミットを探し、そのコミット後の変更を一時記憶域に入れてから、Originマスターからの変更をレイヤ化します(SomeOtherFile.csはNotYouからコミットします)。最後に変更を再生しますその新しい更新された行の上に。このリプレイはコミットによってコミットされるため、10回コミットすると10回先に実行されます。

競合がない場合、これはすべて瞬時に、そして介入なしで行われます。競合がある場合は、あなたが途中で停止され、問題を修正した後、あなたは、プロセスが上に移動してい

git rebase --continue 

を発行することを求めました。ここで起こるのは、マージコミットを追加するのではなく、元のコミットを再定義することによって競合が処理されるということです。しかし、それはファイルの履歴をきれいに保ちます。あなたが見たようにマージはしません。

2

、あなたの作業ディレクトリ内のすべてのファイルがインデックスにに変更が追加されます。あなただけのtest.csのコミットを作成したい場合は、代わりに実行します。

git add test.cs 
+0

私は1つのファイルにのみ触れました。追加。私の約束の前に、そして引き上げの前に行われました。その時点で変更された唯一のファイルはtest.cs. – Roger

+0

誰が 'SomeOtherFile.cs'を変更したのですか? –

+0

hm ...元の投稿でこの行を編集しました:4.> SomeOtherFile.csをプルダウンします(新しいものではなく他の誰かによって変更されました)。それは理にかなっていますか? – Roger

関連する問題