5

git guiを使用して、コミット用にステージングする行を選択します。これは通常、チャームのように機能します。コマンドラインで同じことを行うオプションを知っています。

スクリーンショットに示したように、ファイルの最後に最初に新しい行がない場合は常に、git guiがこれを認識し、エディターに警告メッセージを追加します。

Git Gui

問題

改行の欠落に起因する問題は、個々の行をステージングおよびコミットできなくなることです。右クリックして特定の行を選択Stage line for commitし、コンテキストメニューから選択すると、エラーメッセージがポップアップ表示されます。

エラー:致命的:11行目でパーチが破損しています。

この問題はオペレーティングシステムに固有のものではなく、Windows、MacOSX、およびLinuxで発生する可能性があります。個々の行を選択し続ける前に、ファイルに新しい行を追加してこのバージョンをコミットすると、問題を回避できることを知っています。

問題を再現する手順

  1. 新しいリポジトリを初期化します。
  2. それぞれ「Hallo」という単語を含む3行のコンテンツを含むファイルを作成します。ファイルの最後に改行を入れないでください。
  3. ファイルを追加してコミットします。
  4. 同じファイルを編集して、3行の間に単語を入れます。
  5. git guiを開き、変更を1行ずつステージングしてみてください。

リクエスト

問題を回避できるGitの構成があるのだろうか。目的の改行を追加するフックなどの自動化も問題ありません。

バグレポート

バグレポートをGitメーリングリストに送信しました。こちらのディスカッションをフォローして参加できます。

4

2 に答える 2

5

Heiko Voigtのおかげで、動作のバグ修正があります。これはGit-Mergeカンファレンスで修正しました-これを整理してくれたGitHubに感謝します。パッチは現在、メーリングリストで保留中です。マージされてリリースされたらすぐに、この投稿をここで更新します。


最後に、gitgui-0.18.0はgit v1.8.4にマージされ、公式リリース(2013年8月23日)の一部になっています。これで、ファイルの最後の新しい行に関係なく、誰もが行ごとのコミットのステージングを楽しむことができます。平子さん、ありがとうございました!

于 2013-05-10T08:29:09.127 に答える
3

問題を処理するpre-commitフックを見つけました。ただし、実際にファイルをコミットするまで修正が適用されないため、これは完全な解決策ではありません。スクリプトの要点を作成したので、スクリプトを改善したい場合は変更できます。

元のスクリプトはMattBakerによって投稿されました私はそれを新しい行を追加するという事実に減らしましたが、末尾の空白を削除するためのルーチンも含めました。ただし、改行文字に関して1つの変更があり\nます。マットの推奨に反して追加しました。

問題のあるケース:

gitrebaseワークフローでスクリプトを使用しました。これにより、gitは末尾にスペースがあるすべてのファイルを変更しました。その結果、大きな違いが生じました。したがって、スクリプトの使用を検討することをお勧めします。


さらに、フックを複数のリポジトリに統合する方法に関するこの議論は非常に興味深いものでした。独自のフックを設定するときに、これを調べたいと思うかもしれません。

于 2012-11-06T11:56:31.920 に答える