リモートからレポを複製しました。
私はソフトウェアを構築し、約 4 つのファイルを変更し、それらをローカルにコミットしました。そして、それらを表示できるパッチを作成したいと考えています。
私が実行すると:
hg diff -U8p abc efg pqr > patch_file
行った変更が表示されません。hg diff
現在のファイルと最後にコミットされたファイルのみを比較しますか?
これを機能させるにはどうすればよいですか?
diff
特定のリビジョンに対する作業ディレクトリには、次REV
を使用します
hg diff -r REV
2 つのリビジョンを相互に比較するには、次を使用します。
hg diff -r REV1 -r REV2
比較するリビジョンを特定するには、 の出力を調べますhg log
。これを頻繁に行う予定で、ベース リビジョンが修正されている場合は、次のように名前を付けます (例: whatipulled )。
hg tag -r REV whatipulled
whatipulled
その後、数値のリビジョン ID (またはハッシュ) の代わりに、リビジョンとして指定できます。
コミットコメントなどを含む、よりリッチな形式で差分をエクスポートするには、この目的のために設計された以下を使用することもできます。
hg export -r REV
hg bundle -r REV
同様の情報を含むバイナリ ファイルを生成するもあります。
ただし、変更を親リポジトリに送り返す場合、最善の方法は を使用することhg push
です。変更セットを親に直接伝えます。どの変更セットをプッシュする必要があるかを知る必要さえありません。もちろん、親リポジトリにプッシュする権利が必要です。
hg push [ parent_repo_url ]
(そこからプルした場合、mercurial は既にパスを認識しているはずなので、省略できます)。
親リポジトリが bitbucket にあり、pu がない場合は、bitbucket に独自のアカウントを設定し、ローカル リポジトリからそのアカウントにプル/プッシュしてから、プロジェクト リポジトリに「プル リクエスト」を発行して依頼することができます。あなたから引っ張る。
上記のすべてには、動作を制御するオプションがあります。
からhg help diff
リビジョンが 1 つだけ指定されている場合、そのリビジョンは作業ディレクトリと比較されます
-r の diff では、古いヒント (最新の「あなたの」変更セットではない) を使用し、比較する前にヒント (最新の変更セット) に更新する必要があります。
変更セットで一部のバイナリ データが変更された場合は、忘れずに -g オプションを使用してください。
hg up & hg diff -r <CSET> -g > some.patch
アクティブな変更セットの差分を改善し、ベースの変更セットを検出するための手作業を必要としません (単一ブランチでの線形履歴 == の場合)
hg diff -r "parent(min(outgoing()))" -r tip
デフォルトでhg diff
は、現在チェックアウトされているファイルと最後のコミットを比較します。オプションを追加することでこれを変更できます。
-r REV
現在チェックアウトされているファイルを特定のリビジョンと比較しますREV
。-c REV
リビジョンによる変更を表示しますREV
したがって、あなたの場合hg diff -c 123 ...
、コミット123の差分が得られます。
私の推測では、それhg outgoing
はまさにあなたが望むものです.ローカルでコミットしたものとデフォルトのリモートサーバーにあるものを比較し、それらの変更セットまたは-p
コミットのリストを表示します.
ただし、これは各変更セットを個別に表示します。すべての変更を組み合わせて表示したい場合は、 hg diff -r HERE -r THERE
or-r HERE
がデフォルトであるため、実行する必要があります。hg diff -r THERE
リモートが持っている最後の変更セットがどこにあるのか、「そこに何があるかを知るにはどうすればよいですか」というコメントであなたが尋ねたのを見て、あなたはその答えを得ることができますhg outgoing
. hg outgoing
変更セット 66、67、および 68 を送信することが示されている場合、hg diff -r 65
既存のもの (65) とローカルのもの (68) を比較する必要があります。