問題タブ [git-patch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - diff と git diff によって作成されたパッチ/ファイルにはどのような違いがありますか?
diff
と で作成されたファイル/パッチの形式の違いは何だろうかgit-diff
。
私diff
は3つ(「通常」、「コンパクト」-c
、「統合」-u
)があることを知っています。
ただし、いくつかの違いがあり、場合によっては自由に交換できない場合がgit diff
ありdiff
ます。そう:
- 同じファイルに対して
git diff
とを使用できるかどうかは、何に依存しますか?diff
- また、フォーマットの違いは何ですか?
- コマンドを交換できない場合 (1. を参照)、他のコマンドで使用できるように、ファイルを他の形式に変換するにはどうすればよいですか?
- コマンドを交換できる場合 (1. を参照): そうすることをお勧めしますか?
- 2 つのコマンドで作成されるファイルに他に顕著な違いはありますか?
git - マージでパッチを適用
アプリ A で 6 つのコミットからパッチを作成し、このパッチをアプリ B に適用したいとします。
パッチを適用しようとすると、名前が異なるか、ファイルがまだ存在しないため、git が文句を言います。
パッチを適用することは可能ですか?
- パッチを適用してファイルを作成しますか? または、既存のファイルのみを更新できますか?
- 命名が異なるため、またはコードを追加する必要があるため、最終的にパッチを適用する前にマージする可能性がありますか?
私が解決しようとしている問題は、アプリ B からアプリ A にコードをコピーすることです。1 つの機能 (複数のコミット) だけを A に組み込みたいため、マージできません。これは git で可能ですか?
git - 単に適用されない手動の git チェックアウト パッチ
私は Git には比較的慣れていませんが、ゲーム デザイン コンテストに参加してきたため、より高度なことを学んでいます。2 つのブランチ間で変更をスプライスしようとしている過程で、私は を紹介されましgit checkout --patch
た。ただし、y
orn
を使用してハンクを適用するだけで機能し、分割も同様に機能するという事実にもかかわらず、 を使用してハンクを手動で編集することを選択するとe
、一貫して失敗します。たとえば、次のパッチを見てください。
これは、分割することで問題を解決できる単純なパッチですが、例として使用します。m_softStun
bool 変数とverticalInput
float 変数の両方を保持しようとしているとします。私がする必要があるのはこれだけのように見えるはずです:
私が行ったのは、の-
前を削除しbool m_softStun
、ドキュメントや他の回答が教えてくれたように、スペースを追加することだけです。
ただし、このパッチを適用しようとすると、次のエラーが返されます。
このエラー、または行番号が異なるバリエーションは、次のすべての修正試行を通じて返されました。
- 標準の Windows 10 メモ帳、メモ帳 ++、さらには Vim を使用しました
- 最初にタブによって消費される空白がないことを確認するためにチェックしました。それを確認するためにVimの16進数分析に入っても
- 行末から改行を削除して保持しようとしました
- Vim、メモ帳、メモ帳++を介してANSIとUTF-8の両方でエンコードしようとしました
- パッチをまったく編集しないようにしましたが、それでもエラーが発生し、git のエラーか、ファイルの保存方法に問題があるのではないかと疑われます。
私は事実上、何がうまくいかなかったのかを理解しようとして頭がいっぱいですが、それを見つけ始めるための技術的知識はありません。16 進数のチェックなどを提案した私の地元の「git ガイ」でさえ、助けることができず、バグ レポートを電子メールで送るように私に送りましたが、これまでのところ何も見つかりませんでした。手動パッチを作成できない理由を誰かが知っていますか?
git - インタラクティブに git リポジトリからパッチを作成する
オープン ソース プロジェクトへのパッチとして公開したいコミットがあるリポジトリがあります。問題は、そのコミットのいくつかの部分に、私が必要とし、自分用に保持したいデバッグ情報が含まれていることですが、このパブリック リポジトリが乱雑になっていることです。
私が探しているのは、 と同様のメカニズムを使用してリポジトリからパッチ ファイルを作成することですgit add -up
。ここでは、相違点のどの部分をコミット用にステージングするかを選択できます。送信できるパッチを作成する方法はありますか?
git - 「git add -e」の実行後に「パッチが失敗しました」および「パッチが適用されません」というエラーが表示される
エラーが発生することなく、Powershell または Git Bash で「git add -e」を実行できないようです。問題のファイル (test3.html) の内容は次のとおりです。
最後の行にキャリッジ リターンがあることに注意してください。
ここで、次のコマンドを実行し、ローカルの git リポジトリからそれぞれの出力を受け取ります。
メモ帳で「git add -e」コマンドを入力すると、次のように表示されます。
最後の行の後にキャリッジ リターンがあります。このファイルは元々、UTF-8 エンコーディングの notepad++ で書かれていました。
メモ帳を閉じるとすぐに、次のエラーが表示されます。
エラー: パッチに失敗しました: test3.html:1
エラー: test3.html: パッチは適用されません
質問: 特に ADD_EDIT.patch で何かを変更していないのに、これらのエラーが発生するのはなぜですか?
変更を個別のハンクに分割し、どの変更をコミットするかを決定する、より複雑なフローを試しました。同様の結果が発生します。そして、最も単純なフローでさえうまくいかない場合、それはどういう意味ですか...
これの背後にある私の理由は、Git に慣れていないので、Git にもっと慣れるためです。私はhttps://git-scm.com/docs/git-addを読んでいて、各オプションに従おうとしています。
私が見逃した可能性のある他の投稿へのヘルプ、提案、または参照はすべて大歓迎です。
編集:
私の構成は次のようになります。
magit - パッチを逆に適用する方法は?
可能であれば、パッチを Magit で逆に適用するにはどうすればよいですか?