2011-06-26 6 views
61

を選ぶためにコミット私がマスター上だと私はrebase -i <my_branch>Gitのインタラクティブリベースなしが

をしたこの手に入れた。そのうちのいくつかは歓迎されないように私がすべてではない、いくつかのコミットを選ぶしたい

noop 

# Rebase c947bec..7e259d3 onto c947bec 
# 
# 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 <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails 
# 
# If you remove a line here THAT COMMIT WILL BE LOST. 
# However, if you remove everything, the rebase will be aborted. 
# 

を。 また、いくつかのファイルや変更を常にいくつかのブランチに対して「ローカル」にしたい場合はどうしますか? .gitignoreのようなヘルパーがいますか?

答えて

58

非対話型のリベースと同様に、特定のコミットにリベースする必要があります。

非対話型のリベースでは、現在のコミットの直接の祖先を指定すると、何も変更されません。対話型のrebaseを使用すると、コミットが現在のコミットの直接の祖先であっても、リベースしているコミット後にコミットを編集できますが、その後編集したいコミットを指定する必要があります。

私はあなたの状況の詳細を知らないが、あなたはこのような何かをしたいかもしれません:

# Opportunity to edit or prune commits between origin/master and current branch 
git rebase -i origin/master 

または

# Edit some of the last ten commits 
git rebase -i HEAD~10 # Note that ~10 uses a tilde("~") not a dash("-"_) ! 
20

rebase -iコミット範囲を指定しないと、コミットは表示されません。最後に、7つのコミットをrebaseするには、次のようにしてください:

git rebase -i HEAD~7 

これは履歴を書き換えることに注意してください。変更内容(基本的に構成ブランチ)との分岐を有していて、定期的にに他の支店にそれをマージ:コミットがすでに2番目の質問のために


をプッシュしている場合は、それをしないでください。この方法では、変更は他のブランチに移動しません。

8

あなたがgit rebase -iを使用しているときは、通常は指定する必要があり、どのコミットからリベースを実行したいのですか。だから、例えば、あなたは現在のブランチへの最後の10の間でコミットの一部を削除したい場合は、あなたがどうなる:他人として

git rebase -i HEAD~10 
4

言及している、あなたはコミットの範囲を指定する必要があります。

git rebase -i <latest-commit-to-be-retained> 

(コミットを編集すると、あなたが同じ枝上にあると仮定すると) -

をコミットを指定するには、HEAD〜5つの速記を使用するか、またはSHAチェックサムを使用することができます(これはあなたができますget)

実際にコミットは、ツリー内の削除/編集/改訂するコミットの先祖/祖先であれば行います。これはエディタ内の<latest-commit-to-be-retained>以降のすべてのコミットを一覧表示します(git configで定義されています)。リストから、ちょうど、その特定の行を削除し、保存して終了(VI habbits :))ファイル+エディタ、および第二の答えについてgit rebase --continue

を行い、コミット削除するには、私がknittl

に同意します

に変更を加えたブランチ(基本的には設定ブランチ)があり、 は他のブランチを定期的にマージします。このように変更すると は他の支店に移動しません

関連する問題