본문 바로가기

웹 개발 한걸음

[Git 입문] 2. Git의 주요 명령어 간단히 써보기 (feat.Sourcetree)

 

 

 

   3. Git의 주요 명령어   


 1. git init  

  • Git저장소를 만드는 명령어이다. 

 

c:\에 있는 Git_Test라는 폴더에 Git 저장소를 만들었다.

실제 폴더에 가보면

 

 

  • .git이라는 폴더가 생성되었다. 
  • Git 저장소가 되어 Git이 관리하는 폴더가 되었다는 뜻이다.

 


 

 2. git status  

  • Git이 관리하는 워킹 디렉토리의 상태를 확인하는 명령어이다. 

 

  • 위의 내용은 현재 브랜치는 '마스터'이고 아직 커밋 된 적이 없고 커밋할 게 없다. 라는 메시지이다.

 


 

 2-1  라이프사이클  

 

워킹 디렉토리의 파일은 크게

  • Untracked : 관리 대상이 아님 (Git이 모름)
  • Tracked : 관리 대상 (Git이 알고 있음)

로 나눌 수 있다. 

 

여기서 Tracked는 다시

  • Unmodified : 수정하지 않음.
  • Modified : 수정함.
  • Staged : 커밋으로 저장소에 기록할 스테이지에 있음.

로 나눌 수 있다.  

아래 예시로 Test라는 텍스트 파일을 하나 생성해보자. 

 

 

 

 

  • status 명령어를 써보면 Untracked files로, 추가했던 Test.txt를 확인할 수 있다. 
  • Untracked는 아래 add 명령어를 통해 tracked와 동시에 staged 상태로 만들 수 있다.

 

 

 3. git add  

 

  • add 명령어로 파일을 추적 상태로(Tracked) 만들 수 있다.

 

 

  • Untracked  파일인 Test.txt에 명령어 add를 사용 후 status로 상태를 확인해보았다.
  • add 명령어를 사용하면 Tracked 됨과 동시에 staged 상태가 된다.
  • staged 상태는 commit 전에 머무는 대기실 상태라고 생각하면 된다.

 

 

여기서 내용이 비어있는 Test.txt에 아무 내용이나 추가하여 변경하면 어떻게 될까?


 

 4. git restore  

 

git이 관리하는 파일이 변경 되면 두 가지 명령어를 사용할 수 있다. 

  • Add : 변경된 상태로 업데이트한 최신버전을 stage에 올려둔다. 
  • Restore : 수정한 파일을 수정 전으로 되돌린다. 

아래는 Restore 명령어를 써서 수정 전으로 되돌렸다.

 

 

 

 


 

 

 5. git commit  

 

  • 앞에서 추가하고 수정했던 것을 add를 통해서 Staging Area에 올려두었다. 
  • 이제 commit을 통해 Staging Area에 올려둔 변경점을 저장하고 기록한다. 
  • 커밋은 가장 중요한 명령어 중 하나로 Git 저장소에 파일에 대한 스냅샷을 기록하는 것이다. 
  • 그 스냅샷 하나 하나가 프로젝트의 버전이라 생각할 수 있다. 
  • Unstaged 상태는 커밋되지 않는다.

 

 

  • -m 옵션을 통해 커밋 메시지를 첨부할 수 있다.

 

제대로 커밋되었는지 시각적으로 보기 위해 

여기서부터는 이제 source tree로도 확인해보자. 

 


 

 6. Source Tree  

 

 

 

소스트리를 실행하면 이러한 창이 뜰 것이다. 

 

  • Local 저장소 - 내 PC 저장소
  • Remote 저장소 - GitHub같은 원격 저장소
  • Create - 새로운 저장소 만들기
  • Add - 기존에 만들었던 것을 추가
  • Clone - 기존에 만들었던 것을 복사

 

Add를 통해 방금 만들었던 Git_Test폴더를 불러오면 

 

 

방금 커밋했던 First Commit이 보이며 누가 언제 어떻게 수정하고 commit했는지 History를 통해 알 수 있다.

 


 

 7. git branch 

 

  • 모든 버전 관리 시스템은 브랜치를 지원한다. 
  • 브랜치는 말 그대로 나뭇가지, 분화를 뜻하며 코드를 여러 개로 복사해여 원래 코드와 독립적으로 개발을 진행할 수 있다. 
  • Sourcetree에서도 봤듯이 Git은 처음에 master 브랜치를 만들고 처음 커밋시 master 브랜치는 자동으로 첫 커밋을 가르킨다. 

 

여기서 새로운 branch인 'A'를 만들어보자. 

 

branch 명령어를 통해서 A라는 브랜치를 간단하게 만들 수 있다.

 

그럼 소스트리에서 확인해보자. 

 

 

A 브랜치가 추가 된 것을 확인할 수 있다. 

하지만 현재 브랜치는 A가 아닌 master이다. 마치 로그인 로그아웃과 비슷한 느낌인데 master로 로그인되어있다 생각하면 편하다. 

 

그러면 현재 브랜치를 새로운 브랜치인 A로 변경하려면 어떻게 해야할까?

 


 

 8. git checkout  

 

  • checkout 명령어로 다른 브랜치로 이동할 수 있다. 

 

 

master -> A로 브랜치가 이동하였다. 

그럼 test.txt 파일의 내용을 수정하여 분기 시켜보자. 

현재 A브랜치에서 test.txt의 내용을 "123SS"에서 "5678"로 변경한 후 add와 함께 commit 해준다. 

 

 

 

A브랜치로 분기가 생김을 확인할 수 있다. 

A브랜치가 checkout 상태일 때 test.txt를 열어보면 방금 변경한 "5678"이 나오지만

 

다시 master 브랜치로 checkout을 하면 변경 전인 "123SS" 임을 확인할 수 있다.

 

좀 더 분화 그래프를 느껴보기 위해 B라는 브랜치를 추가하고 각각의 커밋들을 해보면 

이런 식으로 분화를 확인할 수 있다.

 


 8. git merge  

 

  • merge는 말그대로 합병, 다른 브랜치의 내용을 현재 브랜치로 가져와 합치는 작업을 말한다. 

예를 들어 현재 프로젝트에서 bug가 발생했을 시 bugFix라는 브랜치를 새로 만들어 bug를 수정한 후 적용하기 위해 현재 프로젝트로 가져와 합쳐야한다.  

 

위 그림과 같이 master 브랜치(위에선 main)와 bugFix 브랜치를 만들어 merge하게 되면

 

이런 식으로 병합되게 된다. 

 

 


 

다른 명령어들도 추후에 추가 예정

 

다음 글은 GitHub에 대해 알아보자