問題タブ [git-blame]
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 - ファイル内で移動/削除されたコードの Git 追跡ブロック
コミットの本文 (コミットのタイトル/メタデータではありません) に古いコミットがありmd5hash
ます。myfile.extension
SOME CHANGE
各差分を検査することなく、 fromにSOME CHANGE
至るまでのコミットで変更された (存在するだけでなく) コミットのリストを生成するにはどうすればよいですか? (残念ながら、現在のケースでは多くあります。)HEAD
md5hash
私は試しましたが、これはファイル内にあるgit rev-list --all | xargs git grep 'SOME CHANGE'
すべてのコミットを見つけるようです。SOME CHANGE
git blame
SOME CHANGE
行が変更されて移動したため、役に立たないようです。
git - 誰かが git で変更した文字列を検索するにはどうすればよいですか?
を使用して特定の文字列を検索したいのですが、探している文字列が特定の人によって変更されたことを知るために、git grep
を使用して結果をフィルタリングしたいと思います。git blame
それらをどのように組み合わせて、必要な結果を得ることができるかわかりません。
ご協力ありがとうございました。
git - --no-ff マージはどのように分割と非難を破りますか?
Gitワークフローの記事を理解すると、
そこで、新しいルールを追加します。「フィーチャー ブランチにマージするときは、–no-ff を使用して新しいコミットを強制します。」これで作業が完了し、先に進みます。
ある日、本番環境で重大なバグを発見し、いつ導入されたかを追跡する必要があります。bisect を実行しますが、チェックポイント コミットに到達し続けます。あなたはあきらめて手で調べます。
バグを 1 つのファイルに絞り込みます。過去 48 時間でどのように変化したかを確認します。それが不可能であることはわかっていますが、Blame はファイルが何週間も変更されていないと報告しています。マージされたときではなく、最初のコミット時に Blame レポートが変更されることが判明しました。あなたの最初のチェックポイント コミットは数週間前にこのファイルを変更しましたが、変更は今日マージされました。
ノーフバンドエイド、壊れた二等分、および非難の謎はすべて、ドライバーをハンマーとして使用しているという症状です.
git merge--no-ff
は、早送りマージを明示的に防止する場合です。ただし、あるコミットが別のコミットの直接の祖先でない場合、早送りは行われません。これは、開発中のまれなシナリオです。つまり、ほとんどのマージは非早送りタイプです。では、渡すと and--no-ff
の機能がどのように損なわれるのでしょうか?bisect
blame
git - git Blame 削除されたファイル、自動的に
git blame
以前に削除されたファイルで実行する方法はよくある質問です (でgit rm
)。古いファイル名で実行すると、存在しないファイルと同じエラーが発生します。
(以前のコマンドに対して git によって出力された応答は、簡潔にするために省略されています。)
一般的な解決策はgit log --stat
、ファイルが削除されたリビジョンを探すことです。その後、そのリビジョンの親を に渡すことができますgit blame
:
これは機能しますが、このようにログを手動で検索するのは面倒です。a
gitに「過去のリビジョンで呼び出されていたファイルを調べたい」と伝える方法はありませんか? 私は次のような簡単なものを望んでいます
その名前のファイルのリポジトリの履歴全体を自動的にチェックします。
git - IntelliJ 注釈と git の非難
IntelliJ の注釈機能を使用して、ファイル内の行を最後に変更したエディターを確認しています。
現在、JGit を使用して同じ注釈を読み取っていますが、それらは異なります。私にとっては、Intellij は、コミット間で行が変更されていないことを確認し、古いコミット メッセージを引き続き使用しているようです。JGit はそれを認識しないため、別のメッセージを作成します。
JGit Blame と IntelliJ の動作が異なることを確認できる人はいますか? 理由は何ですか?IntelliJをJGitと同じように動作させるにはどうすればよいですか? 多分IntelliJは空白の変更を無視しますか?
IntelliJ 15.0.1 と JGit 4.1.1 を使用しています
git - Git: `git bisect` と `git Blame` の `--full-history` に相当
私は約 7 年間、Git を多用しています。数日前、私は驚くべき振る舞いを見つけました。を見つけgit log
、この奇妙な動作を示しgit blame
ました。友人が私の問題を解決したフラグについて教えてくれました。私自身の教育のために、 と の同等の修正があるかどうかを知りたいです。git bisect
--full-history
git log
git blame
git bisect
このレポで問題を確認してください: https://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
そのログは次のとおりです。
最初のコミットで、ファイルcoffee
が追加されました。commit3068c7d
で、「sugar」という行をcoffee
ファイルに追加しました。しかし、その後、このブランチをdevelopment
ブランチにマージしましたが、そのマージでミスが発生し、「sugar」行が削除されてcoffee
空のままになりました。その後、別の commitb7a8d7a
が追加され、無関係な変更が加えられました。
今、私は自分のコーヒーを見て、砂糖が入っていないことを発見しました. コーヒーに砂糖を入れたことをはっきりと覚えています。を実行するgit log coffee
と、次の出力が得られます。
それでおしまい。git log
砂糖を追加した元のコミットも、それを削除したマージも示していません。欠落している 2 つの非常に関連性の高いコミット。
手動でコミットを見つけるのがはるかに難しい大規模なエンタープライズ リポジトリで発生したため、この問題に約 1 時間イライラしました。
また、 と を使用して 2 つのコミットを特定しようとしましたが、これらのツールはどちらも 2 つのコミットを無視しましたgit bisect
。すべてのandアクションを完了した後、間違ったコミットを指摘してくれました。git blame
git bisect
git bisect bad
git bisect good
--full-history
それから、最初に言ったように、友人が私を旗に向けました:
関連する 2 つのコミット (砂糖を追加するコミットとそれを削除するマージ) が示されているので、これは嬉しいことです。だから私の問題は解決しました。でも、作り方や振る舞い方も知りたいです。git bisect
git blame
誰かがたまたま知っていますか?