21

この動作が奇妙かどうかはわかりませんが、次のようになります。ファイルを実行するとgit blame、最初のコミットからのファイル内の行には、次のように先頭にキャレット(^)が付いたSHAが含まれているようです。

^ bb65026(Brian Danielak 2012-10-27 19:11:54 -0700 1)こんにちは、世界!
bbcd4a96(Brian Danielak 2012-10-27 19:11:54 -0700 2)こんにちは!

再現する手順

ターミナルプロンプトから:

mkdir newProject
cd newProject
git init
echo 'hello, world!' >> testFile.txt
git add testFile.txt
git commit -m "Initial Commit"
git blame testFile.txt

次に、私のように、非難の出力に先頭の注意が含まれていることを確認します(ただし、SHAは一致しない可能性があります)

^bb65026 (Brian Danielak 2012-10-27 19:11:54 -0700 1) hello, world!

テストとして、ファイルに2行目を追加して再コミットし、最初の行のハッシュのみに先頭のキャレットが含まれていることを確認できます。

echo 'hello again!' >> testFile.txt
git add testFile.txt
git commit -m "Initial Commit"
git blame testFile.txt

私の非難の出力は次のようになります。

^ bb65026(Brian Danielak 2012-10-27 19:11:54 -0700 1)こんにちは、世界!
bbcd4a96(Brian Danielak 2012-10-27 19:11:54 -0700 2)こんにちは!

なぜこれが起こるのか、そして私がそれを期待すべきだったかどうかを誰かが説明できますか?行がリポジトリの最初のコミットから来たときにのみ発生しますか?もしそうなら、なぜですか?

4

2 に答える 2

23

git blameのドキュメントには、実際には「境界コミット」に使用されているものとしてキャレットが記載されています。これは、「この非難の範囲で最も古いコミット」のようなものを定義しているように見えます。あなたの場合は、プロジェクトの最初のコミットです。しかし、いくつかの異なるオプションを使用すると、3週間前からのコミットを非難しただけかもしれません。

于 2012-10-28T02:48:02.057 に答える
4

非常に古いリポジトリで突然この問題に遭遇し、混乱しました。

問題は、ある時点でどういうわけか浅いクローンを取得したことでした。簡単git fetch --unshallowにそれを改善しました。

于 2016-11-30T08:20:43.107 に答える