상세 컨텐츠

본문 제목

Git 버전관리의 시작, 기본 커맨드 정리

IT/Linux>Shell

by J KIMS 2020. 6. 10. 16:13

본문

반응형

 

 

Git 버전관리의 시작 ✨

 

먼저, 깃은 버전 관리 시스템의 일종입니다.

이렇게 말하면 버전관리가 무엇이냐? 하는 의문이 당연히 따라오겠죠. 

 

예를 들어,

우리가 어떤 코드를 작성하고 있다고 가정해봅시다.

작성 중 일단 오늘은 여기까지 하자 싶어서 저장을 합니다.

 

그러고 다음날 봤더니 코드에 수정할 게 좀 보입니다.

그런데 괜히 잘못 건드려서 프로그램 전체를 망칠 수도 있는 거잖아요?

그래서 원본 파일을 복사하고 안전하게 복사본으로 편집을 합니다.

수정한 코드가 제대로 돌아가는 것 같으면 원본에 합칩니다.

 

이 예시에서 우리의 컴퓨터에는

원본복사본이라는 두 개의 파일, 즉 두 가지 버전이 존재하게 됩니다.

이게 일반적인 방식으로 버전을 관리하는 방법이죠.

 

여기서 버전 관리 시스템, 즉 깃Git을 이용하면

위에서 말한 복사본 만들기, 원본으로 합치기 같은 번거로운 작업을 깃이 알아서 해줍니다.

 

깃에게 "앞으로 이 폴더에서 버전관리를 할 거야" 라고 알려주고 나면

깃은 그 폴더 내에서 파일을 작성하고 편집하는 모든 과정을 기록합니다.

 

그래서 수정한 파일을 과거의 특정 시점으로 되돌리는 것이 가능합니다.

심지어 버전마다 메세지를 남기는 것도 가능합니다. 이게 바로 커밋입니다.

 

 

기본적인 Git 커맨드 🔥

콘솔에서 쓰이는 기본적인 커맨드

$ cd ~

 

홈 디렉토리로 이동

 

$ mkdir

 

새 디렉토리 만들기

 

$ cat hello.txt

 

파일 내용 보기

 

$ ls -al

 

파일 수정날짜 등 자세한 정보들 보기

 

 

버전 관리의 시작

$ git init

 

깃에게 현재 폴더에서 작업할거라고 알려줍니다

 

$ nano title.txt

 

title.txt라는 새로운 파일을 만들고 작성합니다

 

버전의 생성

여기서 이해해야할 개념이 있습니다.

이미지 출처 : 생활코딩 GIT 강의 중

  • Working tree : 내가 작성한 파일 무더기들이 있는 곳

  • Staging Area : git add를 통해 버전 관리에 들어간 파일들이 있는 곳

  • Repository : 커밋을 하면 변경사항이 저장되는 곳

Repository는 저장소입니다.

내 컴퓨터는 지역 저장소, 남의 컴퓨터나 깃 허브 같은 것을 원격 저장소라고 부릅니다.

앞으로의 작업을 통해 우리는 파일을 위의 단계들을 거쳐 내 컴퓨터에 저장하거나 원격 저장소에 백업하는 일들을 처리하게 됩니다.

 

결론부터 말하면 우리는 앞으로

파일 수정 → add → commit 의 과정을 반복하여 버전관리를 하게 됩니다.

 

 

$ git status

 

지금 상태를 알려주는 명령어입니다. 버전관리에 들어가지 않은 파일은 untracked라고 표시됩니다.

혹은 working tree clean 이라고 뜨기도 하는데 버전으로 만들 파일이 없다는 뜻입니다.

 

$ git add hello.txt

 

깃에게 hello.txt를 버전관리할 파일이라고 알려줍니다.

즉, hello.txt를 Staging Area에 추가합니다.

 

$ git add .

 

현재 디렉토리 아래의 모든 파일을 add하고 싶을 때는 위 커맨드를 씁니다

우리가 이런 일을 하는 이유는 깃은 모든 파일을 자동으로 관리하지 않기 때문입니다.

역으로 생각해보면 원치 않는 파일이 버전 관리에 들어가봤자 쓸 데 없기만 하겠죠?

 

$ git commit -m "Message"

 

커밋 메세지를 작성합니다.

 

$ git commit -am "Message"

 

add와 commit을 한 번에 하는 명령어입니다. Untracked 상태의 파일은 적용되지 않습니다.

 

$ git commit --amend

 

커밋 메시지를 수정합니다.

이게 제가 깃을 쓰고 싶었던 이유중 하나이기도 한데요

깃허브에서 매번 커밋 메세지를 잘못 남기기 일수여서 수정 기능이 절실했습니다..

 

$ git commit

 

기본 에디터를 불러옵니다. 여러줄에서 커밋 메세지를 좀 더 편하게 작성할 수 있습니다.

주의할 점은 첫 줄은 띄우고 작성해야합니다.

에디터에서 나갈 때는 esc를 누르거나 :wq 를 입력해서 저장후 나가면 됩니다.

 

$ git log

 

커밋 내역 등 기록을 보고 싶을 때 씁니다.

 

$ git log --stat

 

각 버전마다 어떤 파일이 관여하고 있는지 확인 할 수 있습니다.

 

여기서 주의점은 깃은 여러 개의 파일을 하나의 버전으로 관리한다는 것입니다.

 

만약에 test1.txt라는 파일을 만들고 커밋 후, test1.txt을 편집한 후 test2.txt를 작성해서 커밋하면

첫번째 버전에는 text1.txt가 두번째 버전에는 편집한 후의 test1.txt과 새로 생성된 test2.txt가 하나의 버전으로써 저장됩니다.

 

버전간의 차이점 비교

$ git diff

 

새 버전에서 변경된 걸 확인할 수 있습니다.

 

$ git log -p

 

버전별로 변경된 사항을 체크 가능합니다.

 

과거와 현재를 오가는 명령어

$ git checkout commitID

 

지정한 커밋의 시점(과거)로 돌아갑니다. 현재 커밋 기록을 삭제하지는 않습니다.

참고로 커밋 아이디는 돌아가고 시점의 커밋 아이디를 붙여넣으시면 됩니다.

 

$ git checkout master

 

다시 head→master로 돌아옵니다. 위에서 잠깐 과거로 갔다가 현재로 돌아온다고 생각하시면 됩니다.

 

버전 삭제

$ git reset --hard commitID

 

지정한 커밋의 버전으로 돌아갑니다. 이 경우 그 시점 이후의 커밋은 삭제가 됩니다.

 

되돌리기

$ git revert commitID

 

기억해야할 것은 버전3으로 가고 싶으면 버전 4를 revert해라는 것입니다.

이것은 기존의 커밋을 내버려두고 버전 4에서의 변화를 취소하는 작업인데,

버전 1로 가고 싶으면 버전4,버전3,버전2 이렇게 역순으로 revert해야 충돌이 안 생깁니다.

 

그 외

$ git config --global core.editor "nano"

 

깃의 기본 에디터를 변경합니다 (nano, vim 등)

 

$ git command --help

 

커맨드의 메뉴얼을 불러옵니다.

command 자리에는 알고 싶은 커맨드의 종류를 입력합니다 (reset,revert 등)

 

 

+

 

 

작업중인 폴더 내에 .gitignore 파일을 만들어서 무시하고 싶은 파일의 이름을 작성해두면 그 파일은 버전관리에서 제외됩니다.

 

 

-

 

 

이 포스팅의 내용은 생활코딩 Git CLI 버전관리를 수강하며 작성한 노트를 바탕으로 구성되었습니다.

잘못된 부분이 있다면 덧글로 언제든지 알려주시면 감사하겠습니다.

반응형

관련글 더보기

댓글 영역