1

「hg commit --amend」機能を使用してリポジトリのコミット メッセージを変更しようとしているときに ...

「hg_amend」という名前の新しいブランチを作成し、いくつかの変更をコミットしてレポにプッシュしました。繰り返しますが、以前のコミットに関連するいくつかの変更を行う必要があります。だから私はいくつかの変更を行い、「hg add」、「hg commit --amend」、「hg phase --draft --force」を使用してそのファイルを追加しようとしました。および「hg push -f」。

この後、同じヘッドで作成された新しいブランチをbitbucketにチェックインしました。

よろしくお願いします!!

ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1

1

あなたの質問には実際の質問はありませんが、次の2つを想定します。

  1. なぜ頭が二つあるのですか?

  2. 頭が一つだけになるように状況を変えるにはどうすればよいでしょうか。

1) に対する答えは簡単です: チェンジセットを公開したからです。bitbucket リポジトリは公開リポジトリ (デフォルト) として構成されているため、そこにプッシュされたすべての変更セットは変更不可になり、bitbucket リポジトリとローカル リポジトリの両方でパブリック フェーズになります。そのリポジトリにすでにプッシュされている変更セットは変更できません。を使用hg push --forceすると、実際に新しいヘッドをレポにプッシュできることと、新しいヘッドをプッシュしようとしたときに通常受け取る警告に「さようなら」と喜んで言うことが保証されました。Mercurial を使用すると、push コマンドは厳密に追加専用になります (git とは異なり、間違ったコミットを強制すると、多くの再構築作業への道になる可能性があります)。

2) の答えはより難しくなり、いくつかの選択肢があります。おそらく最も簡単なのは、bitbucket インターフェースを使用して、最後のコミットでプッシュしたすべての変更セットと、さらに修正しようとした変更セットを削除することです。その後、プッシュを再試行します。それは今のところそれを修正する必要があります。

bitbucket の現在の機能について 100% 確信があるわけではありません。(まだ) 廃止マーカーの交換をサポートしていないと聞いたので、この状況を回避するのは非常に困難です。ただし、リポジトリを非公開に設定でき、フェーズをサポートします。したがって、デフォルト フェーズもドラフトである場合、フェーズはプッシュ時に変更されません。そして、すでにプッシュされている変更セットを修正することを避けます。または、元の changesetID を使用して廃止された head を修正して閉じます。これにより、少なくとも bitbucket には表示されなくなります。

于 2015-09-17T14:13:16.393 に答える