- Init : git init (untracked 상태)
- Add : git add .(untracked 상태 -> staged 상태)
- Commit : git commit -m "<MEMO>" (staged 상태 -> committed 상태)
GitHub
- 원격 레포지토리 등록
: git remote add <NAME> <URL>
git remote rename <NAME> <NEW>
git remote rm <NAME>
- Clone
: git clone <URL> <NAME>
- Push
: git push <NAME> <BRANCH>
- Pull
: git pull <NAME> <BRANCH>
-alias : 가명 설정하기
터미널 -> vi 편집기 사용
$ vi ~/.zshrc
a -> alias g="git" 입력 -> esc -> :wq -> return
git 명령어 단축 완료!
$ vi ~/.gitconfig
입력 후 아래와 같이 입력해주기
a 입력하고 수정, 수정후에는 esc -> :wq 입력해서 빠져나오기
alias 내용
-BRANCH
프로젝트를 진행하며 새로운 기능을 추가할때 그 기능이 전체 프로젝트와 호환되는지 알 수 없음.
그래서 프로젝트를 통째로 복사하고 새로운 기능을 추가하고 호환되는지 충분히 검증한 후 원래의 레포지토리에 새로운 기능을 옮김.
Git은 이러한 과정을 자동화 시켜주고 기록으로 남기고 최악의 경우 복원하는 기능까지 제공. 이것이 Git의 Branching 기능
평행세계를 만드는 것. 그리고원래의 세계에서 평행세계로 넘어가서 그 세계에서 마음껏 실험적인 행동을 자행하는 것.
그 평행세계가 Branch
Git은 최대한 Branch를 자주 만들고 master 브랜치로 병합하라고 권장함.
브랜치란?
브랜치란 포인터! 그 포인터는 커밋들을 포인팅하고 있음.
Git은 기본 브랜치로 master 브랜치를 가지고 있는데, 이 master 브랜치는 언제나 마지막 커밋을 포인팅하고 있음.
실제로 커밋을 할때마다 master 브랜치가 자동으로 마지막 커밋으로 포인팅을 변경해줌
브랜치 생성 : 브랜치를 생성하는 것은 포인터를 만드는 것!
다음 명령어로 스테이징 후 커밋
$ git branch : 현재의 위치하는 브랜치를 보여줌
alias로 변경해줬으니, $ g b 와 동일
$ git branch <NAME> : <NAME> 이라는 이름의 브랜치를 만들어줌
alias로 변경해줬으니, $ g b <NAME> 과 동일
현재 상태
HEAD : 현재 상주하고 있는 브랜치를 가리키는 포인터
브랜치 이주
$ git checkout <NAME> = = $ g co <NAME> : <NAME> 브랜치로 이동한다
코드 수정하기!
add, commit 하기
testing 브랜치는 마지막 커밋을 포인팅하기 위하여 위치가 변경되었고, master는 제자리
git checkout으로 브랜치 변경해주기
다음과 같이 HEAD 위치 변경됨
$ cat main.c로 내용 확인하기
브랜치 병합하기
$ git merge <NAME> : <NAME> 브랜치를 현재의 브랜치로 병합
master 브랜치가 testing 브랜치가 포인팅하고 있는 커밋을 포인팅하게 됨 ; Fast-forward 병합
master인데, testing main.c가 나옴
git log로 상태 확인하고, 커밋 번호로 커밋 취소해주기 (=reset)
Merge Confilct
testing -> master 브랜치로 돌아온 상황. master 브랜치에서 main.c 다음과 같이 고치기
both modified: 에 main.c가 포함되어 있음
main.c를 열어서 병합 충돌이 발생한 코드를 확인해줘야함
위와 같이 충돌 영역을 ======= 로 구분해줌.
HEAD에서 변경된 부분은 <<<<<<< HEAD 에서부터 ======= 까지이고
testing 브랜치에서 변경된 부분은 ======= 부터 >>>>>>> testing 까지
다음과 같이 고쳐주기
다시 커밋해주면 병합 완성!
$ git branch -d <NAME> : 병합이 완료된 브랜치 삭제
$ git branch -D <NAME> : 병합이 완료되지 않은 브랜치 삭제
브랜치 삭제해주기
'2021 시선 - 겨울 방학 스터디' 카테고리의 다른 글
6. user.github.io (github 페이지 만들기) (0) | 2021.01.29 |
---|---|
5. Pull Request (0) | 2021.01.29 |
4. 마크다운 (0) | 2021.01.26 |
3. 1월 22일 스터디 과제 (0) | 2021.01.23 |
1. Git (0) | 2021.01.20 |