GIT

[GIT] GIT(깃) 사용 방법 & 기본적인 명령어

15호의 개발자 2021. 8. 15. 18:04
반응형

[GIT] GIT(깃) 사용 방법 & 기본적인 명령어

 

 

 

0. git 기본 명령어

git 사용 방법을 알기 전에 아래의 git 기본 명령어를 우선적으로 학습한다.

 

  • init(초기화): 현재 디렉터리를 git(깃) 작업할 수 있도록 선언해 준다.
  • remote(원격): github(깃허브) 저장소와 같은 원격 저장소를 지정한다.
  • add(추가): 파일 또는 디렉터리를 git(깃)을 통해 추적하도록 설정한다.
  • commit(커밋): git(깃)을 통해 추적하는 파일의 변경 사항을 저장한다.
  • push(푸시): 변경 사항이 기록된 로컬 git(깃)의 파일들을 원격 저장소로 보낸다.

 

 

 

 

 

1. 버전 생성하는 방법

 

 

git init .

현재 디렉토리를 git에 버전관리를 시킴

 

git status

현재 커밋 상태 확인 (커밋은 버전이랑 같은 거라고 생각하기)

no commits yet

라고 뜨면, 아직 버전관리 되고 있는 게 없다는 뜻

 

그리고.. 미리 알아두어야 할 것

1. working tree
버전이 만들어지기 전 단계
파일을 수정하는 곳, 수정한 파일들이 있는 곳

2. staging area
working area에서 버전을 만들려는(=commit 하려는) 파일들이 있는 곳

3. repository (저장소)
만들어진 버전
staging area에서 commit을 했을 때의 변경사항들이 repository에 올라간다

 

git add (파일명)

working tree에 있는 특정 파일을 staging area에 올리는 명령어

 

git add (폴더명)

해당 폴더명 밑에 있는 모든 파일을 add

 

git add .

현재 디렉터리 밑에 있는 모든 파일을 add

 

 

이후, git status를 입력하면

Changes to be committed

라는 내용이 뜬다.

이는 stage 위에 올라간 상태라는 것이다.

 

 

git commit -am "(메시지 내용)"

add와 commit과 메시지 입력을 한 번에 함

 


git add를 입력했을 때, windows를 사용하는 경우 아래와 같은 경고 메시지가 뜰 수 있다.

warning: LF will be replaced by CRLF in hello1.txt.
The file will have its original line endings in your working directory

이는 윈도우는 개행방식으로 CRLF을 사용하기 때문이다.

리눅스나 맥OS의 경우 LF 방식을 사용하기 때문에 이런 경고가 뜨지 않을 것이다.

 

이 경고 메시지는 사실 무시하고 진행되고 되긴 한다.

자꾸 뜨는 게 싫다면 아래의 명령어를 입력하면 해결된다.

 

해당 프로젝트에만 적용하고 싶은 경우: $ git config core.autocrlf true

항상 적용되도록 하고 싶은 경우: $ git config --global core.autocrlf true

적용을 취소하고 싶은 경우: $ git config core.autocrlf false 또는 $ git config --global core.autocrlf false


 

git commit -m "(메시지 내용)"

staging area에서 repository로 옮김.

즉, 버전이 생성됨.

 

 

이후 git status라고 쳤을 때

nothing to commit, working tree clean

이라고 나오면, 

더 이상 커밋될 게 없다 = 버전 생성되었다

라는 내용이 나온다.

 

 

git log

버전이 잘 만들어졌는지 체크

그 동안의 버전 목록을 보여준다.

 

 

 

 

 

 

 

 

파일을 수정한 후 다시 git status를 쳐보면 아래와 같은 문구가 뜨고

Changes not staged for commit

이는 'stage 위에 있지 않은 수정사항이 working tree에 있다'는 말이다.

즉, 새로 버전을 올려주어야 하는 것이다.

 

 

git add 파일명

을 입력해주어 수정된 파일을 stage에 올려준다.

 

git status를 입력해보면 Changes to be committed라는 내용이 나오고,

이후 다시

git commit -m "(메시지 내용)"

을 입력하면 수정된 버전도 등록이 됐다.

 

git statusgit log로 버전이 잘 올라갔는지 최종 확인해본다.

 

 

 

 

 

2. 여러 개의 파일을 하나의 버전으로 만드는 방법

 

 

git add (파일명1)

git add (파일명2)

 

이렇게 파일을 하나씩 stage 위에 올려준 후

 

git commit -m "(메시지 내용)"

으로 버전을 생성한다.

 

 

하지만 git log로 확인하면

각각의 커밋마다 어떤 파일이 커밋된 건지 뜨지 않는다.

 

이때는,

git log --stat

git log --name-only

git log --name-status

를 이용해서 확인할 수 있다.

(나가기는 Q를 누르면 된다)

 

 

 

 

3. 버전 변경하기(checkout) & 삭제하기(reset) & 되돌리기(revert)

3.1 버전 변경

git log를 입력하면 아래와 같은 커밋이 저장한 만큼 나온다.

commit 92b55aea2...(생략)...d5e58fe13033e
Author: (ID) <(email)>
Date:   Sun Aug 15 17:13:54 2021 +0900

이 중 특정 버전으로 돌아가고 싶다면

위의 빨간 부분(커밋 ID라고 부른다)을 복사한 후 아래처럼 git checkout 뒤에 입력하면 된다.

 

git checkout 92b55aea2...(생략)...d5e58fe13033e

 

 

 

다시 원상태로 돌아가고 싶다면 (=가장 최신 버전으로 돌아가고 싶다면)

git checkout master

을 입력하면 된다.

 

 

★ git checkout 명령어는 커밋을 삭제하는 게 아니라

HEAD가 가리키는 것을 결정하는 명령어이다.

 

 

3.2 버전 삭제

버전을 삭제하는 방법은 reset 명령어를 이용해야 한다.

 

git reset --hard 92b55aea2...(생략)...d5e58fe13033e

이 명령어는 92b55..버전 리셋하겠다는 뜻이 아니라, 

92b55..버전으로 리셋하겠다는 의미이다. 주의해야 한다.

 

자세한 내용은 git reset --help로 확인할 수 있다.

 

 

3.3 되돌리기

revert 명령어는 버전을 삭제하지는 않으면서 되돌리는 방법이다.

commit 43a3330edcf...(생략)...73f0193cbccbe
Author: (ID) <(email)>
Date: Sun Aug 15 17:14:48 2021 +0900 Test 2

commit 92b55aea2f6...(생략)...45e58fe13033e
Author: (ID) <(email)>
Date: Sun Aug 15 17:13:54 2021 +0900 Test 1

만약 Test 1 버전으로 되돌아가고 싶다면

git revert 92b55aea2f6...(생략)...45e58fe13033e 이 아니라

git revert 43a3330edcf...(생략)...73f0193cbccbe 를 입력해야 한다.

헷갈리니 주의해야한다.

 

이후에는 메시지를 입력하는 창이 뜬다.

굳이 입력하지는 않아도 된다.

 

 

버전이 4개가 있다고 하자.

commit 43a3330edcf...(생략)...73f0193cbccbe
Author: (ID) <(email)>
Date: Sun Aug 15 17:14:48 2021 +0900 Test 4

commit 32b55aea2f6...(생략)...45e58fe13033e
Author: (ID) <(email)>
Date: Sun Aug 15 17:13:54 2021 +0900 Test 3

commit 23a4880edcf...(생략)...73f0193cbccbe
Author: (ID) <(email)>
Date: Sun Aug 15 17:14:48 2021 +0900 Test 2

commit 112b5aea2f6...(생략)...45e58fe13033e
Author: (ID) <(email)>
Date: Sun Aug 15 17:13:54 2021 +0900 Test 1

이때 Test 1 버전으로 revert하고 싶다면

git revert 23a4880edcf...(생략)...73f0193cbccbe를 입력하면 안 된다.

 

아래와 같이 커밋 ID를 순차적으로 revert해야지 충돌이 생기지 않는다.

git revert 43a3330edcf...(생략)...73f0193cbccbe

git revert 32b55aea2f6...(생략)...45e58fe13033e

git revert 23a4880edcf...(생략)...73f0193cbccbe

 

 

 

 

 

4. fork와 clone의 차이

 

fork

원격에서 원격으로

ex) 남의 github에서 내 github으로 fork

 

clone

원격에서 로컬로

ex) 남의 github에서 내 컴퓨터로 clone

 

 

 

 

 

5. 기타 명령어

 

git diff

difference란 뜻으로 수정된 내용(차이점)을 알려준다.

 

git reset --hard

마지막 버전은 삭제하고 그 이전 버전으로 돌아간다.

 

git log -p

patch의 약자로써, log를 좀 더 자세하게 알려준다.

방향키 위, 아래를 누르면 공간이 부족해서 짤린 부분을 이동하면서 볼 수 있다.

 

git commit

git commit -m이 아닌 git commit을 입력하면 에디터 창으로 넘어간다.

그 곳에 메시지를 입력하면 되고, 여러 줄 입력도 가능하다.

이때 기본 에디터를 바꾸고 싶다면 아래와 같이 입력하면 된다.

git config --global core.editor "(에디터명)"

ex. git config --global core.editor "nano" 또는 git config --global core.editor "vim"

 

 

 

 

(출처: 생활코딩)

반응형