처음 git을 접한 건 2020년 대학에서 프로그래밍 수업을 수강하다가 알게되었다. 명령어 실수로 인해 한 순간에 코드를 날려버리고 나서부터 수시로 저장하는 것이 중요하다는 것을 알게되었고, 대중적으로 사용하는 VCS(version control system)인 git을 사용하기로 마음먹었다. 그때 뜻도 모르고 사용했던 명령어들은 아직도 기억한다.
git init
git status
git add .
git commit -m 'first commit'
이외에도 여러가지 명령어들을 인터넷을 보고 대충 따라하면서 사용했었다. 어떤 식으로 돌아가는 지도 모른체 막 따라하다가 또 문제가 발생했다. 그것은 바로 병합 시 발생하는 충돌이었다. 아무 생각없이 add하고 push하고 pull하다보니 충돌이 발생했고, 그 당시에 나에겐 왜 이런 일이 발생하는 지도 모르고 그냥 구글링해서 명령어를 찾고 해결하기만 바빴다.
VCS(Version Control System)중 하나로 데이터를 스냅샷의 스트림처럼 취급하여 버젼을 관리한다. 또한 거의 모든 명령을 로컬에서 실행한다. 즉, 오프라인 상태이거나 VPN에 연결하지 못해도 막힘 없이 일을 할 수 있다는 장점이 있다. 또한 Committed, Modified, Staged 세 가지 상태로 나뉘어 파일을 관리한다.
-Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
-Modified는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
-Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.
git으로 하는 일은 기본적으로 아래 3가지이다.
1. 워킹 트리에서 파일을 수정한다.
2. Staging Area에 파일을 Stage 해서 커밋할 스냅샷을 만든다. 모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있다.
3. Staging Area에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.
이외에 자세한 부분은 https://git-scm.com/book/en/v2을 참조하길 바란다.
그럼 이제 필자 기준에서 이 정도는 알아야되는 명령어들 위주로 소개하겠다.
기존 디렉토리를 git저장소로 만드는 명령어
(.git이라는 하위 폴더를 만들고 저장소에 필요한 뼈대 파일이 들어있다.)
$ git init
기존 저장소를 Clone하는 명령어
$ git clone https://~~
파일의 상태 확인하기
$ git status
파일을 새로 추적하기
(경로에 담긴 모든 파일을 추적)
$ git add .
파일을 커밋하기
$ git commit -m 'message'
파일을 삭제하기
$ git rm file.md
커밋 히스토리 조회하기
$ git log
버젼 되돌리기(둘의 차이는 학습 후 수정할 예정)
$ git commit --amend
$ git reset file.md
원격 저장소 연결
$ git remote add origin https://~~~~
push하기(저장소에 데이터 집어넣기)
$ git push origin master
pull하기(저장소에서 데이터 가져오기)
$ git pull origin master
나머지 병합하고 branch관리하고 충돌 해결 등등 자세한 설명은 나중에 업데이트 할 예정.