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에 대해 알아보자
'웹 개발 한걸음' 카테고리의 다른 글
[OAuth2] 소셜 로그인 구현 방식에 대한 시행 착오 (0) | 2022.04.28 |
---|---|
[해결] CORS 에러 해결 (2) + 추가 (0) | 2022.04.06 |
[SQL] Left Join과 Inner Join 간단 정리 (0) | 2021.08.12 |
[OAuth2.0] 소셜 로그인 구현하기 -4- 카카오, 네이버, 구글 로그인 (0) | 2021.08.03 |
[OAuth2.0] 소셜 로그인 구현하기 -2- 카카오 어플리케이션 등록 (0) | 2021.07.28 |