git diff라고 하면, stage area와 working directory의 차이를 보여준다고 하는데,
맞나?
예를 들어서 repo를 만들고, cat.txt라는 파일을 만들었어.
그리고 git diff하면 차이를 보여주지 않아. 분명히 staging area에는 cat.txt가 없어. 그런데 w.d에는 있잖아.
그러면 차이를 보여줘야 하는데 보여주지 않아. 왜 그런거지?
그러면 commit을 만든후 다시 cat.txt를 수정했어.
그러면 w.d에는 cat.txt가 수정되었지만, stage에는 없어. 이상태에서 git diff하면 차이를 보여줘.
그럼 질문.
둘다 w.d에는 cat.txt의 변경사항이 있고, stage area에는 없어. 그런데 어떤것은 diff결과를 보여주고 어떤 것은 보여주지 않아.
왜 그런거임?
git diff에 파라미터 따로 안넘기면 HEAD랑 비교하는걸껄 HEAD는 마지막 커밋이야
그게 나도 고민한거였는데, HEAD(last commit)과 왜 비교를 하냐는거지. git diff에 인자가 없으면 W.D와 stage를 비교한다고 document에 나와있거든..HEAD와 비교한다는건 없어. git diff HEAD라고 명시하는경우는 따로 있고...내가 얻은 결론은 git diff는 tracked file만 비교한다는 것으로 이해했어. 그래서 마치 HEAD와 비교하는 것처럼 보이는거지. 왜냐면 commit을 한후 git diff에서 보이는것은 tracked되기 때문이고, commit을 하지않고 git diff에서 안보이는 이유는 해당 파일이 tracked되지 않았기 때문이라고 해석했음.
그렇네 git diff 기본값이 stage 된것들 중에 변경점만 보여주네
이전에 커밋하면서 했든 새로 했든 어떻게든 git add를 한것들만 보여주는듯
근데 생각해보니까 add 안한 파일을 diff로 비교한다는게 넌센스아님? 원래 내용이 어땠었는지 어떻게알아
"근데 생각해보니까 add 안한 파일을 diff로 비교한다는게 넌센스아님? 원래 내용이 어땠었는지 어떻게알아" => 맞아 의미적으로 나도 당연히 그렇게 생각하지. 그런데 git을 다시한번 보고 있는중인데.. 예전엔 너말대로 그렇게 넘어갔는데, 그냥 문서를 보고 문서그대로 따라가다보니, 한번 테스트해볼까 해서 한거임. 실전에선 의미가 없다는것도 알아. 왜냐면 비교할껏도 없는데 비교할일이 없거든..