파일의 변경 사항 확인하는 법


  • git log -p : 
    • 로그에서 출력되는 버전 간의 차이점을 출력하고 싶을 때 사용
    • commit과 commit 사이에 소스상의 차이점을 알 수 있다.
  • git diff (버전 id1)..(버전 id2) :
    • 두 버전간 소스 코드상의 차이점을 비교할 때 사용
    • 각각의 commit은 고유 번호를 가지고 있다.
  • git diff :
    • add되는 파일, 즉 commit하기 전에 이전 버전과의 차이점을 비교할 때 사용

  • git log, git diff 종료 방벙 : q + Enter
  • git bash에서 복사, 붙여넣기
    • 복사 : Ctrl + Insert
    • 붙여넣기 : Shift + Insert

jungd@DESKTOP-KCGRLA3 MINGW64 ~/git_project/gitfth (master)
$ git log -p

commit f6626ce8b1c5df971684a817cdf44c4c225ccba3
Author: username<email>
Date:   Tue Mar 19 23:14:45 2019 +0900

    4

diff --git a/f1.txt b/f1.txt
index e77ea5a..bf2a181 100644
--- a/f1.txt     //버전3에서의 f1.txt파일 내용
+++ b/f1.txt //버전4에서의 f1.txt파일 내용
@@ -1 +1 @@
-souce : 2     //버전3에서는 내용
+f1.txt :44     //버전4에서의 내용

commit af291caa485e5defcb6eff80423a8ce7e4085b51
Author: username<email>
Date:   Tue Mar 19 23:07:59 2019 +0900

    3

diff --git a/f3.txt b/f3.txt
new file mode 100644
index 0000000..e77ea5a
--- /dev/null //버전2의 내용, 파일이 없음.
+++ b/f3.txt //버전3의 내용, f3.txt 파일이 있음
  //버전3에서 f3.txt 파일이 추가 됐다. 라는 내용
@@ -0,0 +1 @@
+souce : 2     //버전3에서의 f3.txt의 초기 내용
  //버전3이 만들어지면서 f3.txt 파일이 생성되었고, 그 내용은 source : 2 였다는 것임




jungd@DESKTOP-KCGRLA3 MINGW64 ~/git_project/gitfth (master)
$ git diff
diff --git a/f1.txt b/f1.txt
index bf2a181..579b555 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1 +1 @@
-f1.txt :44 //그 이전
+f1.txt :5 //현재
=> 작업을 할 때 커밋하기전에 자기가 작업한 내용이 문제가 있는지 없는지를 마지막으로 리뷰할 수 있는 기회를 제공.
 코드들의 차이점을 통해서 실수한게 없는지 확인할 수 있는 마지막 기회를 버전관리 시스템이 제공한다.

jungd@DESKTOP-KCGRLA3 MINGW64 ~/git_project/gitfth (master)
$ git add f1.txt

jungd@DESKTOP-KCGRLA3 MINGW64 ~/git_project/gitfth (master)
$ git diff

jungd@DESKTOP-KCGRLA3 MINGW64 ~/git_project/gitfth (master)
$ //commit 후 git diff를 해보면 아무것도 안 뜬다.



버전의 효용은 버전 간의 차이점을 알 수 있고, 과거 특정한 시점의 내용을 알 수 있으며 과거로 돌아갈 수 있다.



git 명령어 입력시 뜨는 에러


warning: LF will be replaced by CRLF in f2.txt.

The file will have its original line endings in your working directory


맥, 리눅스를 사용하는 개발자와 윈도우를 사용하는 개발자가 Git으로 협업할 때 발생하는 에러이다.


줄바꿈 문자(CR, LF)

Mac, Linux -> LF(Line Feed) 문자만 사용

Window -> CR(Carriage Return)+LF(Line Feed) = CRLF, 문자를 둘 다 사용

==> Git이 어느 쪽을 선택할지 혼란이 오게 되어 에러가 발생하게 된다.

해결법은 자동 변환을 해주는 기능인 core.autocrlf 를 켜주면 된다.



core.autocrlf 의 기능?

  • 개발자가 git에 코드를 추가할 때 CRLF -> LF로 변환
  • git의 코드를 개발자가 조회할 때 LF -> CRLF로 변환


Window 사용자 

> git config --global core.autocrlf true

(해당 프로젝트만 적용할 때는 --global을 빼준다.)


Mac, Linux 사용자

> git config --global core.autocrlf true input


변환 기능을 사용하지 않고, 에러 메세지만 안나오게 작업할 경우

> git config --global core.safecrlf false



Git은 왜 add를 시켜야 하는걸까?
commit 하기 전에 add를 시켜주는 이유에 대해서 알아보자.

이 때 선택적으로 파일을 


$ git add f1.txt


$ git status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)


        modified:   f1.txt    //쉽게 말하면 commit 대기 상태


Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)


        modified:   f2.txt


$ git commit    //commit 대기 상태에 있는 파일들만을 버전에 포함시킨다.

[master f6626ce] 4

 1 file changed, 1 insertion(+), 1 deletion(-)    //add 시킨 f1.txt만 선택적으로 commit이 된다.


  • 프로젝트시 여러 소스 코드를 수정하게 됨
  • commit 하나는 하나의 작업을 담고 있는 것이 이상적이지만, 많은 소스 코드를 수정하다 보면 commit을 놓치게 되는 상황이 생길 수 있다.
  • 그렇게 많은 작업들을 담은 거대한 버전 하나를 만들어야 할 때는 commit의 시기를 놓쳤을 때.
  • 이 때 git은 add라는 과정을 통해 commit을 할 수 있는 상태로 만들어준다.
  • commit 대기상태(stage area)에 있는 파일은 commit시 repository에 저장된다.


+ Recent posts