0

私はいくつかのローカルコミットを行いました。

ただし、以前のものを除いて、 4977 や 4978 などの最新のものをプッシュしたいと考えています。

4948 local commit 1 is the ancestor of all commits

HGでそれを行う方法を誰か教えてもらえますか

4978 local commit 4
  |
  |
  |
4977 local commit 3
  |
  |
  |
4976 local commit 2
  |
  |
  |
4948  local commit 1
4

2 に答える 2

2

Mercurial リポジトリは不変の履歴を持つことを目的としているため、そのままではこれは不可能です。ただし、これには回避策があります。

おそらくこれを実現する最も簡単な方法は、histedit 拡張機能を使用することです。.hgrc (または mercurial.ini) を次のように変更して有効にする必要があります。

[extensions]
histedit = 

次に、コマンド ラインから histedit サブコマンドを実行し、関心のある変更セットまで遡って調べるように指示できます...

hg histedit 4948

これにより、テキスト エディターがポップアップし、pick各変更セットの横に単語が表示されます。もう必要のないチェンジセットに変更pickし、保存して終了すると、問題のチェンジセットはなくなります。drop

これにより、変更セットがリモートにプッシュされるのを防ぐだけでなく、ローカル リポジトリから削除されることに注意してください。

于 2014-03-12T13:25:40.963 に答える
1

すべての祖先コミットもプッシュせずにコミットをプッシュすることはできません。ただし、コミットをまとめて「折りたたむ」/「折りたたむ」/「つぶす」ことで、気に入らない祖先のコミットを取り除くことができます。これには、標準のhistedit 拡張機能を使用します。

実行するだけ

$ histedit 4948

エディタが開きます。その編集には、histedit の指示として機能するファイルが含まれています。デフォルトでは、すべての変更セットは変更されていませんが、行頭のキーワードを変更してこれを変更できます。また、行を並べ替えて、対応するコミットを並べ替えることができます。

行頭のキーワードを に変更するfoldと、 histedit にコミットを前のコミットと結合するように指示します。そうすれば、履歴を次のように変更できます

4978 local commit 4
  |
  |
  |
4977 local commit 3
  |
  |
  |
4948  local commit 1

local commit 2したがって、 で行った変更をに「折り畳み」ますlocal commit 3

于 2014-03-12T13:23:59.733 に答える