과거의 버전으로 돌아가기, COMMIT 취소하기


  • git reset "버전id" --hard : 버전id의 commit으로 돌아가는 명령
  • git revert "버전id" : 버전id의 commit을 취소하면서 새로운 버전을 생성하는 명령


과거 버전으로 돌아가는 일은 항상 신중하고 잘 점검해서 사용해야 한다.

reset은 공유나 협업을 할 때에는 절대 사용하지 않는다.

reset을 하는 commit은 나의 컴퓨터에만 있는 버전에 대해서만 작업한다.



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


  • 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


+ Recent posts