web-dev-qa-db-ja.com

GitHubプルリクエストのために、すべてのコミットを1つにまとめます

GitHubでプルリクエストを行いました。現在、リポジトリの所有者は、すべてのコミットを1つにまとめるように言っています。

git rebase -iと入力すると、次の内容のメモ帳が開きます。

noop

# Rebase 0b13622..0b13622 onto 0b13622
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using Shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

Googleで検索しましたが、これを行う方法がわかりません。

53
omerjerk

このソリューションを探している他の誰かを助けるための単純な追加です。スカッシュする以前のコミットの数を渡すことができます。例えば、

git rebase -i HEAD~3 

これにより、エディターで最後の3つのコミットが表示されます。

46
fontno

わかった...最初にgit rebase -i xxxxxxxxxxxxxxxxここで、xxxxxxxxxxは、SHA私がスカッシュするまでのコミットです。その後、メモ帳で、最初をピックとして、残りをすべてスカッシュとして編集します。新しいノートパッドウィンドウが表示されます。そして、最初の行に新しいコミットの名前を入力した後、強制プッシュを実行する必要がありました。

git Push --force Origin master
36
omerjerk

2016年4月1日現在 、リポジトリのマネージャーは、プルリクエストで[Squash and merge]を選択することで、プルリクエストのすべてのコミットを1つのコミットにまとめることができます。

Squash and merge option

プルリクエストでコミットを手動で無効にする場合は、 fontno's answer を参照してください。

9
Stevoisiak

git rebase -i、およびスカッシュするすべてのコミットに「スカッシュ」を使用します。

編集:

git rebase -iは、リベースするコミットのリストを含むインタラクティブなエディターを表示します。各コミットの前のデフォルトのコマンドは「pick」であるため、スカッシュするすべてのコミットに対してs/pick/squash /するだけで、すべてのコミットが最後の前回のコミットにスカッシュされます。

正しいブランチに基づいていることを確認してください。

6
Cong Wang