-
Git 커밋한 내용 수정하기, 각 단계별 상태 알아보기Git&GitHub/Git 사용방법 2022. 5. 18. 12:00728x90
<커밋기록 자세히 보기 - git log>
git log 명령을 입력하면 지금까지 만든 버전이 화면에 나타나고
각 버전마다 설명도 함께 나타납니다.
git log를 입력했을때의 화면을 더 자세하게 준비했습니다,
커밋해시는 커밋을 구별하는 아이디라고 생각하면 쉽습니다.
HEAD->master는 가장 최신이라는 의미입니다.
Author는 작성자정보이며, Date는 버전이 언제 만들어졌는지 나타냅니다.
그 아래에는 작성자가 기록한 커밋 메시지가 나옵니다.
<변경 사항 확인하기 - git diff>
이제까지 따라오셨다면 hello.txt에는 숫자 1,2 가 입력되어 있고,
로컬 레포지토리에는 2개의 버전이 저장되어 있을겁니다.
1. 빔에서 hello.txt를 열고 기존 2를 two로 변경해봅시다
$ vi hello.txt
2. git status로 확인해보면 hello.txt 파일이 수정되었고,
아직 스테이징 상태가 아니라고 나옵니다.
$ git status
3. 방금 수정한 hello.txt와 최신 커밋의 hello.txt가 어떻게 다른지 확인해보겠습니다.
$ git diff
4. 제가 빨간 박스 친곳을 보시면 윗부분에는 -2라고 되어있죠?
이건, 2를 지웠다는 뜻입니다. 밑의 +two는 two라는 내용이 추가되었다는 것입니다.
5. 이어지는 실습을 위해 hello.txt를 원래대로 되돌려놓겠습니다
two를 2로 돌리시면됩니다.
<tracked 파일과 untracked 파일>
git status 명령을 사용하면 파일 상태와 관련된 여러 메시지가 나타납니다.
작업트리에 있는 파일은 크게 tracked 상태와 untracked 상태로 나뉩니다.
두 상태가 어떤 의미인지 알아보겠습니다.
1. 빔에서 hello.txt 파일을 열고 숫자 3을 추가한 후에 저장합니다.
$ vi hello.txt
2. 빔으로 hello2.txt라는 새로운 파일을 만들어보겠습니다.
여기에는 a b c d를 각줄에 입력하겠습니다.
$ vi hello2.txt
3. 이제 hello.txt와 hello2.txt가 모두 작업트리에 있을텐데요.
git status 명령을 사용해 어떤 상태인지 확인해봅시다.
$ git status
4. 앞에서 커밋했던 hello.txt파일은
Changes not staged for commit: 이라고 되어있습니다.
변경된 파일이 아직 스테이지에 올라가지 않았다는 뜻입니다.
modified라고 되어있어서 hello.txt가 수정되었다는 것을 알 수 있습니다.
이렇게 깃은 한번이라도 커밋한 파일의 수정여부를 계속 추적합니다.
깃이 추적하고 있는 파일을 tracked 파일이라고 합니다.
반면에 hello2.txt파일 앞에는 아무것도 없고 바로 위에는
Untracked files: 이라고 되어있습니다.
hello2.txt 파일은 한번도 깃에서 버전관리를 하지 않았기 때문에
수정내역을 추적하지 않습니다.
그래서 Untracked 파일이라고 합니다.
5. 수정했던 hello.txt와 hello2.txt 파일은 모두
git add 명령을 사용해서 스테이지에 올릴 수 있습니다.
$ git add hello.txt
$ git add hello2.txt
6. git status를 사용해서 상태를 확인해보겠습니다.
마지막 버전이후에 수정된 hello.txt는 modified로 표시되고,
한번도 버전관리를 하지 않았던 hello2.txt는 new file:로 표시됩니다.
또한 tracked 파일이나 untracked 파일 모두
스테이지에 문제없이 올라온 것을 확인할 수 있습니다.
7. 이제 커밋해봅시다. 이 커밋에는 hello.txt를 수정한 내용과
새로만든 hello2.txt 내용이 다 포함됩니다.
다음과 같이 입력해봅시다. 성공적으로 커밋이 되었다면 로그도 확인해보겠습니다.
$ git commit -m "message 3"
$ git log
8. message 3이라고 붙인 커밋이 보이지만
각 커밋에 어떤 파일이 관련되어있는지 알기 힘듭니다.
커밋에 관련된 파일과 함께 살펴보려면 git log 명령에 --stat 옵션을 사용합니다.
$ git log --stat
. 가장 최근의 커밋부터 순서대로 커밋 메시지와 관련 파일이 나열됩니다.
message 3 커밋은 hello.txt, hello2.txt 파일과 관련되어 있고
message 2 커밋은 hello.txt 파일과 관련되어 있다는 것을 알 수 있습니다.
로그 메시지가 너무 많을 때는 한 화면식 보여줍니다.
enter키를 누르면 다음 로그화면을 볼 수 있고, q를 누르면 로그화면을 빠져나와 다시 깃 명령어를 입력할 수 있습니다.
** .gitignore 파일로 버전관리에서 제외하기 **
버전 관리 중인 디렉터리 안에 버전관리를 하지 않을 특정 파일 또는 디렉터리가 있다면, .gitignore 파일을 만들어 목록을 지정할 수 있습니다. 빔으로 .gitignore 파일을 만들어 그 안에 버전 관리하지 않을 파일 또는 디렉터리 이름이나 파일 확장자를 입력하면 됩니다.
ex)
mynote.txt
temp/
.swp
<unmodified, modified, staged 상태>
한번이라도 버전을 만들었던 파일은 tracked 상태가 됩니다. tracked 상태인 파일은 깃 명령으로 파일 상태를 확인하면 현재 작업트리에 있는지, 스테이지에 있는 지 등 더 구체적인 상태를 알려줍니다. 깃의 커밋 과정 중에서 tracked 파일 상태가 어떻게 바뀌는지 확인해보겠습니다.
1. ls -al 명령을 사용해서 hello 디렉터리를 살펴보면 버전을 저장한 hello.txt와 hello2.txt가 있습니다. 여기서는 hello2.txt의 파일의 상태를 따라가보겠습니다. 앞에서 버전을 저장한 뒤로 아직 아무 파일도 수정하지 않은 상태입니다.
2. 깃의 상태와 파일의 상태를 확인해보겠습니다
$ git status
3. 작업트리에는 아무 변경사항이 없습니다. working tree clean이라고 나타나면 현재 작업트리에 있는 모든 파일의 상태는
unmodified, 즉 수정되지 않은 상태입니다.
4. hello2.txt 파일을 수정해보겠습니다.
hello2.txt에서 a만 남기고 나머지내용을 삭제합니다
$vi hello2.txt
5. 다시 git status 명령을 실행합니다. hello2.txt 파일이 수정되었고
아직 스테이지에 올라가지 않았다고 나타납니다.
Changes not staged for commit: 이라는 메시지가 나타나면
파일이 수정만 된 modified 상태입니다.
$ git status
6. git add 명령을 사용해 스테이지에 올리고 git status 명령을 실행해봅니다.
이렇게 Changes to be committed: 라는 메시지가 나타나면 커밋 직전의 상태,
즉 staged상태입니다
7. 스테이지에 있는 hello2.txt 파일을 커밋하고 git status로 확인합니다.
커밋을 끝내고 난 후 hello2.txt 파일의 상태는 수정이 없던
unmodified로 돌아간 것을 볼 수 있습니다.
$ git commit -m "delete b,c,d"
$ git status
지금까지 깃에서 버전을 만드는 과정에서 어느단계에 있는지에 따라 달라지는 파일 상태를 살펴보았습니다.
요약하자면 다음과 같은 단계를 거칩니다
untracked -> unmodified -> modified -> staged
** 방금 커밋한 메시지 수정하기 **
방금 커밋한 커밋메시지를 잘못 입력하였다면 다음과 같이 입력합니다
$ git commit --amend
명령을 입력하면 빔이 실행되면서 원래 커밋 메시지가 위쪽에 나타납니다.
빔을 수정하는 방식으로 하고 나면 다음과 같이 수정된 것을 확인할 수 있습니다
728x90'Git&GitHub > Git 사용방법' 카테고리의 다른 글
Git 작업 되돌리기 (0) 2022.05.18 Git 으로 리눅스 명령어 연습 (0) 2022.05.18 Git의 기초적인 사용법 (stage와 commit) (0) 2022.05.18 Git 명령어 모음 (0) 2022.05.18