[2021-03-17]
목차
1. Github의 정의
git은 형상관리도구 중 하나이며, 버전 관리 시스템이라고도 한다.
2. Git을 사용하는 이유
무료이며 여러사람과 함께 병렬 작업이 가능하게 만들어준다.
branch merge 를 통해 버전을 여러 갈래로 나누었다 합칠 수 있게 만들어준다.
분산 버전 관리 방식이기에 중앙 저장소가 지워져도 복구 할 수 있다.
3. Git 원리
Git으로 관리되는 폴더에는 .git이라는 숨김 폴더가 생긴다.
.git 폴더에 작업 하고 있는 상태가 저장되어 있다.
index 에는 현재 commit하기위해 준비된 내용이 저장되어있다.
4. Git의 기본 명령어
git commit : 소스코드는 버전으로 관리된다. 소스코드를 저장소에 저장하는 행위를 commit이라고 한다. 테스트 완료한 코드를 저장소에 올릴 때 마다 commit을 해주어야 하며 -m 옵션을 통해 무엇이 변경 되었는지 설명을 달 수 있다 .
git branch <branch name> :
branch란 분기를 의미한다.
커밋에서 분기를 만들어 독립적인 가지를 생성 할 수 있다.
분기를 생성하기에 협업시 병렬 작업이 가능하다.
(option) git branch -f <현재 branch> <목적 branch> : 해당 위치로 브랜치 이동
git checkout <”branch” or “commit” name> : 해당 branch 또는 commit 위치로 이동
HEAD : 현재 checkout된 commit을 가리킴. 다시말해 현재 작업중인 commit임.
^ 옵션을 통해 현재 head 위치에서 위로 거슬러 갈 수 있음.
git merge <branch name> : 현재 브랜치와 해당 브랜치를 병합함.
주의사항 : 두 개의 분기가 파일에서 동일한 행을 편집했거나 분기에서 파일이 삭제 되었지만 다른 분기에서 편집된 경우 충돌이 발생한다.
git merge --abort : 충돌로 인해 문제가 생기기 전으로 돌아갈 때 사용합니다.
git merge --continue : 충돌로 인해 병합이 중단 된 후 continue명령어를 통해 병합을 완료할 수 있습니다.
rebase가 삭제하지 않고 병합하기 때문에 더 많이 쓰인다.
git rebase <branch name> : 커밋들을 모아서 복사한 뒤, 다른 곳에 놓는 것임.
리베이스를 하면 커밋말고 commit 라인을 한 줄로 만들 수 있다는 장점이 있음.
rebase의 경우 현재 상태를 지우지 않고 다른 branch와 병합 할 수있다는 장점이 있다.
git rebase -i <branch name or 상대경로 ^ , ~> : 현재 HEAD가 위치한 곳의 내용이 <branch name> 위치아래에 추가됨.
git revert <branch name> : remote에서 commit 한 결과는 놔두고 이전 상태로 새로운 commit을 함. revert를 사용하면 이전 기록이 지워지는 것을 방지 할 수 있음.
git reset <branch name '^' or '~'> : 주로 local에서 사용한다. commit한 것을 되돌림.
remote 에서 --hard 옵션을 통해 reset을 하게 된다면 다른 사용자와 충돌 가능하다.
주의사항 : reset시 commit이 지워지면서 충돌 가능성이 생기기에 revert 사용을 권장한다.
git cherry-pick <commit name> : 특정 커밋만 복사해서 붙여넣기 가능.
git tag <태그 이름> <태그를 추가할 커밋 위치> : 태그 달기.
git remote : 연결된 remote repository가 있다면 목록이 출력된다.
git remote add { 별칭 } {remote 주소} : 별칭은 일반적으로 origin을 사용
git status : 현재 추가된 파일을 보여줌(상태)
git add {파일 or 디렉토리 경로} : 작업한 디렉토리의 변경 내용 또는 디렉토리를 staging area로 넘길 때 사용함.
git add -a : 작업 디렉토리 내의 모든 변경 내용을 staging area로 넘길 때.
주의사항 : 디렉토리 안에 보안상 비공개 처리해야 되는 파일이나 용량이 너무 큰 파일 프로젝트와 관계없는 파일인 경우 commit을 할 이유가 없다.
해결방법 : gitignore라는 파일을 디렉토리에 만들어 무시할 파일을 넣어 줄 수 있다.
작성법은 공식문서를 참조 : Ignoring files
git push { 별칭 or url } {브랜치 이름} : 원격 저장소에 기록함.
git clone { 저장소 url } : url의 데이터를 다운로드 시 사용
- git clone -b { branch 이름 } { 저장소 url } : 특정 branch 를 clone 할 때 사용.
- git clone 과 git pull의 차이
- git clone의 경우 리모트 설정을 자동을 해주기에 초기 다운로드시 사용함.
- git pull의 경우 리모트설정을 수동으로 해주어야 하고 업데이트 상태를 다운 받을 때 사용함.
git pull통해서 저장소에 있는 데이터와 병합 할 수 있음.
- 충돌이 난다면 수작업으로 충돌된 부분을 수정해야함
- git pull = git fetch + git merge
- 다만 rebase 사용을 권장함(branch병합시 선형으로 만들 수 있음.)
주의 : push 하기 전에 local repository는 항상 remote repository의 최신 버전을 유지해야함
5. Git 명령어를 이용한 게임 해보기
'GitHub' 카테고리의 다른 글
GitHub push 명령어 오류 (0) | 2021.06.20 |
---|
댓글