이 포스트는 엘리스 AI 트랙 4기 강의를 듣고 정리한 내용입니다.
git은 효율적인 협업을 위한 툴로 버전 관리가 쉽다. git의 특징으로는 작업의 종류를 나눌 수 있는 가지치기와 병합을 지원한다. 분산 작업이 가능하고 이전 과거와 현재의 변경사항을 확인할 수 있다.
local 영역의 working directory와 staging area, repository로 구분되어 있다. Github나 gitlab 과 같은 git 호스팅 서비스에 올려 작업한 것을 공유할 수 있다.
Git 시작하기
Linux와 maxOS는 git이 기본으로 설치가 되어 있어 사용하면 되고 , windows 환경에서는 git을 설치해 줘야 한다.
1
git --version
우선 위 명령어로 git
의 버전을 확인해 준다.
사용자 정보 설정하기
1
2
git config --global user.name "username"
git config --global user.email useremail@gmail.com
위 명령어를 이용해 git에 사용자 정보를 설정해 준다. 프로젝트마다 사용자 정보를 다르게 설정하고 싶으면 --global
옵션을 빼고 하면 된다.
Git 저장소 생성과 github에 push하기
저장소 생성
1
git init
위 명령어로 git
저장소를 생성한다. 저장소를 생성하고 나면 해당 working directory
에 .git
이라는 숨김파일이 생긴다. .git
폴더는 저장소의 정보, 커밋 등의 정보를 담고 있다.
Commit 하기
1
2
git add .
git commit -m "initial commit"
git add .
명령어로 working directory
에 있는 모든 파일을 staging area
로 올리게 된다. 특정 파일만 올리고 싶으면 .
대신 파일 이름을 적어주면 된다.
git commit
은 staging
영역에 올라와 있는 파일들을 repository
에 올리게 된다. Commit시에 -m
옵션은 commit 메세지를 한 줄로 입력 가능하게 해준다. -m
옵션이 없을 경우 nano
나 vi
같은 문서 편집기가 열리고 상세 내용을 적을 수 있다.
Gitghub repository와 연결하기
Git에 저장되어 있는 파일들을 github로 올리기 위해서 github의 repository와 연결이 필요하다. git 저장소와 github repository를 연결하려면 먼저 github에서 repository를 생성해 준다. clone할 때 복사하는 github 저장소 주소를 복사한다.
1
git remote add <local 저장소 이름> <github repository 주소>
복사한 주소를 터미널에서 위 명령어를 사용해 github repository 주소에 넣는다. local 저장소 이름은 다음으로 설명할 push에서 필요하기 때문에 해당 git 저장소를 어떤 이름으로 연결했는지 기억해야 한다.
Github repository에 push하기
1
git push <local 저장소 이름> <branch name>
Github repository와 연결한 후 push를 하는 명령어이다. local 저장소 이름이 origin
이고 branch의 이름이 master
일 때 명령어는 git push origin master
가 된다.
Git 상태 확인하기
1
2
git status
git log
status
명령어를 사용하면 staging
영역에 있는 파일들의 상태를 확인할 수 있고, log
명령어를 사용하면 repository
에 존재하는 history를 확인할 수 있다.
Gti branch 사용하기
Git branch 생성
1
2
git branch branch_name
git checkout branch_name
branch
명령으로 새로운 branch를 생성할 수 있다. checkout
명령은 원하는 branch로 이동해서 작업할 수 있다.
Git merge 사용하기
1
2
3
4
5
6
git add .
git commit -m "init"
git checkout master
git merge branch_name
git branch -d branch_name
merge
를 진행할 때는 작업을 마친 branch에서 commit을 한 후 merge하고 싶은 branch(예시에는 master branch)로 이동한 다음 merge
명령으로 두 branch를 병합해 준다.
각 branch는 다른 branch의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있다.
merge
가 완료된 branch는 더 이상 필요하지 않기 때문에 제거를 해줘야 한다. branch -d
를 사용해 병합이 완료된 branch를 삭제해 준다.
Git merge conflict
merge
를 진행할 때 한 파일에 동일한 부분이 동시에 수정되면 병합이 불가능한 merge conflict가 발생한다. 이런 경우 충돌이 발생한 파일을 찾아 수정을 한 수 병합을 해주면 해결된다.