2016-08-16 20 views
0

masterからブランチをフォークしたので、featureと言うことができます。両方のブランチには、後で異なるコミットが追加されています。現時点ではfeatureには現在1537件のコミットがあり、masterには1515件のコミットがあります。マスタを介して機能ブランチをリベースした後のコミット数

いくつかのアップデートを取得するためには、私はmasterfeatureをリベースので、featuregit rebase -i masterを行った後、コミットの数は1532(featureブランチ)に還元されます。

これが可能な状況は考えられません。 fork時には、両方ともxがコミットしていて、後でyコミットがmasterに追加されましたが、zコミットはfeatureに追加されました。したがって、masterにはx+yがあり、featureにはx+zというコミットがあります。 featureがマスターでリベースされている場合は、x+y+zコミット、少なくとも少なくともx+z以上である必要があります。私は何が欠けていますか?

答えて

3

リベースは、このようなものを作品:

foreach (commit) { 
    calculate diff 
    apply diff 
    git add 
    git commit 
} 

featuremaster上のあなたの仕事の間に任意の重複がある場合、それはこれらの多くはコミットを空に減らすことを可能性があります。従ってGitはそれらを省略しました。

--keep-emptyフラグを使用してrebaseを呼び出すと、これらの空のコミットが保持されます。

+0

ああ、gitは履歴内の同様のコミットを認識し、後のものを削除できますか? – goelakash

+0

@goelakash - 同じコミットを認識するわけではありません。その代わりに、rebaseは 'feature'からの各コミットを1つずつ取り出し、それを' master'の上で再生し、結果をコミットすることを含みます。 Gitがデフォルトで無視するコミットが空になることがあります。 –

+0

さて、私は今理解しています。どうもありがとう! :D – goelakash

関連する問題