7

あなたがこれを持っていると仮定します:

     master: o--o--o
development:        `o--o--o

変更を 1 つのコミットとしてマージしたい (途中ですべてのジャンク コミットを回避する):

git checkout master
git merge --squash development

しかし、その後、github ネットワーク ページには次のように表示されます。

     master: o--o--o---------o
development:        `o--o--o

あなたが期待することを示すために、あなたは何をすべきですか?

     master: o--o--o---------o
development:        `o--o--o’
4

1 に答える 1

11

最後のグラフでは、次のコマンドを使用できます。

git merge --no-ff
git branch -d development

master: o--o--o---------o
               `o--o--o’

マージされたブランチが早送りされている場合でも、マージ コミットを作成するように git に指示します。つまり、master の最後のコミットは、マージされたブランチの直接の祖先です。

「迷惑コミット」は削除されないことに注意してください。ただし、よほどの理由がない限り、履歴はそのままにしておく必要があります。コミットをつぶすと、履歴を閲覧するのが難しくなります。

開発ブランチの履歴がくだらないものでいっぱいだと感じた場合は、インタラクティブなリベースを使用して、マージする前に書き直すこともできます。

git checkout developement
git rebase -i master

コミットを選択、編集、並べ替え、スカッシュ、または破棄し、ブランチ履歴を書き換えることができます。これが完了したら、従来のマージを使用します (必要に応じて --no-ff の有無にかかわらず)。

于 2013-09-27T07:08:03.577 に答える