Git commit

조 은길·2021년 2월 21일
1
post-thumbnail
post-custom-banner

만약 git에게 git init로 지정된 폴더의 파일들의 상태를 하나의 version으로써 기억하게 만들고 싶다면 즉,

"Hey Git!! 나중에 문제 생기면, 이 상태로 돌아올게!! 지금의 상태를 기억해줘~"

이 말을 명령어로 나타낸 말이

=> git commit

하지만, commit을 할 때는 반드시 메모를 남겨줘야 한다. 각각의 commit이 무엇을 위한 것인지 알기 위해서 제대로 된 message를 남겨주자!!

git commit -m "Initial commit"

commit을 한 번에 2개 이상 할 때는

git commit code1.txt code2.txt -m "메세지"

참고로 -a는 all 이라는 뜻이라 특정파일을 하려면 -m만 해줘야 된다.

" " => 이 안이 메세지를 남기는 곳이 된다.

내가 무엇을 수정했는지 상세하게 적어주자!!

" 나중에는 몇 년전 Commit까지 뒤지는 상황이 옵니다. 미래의 나를 위해서 무엇을 바꿨는지 메세지로 자세하게 적어줍시다. "

자 이제, Commit한 이후의 상태를 보자.

(TMI -> 이 부분은 그냥 넘어가도 좋다)

[ 맨 밑에서 바로 위에 줄의 5b1f790은 각 commit의 고유한 일련번호로 절대로 중복될 일이 없다. 상품의 일련번호 정도 생각하면 이해가 쉽다.
그리고 맨 밑에 줄은 5개의 파일이 변경됐고, 총 17 줄이 추가가 됐다는 말이다. ]

이제는

- git log

-> 내가 한 commit들의 목록을 볼 수있다.

참고로, git을 처음 설치한 사용자들은 Author와 이메일을 지정해줘야 한다.
안 그러면, commit 도중에 에러가 뜬다!!

먼저, 이메일을 설정해주는 방법은

git config --global user.email "당신의 이메일"

그리고 Author 설정법

git config --global user.name "당신의 유저네임"

다음으로 Git에 commit 된 파일들이 수정 되었을 때의 상황을 알아보자!

예를 들어, code1.txt 에
1. 조은길
2. 깔깔깔깔깔깔깔
3. 미니언

라는 텍스트가 저장되있다고 가정해보자

내가 Commit이 된 상태에서 조은길 => 조은길 바보 로 바꿔준다면,

git status를 확인했을 때, 예민한 git님은 모든 것을 알고 계신다.

여기서 내가 해줄 수 있는 일은 2가지인데,
1. git add 와 git commit을 이용해서 변경된 파일을 Commit해준다.

원시적으로 git add code1.txt -> git commit -m "조은길 바보"로 해줄 수 있지만, 그냥 한 줄로
git commit -am "조은길 바보"
도 가능하다. -a 는 add 해준다는 뜻이고 (다른 상황에서는 "all"로도 해석됨), m은 메세지를 넣어준다는 의미이다. 이렇게 하면, add와 commit 그리고 메세지가 한 줄로 가능하다.

commit 후에는 이런 라인이 뜨는데, 여기서 git이 어떤 식으로 이 파일의 수정을 인식했는지 알 수있다.

사람의 시선으로는 "조은길"이라는 줄이 "조은길 바보"로 바뀐 것이다.
그러나 Git의 시선으로는 "조은길" 삭제 ( 1 deletion ) => 그 자리에 "조은길 바보" 라는 새 줄 추가 ( 1 insertion )
이런 식이 된다.

2. git checkout -- <파일>로 변경된 사항을 버린다.

=> 즉, 수정된 부분을 원래대로 되돌리는 명령어이다.

예를 들어, 현재 수정된 code1.txt 에
1. 조은길 바보
2. 깔깔깔깔깔깔깔
3. 미니언

=> git checkout -- code1.txt
(-- 다음 띄어쓰기 중요)

이후에 다시 code1.txt를 열어본다면,

파일 수정 전 상태인
1. 조은길
2. 깔깔깔깔깔깔깔
3. 미니언

=> 로 되돌아와있다.

마지막으로,

- git diff

=> commit 된 파일이 수정되었을 때, 어떤 부분이 수정되었는지 확인이 바로 가능하다.

파일이 여러 개이면, 어떤 부분이 바뀌었는지 바로 알기가 어렵다. 그럴 때 자주 쓰이는 명령어이다.

참고로, 한글은 추가적인 작업없이는 <88>이런 식으로 깨진다.
빨간색은 지워진 줄이고 => 1 deletion
그 자리에 새로운 줄을 집어넣는데 => 1 insertion
새로운 줄에서 바뀐 것은 really라는 단어가 추가된 것뿐이다.

이 정도로 해석이 가능하다.


[ Optional TMI ]

  • eslint 파일로 인해 commit이 안되는 경우
    => 가끔 프로젝트 하다가 eslint 파일 때문에 commit이 안 되는 경우가 종종 있는데, 그 때 쓸 수 있는 명령어 하나 소개하겠다.

git commit --no-verify -m "커밋내용"

=> eslint 내부에 코드상의 오류가 있으면, commit을 막는데 이 명령어를 쓰면 오류를 무시하고, commit 할 수 있게 된다.

=> eslint 룰에 맞게 코드를 작성해볼 수도 있지만, 귀찮다면 그냥 이 명령어를 써도 된다.

여기까지 git commit 편 끝!!


자료 출처 및 참고 자료

https://www.zerocho.com/category/JavaScript

https://www.youtube.com/watch?v=W0aofTKVwJs

https://www.youtube.com/watch?v=7Ab5DIWYUMw

https://www.geeksforgeeks.org/ultimate-guide-git-github/

https://www.geeksforgeeks.org/useful-git-commands-and-basic-concepts/

profile
좋은 길로만 가는 "조은길"입니다😁
post-custom-banner

0개의 댓글