본문 바로가기

programming study/Git

[생활코딩]Git2 CLI - 버전관리 (2020.12.2)

본 내용은 아래의 강의를 토대로 하여 작성하였습니다.

링크:https://opentutorials.org/module/3762

 

GIT2 - CLI - 버전관리

수업소개 소위 git이라고 하면 command line에서 사용되는 프로그램을 말합니다. 이 수업에서는 바로 이 프로그램의 사용법을 살펴봅니다.    수업대상 이 수업은 아래와 같은 상황에 있는 분들을

opentutorials.org

 

1. 강의 내용

Git의 설치

Git은 git-scm.com에서 빠르게 설치할 수 있다.

 

Git CLI

Git을 제어하는 방법은 Sourcetree와 같은 프로그램을 사용하거나 터미널을 이용하여 CLI를 사용한다. GUI는 CLI와 진입장벽이 낮아서 다루기 쉽지만, 그만큼 시스템 자원을 사용한다. CLI는 익숙해지면 많은 작업을 한 번에 실행할 수 있는 이점이 있다. 특히, 서버 환경에서는 CLI를 사용해야만 한다.

Git Repository 생성

git이 없는 디렉토리에서 git의 기능을 사용하려면, 해당 디렉터리에 Repository(저장소)를 생성해야 한다. 터미널에서

 

 

git init

 

 

을 입력하면 Repository가 생성된다. 당장은 아무것도 생기지 않은 것 같지만 ls -a을 입력하면 디렉터리의 숨김 파일도 볼 수 있는데,. git이라는 숨겨진 폴더가 생성되어있다.. git은 모든 변경 사항을 저장하는 기능을 하므로, 절대로 삭제하면 안 된다.

 

Git add

git의 repo(Repository)를 생성했다면 이제 CLI에서 git의 명령어들을 해당 디렉토리에서 사용할 수 있다. 현재 git의 상태를

 

 

git status

 

 

를 입력해서 조회할 수 있다. 

git status

출력되는 것을 보면, 아직 어떤 커밋도 추적되는 파일도 없다고 나타난다. 어떤 파일을 버전관리 하겠다고 명령어를 입력하지 않았기 때문이다. 버전 관리 명령어는 아래와 같다

 

 

git add 파일명

 

 

이제 해당 파일은 버전관리가 시작되었다. 나는 해당 디렉터리의 siru.jpeg를 add 하였다

git add

그 결과, siru.jpeg는 추적되기 시작했다. 만약, 현재 디렉터리의 모든 파일들을 add 하고 싶으면  git add. 를 입력하면 된다.

 

Git commit

추적된 파일의 버전을 저장하고 싶으면 Commit을 하면 된다.

 

 

git commit 파일명

 

 

그러면, 에디터가 뜨게 될 것인데 각자 컴퓨터 환경의 에디터에 맞게 버전명을 입력하고 커밋을 하면 된다. nano에디터를 사용하고 싶다면,

 

 

git config --global core.editor "nano"

 

 

입력해주자.

에디터를 들어가지 않고 바로 커밋을 하고 싶다면,

 

 

git commit -m "버전명"

 

 

을 입력하면 된다. 나는 추적된 siru.jpeg를 practice라는 이름의 버전으로 커밋하였고 git log로 조회한 결과 아래와 같이 정상적으로 저장된 것을 볼 수 있었다.

git log

add와 commit을 동시에 하고 싶으면 git commit -am을 입력하면 된다. 

요약

이 단계들을 요약하자면 총 세 단계로 볼 수 있다.

  1. Working tree : 버전이 만들어지기 전 단계, 즉 추적되기 전의 상태.

  2. Staging Area: add를 하여 추적이 되는 상태. 버전을 만들 선별된 파일들이 올라가는 곳.

  3. Repository: commit을 하여 버전이 저장되는 곳.

Git diff

git은 파일이 변경사항이 무엇인지 보여준다. 

git modfied

example.html이라는 파일을 add 하여 추적 중인데, 수정이 되면 저렇게 git이 알려준다. 이때, 

 

 

git diff

 

 

 를 입력하면 아래와 같이 수정된 사항을 보여준다.

git diff

이와 유사한 기능으로 git log -p가 있는데, 각 버전들에서 어떤 것들이 바뀌었는지 조회할 수 있다.

 

해당 버전으로 돌아가기

git log를 조회하면 commit이라는 문구 옆에 복잡한 버전 번호가 쓰여있다. 이 번호를 복사해서

 

 

git checkout 버전 번호

 

 

를 입력하면, 버전 번호에 해당하는 버전으로 돌아가게 된다. 다시 최신 버전으로 돌아가고 싶다면, 버전 번호에 master를 입력한다.

Git 삭제하기 (리셋하기)

 

변경사항이 마음이 들지 않아서 복구하고 싶다면

 

 

git reset --hard

 

 

 를 입력하면 변경되기 전 마지막 버전으로 돌아간다. 뒤에 버전 번호를 입력하면, 그 해당 버전으로 돌아간다. 즉, 이 버전으로 리셋하겠다는 의미이다. 여기서 --hard는 내가 수정한 것은 삭제하고 리셋 시점으로 가는 것이다. --soft나 --miexed 기능도 있으니 매뉴얼을 참고하자.

리셋은 협업에서 사용할 경우 충돌이 일어날 수 있으므로 협업 시에는 지양하자.

 

Git 되돌리기

기존의 커밋을 남기고 되돌리고 싶을 때는

 

 

git revert

 

 

를 사용한다.

git revert

만약 R3 버전으로 되돌리고 싶다면, git revert R4를 입력하면 된다. 그 결과, R4버전에서 추가, 수정되었던 것들이 사라지고 버전  R3로 돌아간다. 리셋과 다른 점은, 돌아간다 하더라도. commit R4는 남아있다.

유의해야 할 점은, 되돌리기는 카세트테이프를 되감는 것과 같으므로 원하는 시점의 버전까지 역순으로 진행해야 한다. 그렇지 않으면 충돌이 일어난다.

 

 

2. 느낀 점

git을 CLI로 제어하면서 좀 더 와 닿게 기능들을 배울 수 있었다. Working tree에서 Staging area, Staging area에서 Repository로 버전을 체계적으로 기록하고 관리할 수 있는 기능은 분명 프로그래밍을 본격적으로 할 때 많이 유용해 보였다. 

다만, 아직 내가 배운 지식으로는 reset과 revert는 이해가 잘 안 되었다. 조금 더 공부할 필요가 있다.

 

3. 명령어

Git 명령어