$ git status
On branch main => ** [main] 기본 브랜치명
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
** main은 레포지토리를 만들고 커밋을 하면 자동으로 생기는 브랜치
$ git branch [새 브랜치 이름]
** 새로 생성한 브랜치에서 작업한 내용은 main 브랜치에 영향을 주지 않음
$ git branch => 브랜치 조회
* mian => 현재 위치한 브랜치
[브랜치명1]
[브랜치명2]
[...]
$ git branch -d [기존 브랜치 이름]
Deleted branch [기존 브랜치 이름]
$ git checkout [가고 싶은 브랜치 이름]
Switched to branch '[가고 싶은 브랜치 이름]'
$ git checkout [커밋 아이디]
// Detached HEAD 상태
* HEAD가 직접 커밋을 가리키거나, 브랜치를 가리키도록 할 수 있음
** Detached HEAD : HEAD가 특정 커밋을 직접 가리키는 상태
*** Detached HEAD 하는 이유는 과거의 특정 커밋에서 새로운 브랜치를 만들고 싶을 때 사용함
$ git branch -b [새 브랜치 이름]
Switched to a new branch '[새 브랜치 이름]'
$ git checkout [브랜치명] => 이동
Switched to branch '[브랜치명]'
$ git merge [합칠 브랜치명]
Merge made by the 'ort' strategy.
$ git merge [브랜치명]
Auto-merging [merge할 파일]
CONFLICT (content): Merge conflict in [merge할 파일]
Automatic merge failed; fix conflicts and then commit the result.
git add [파일명] 커맨드로 하나씩 staging area에 올리거나git add . 커맨드로 한번에 staging area에 올리고$git merge --abort
//머지 작업을 취소하고 이전 상태로 돌아감
$ git checkout C4^
^는 한 커밋 위로 움질일 수 있음~숫자는 여러 커밋 위로 올라갈 수 있음해시 또는 브랜치이름 또는 HEAD 모두 상대참조기호 앞에 올 수 있음git remote add origin https://github.com/soma0078/Math_Box.git
- remote : 리모트 레포지에 관한 작업을 할 때 쓰는 커맨드
- add : 새로운 리모트 레포지토리를 등록한다는 의미
- origin https~.git : https~.git 리모트 레포지토리를 origin으로 등록
git push -u origin main
- 현재 로컬 레포지토리에 있는 main 브랜치 내용을 origin이라는 리모트 레포지토리로 보낸다는 의미
- '-u' : --set upstream의 약자로 로컬 레포지토리에 있는 main 브랜치가 origin에 있는 main 브랜치를 tracking(추적)하도록 설정 (tracking connection)
- tracking connection이 한 번 설정되고 나면 현재 main 브랜치에 위치해서 git push / pull라고 입력해도 리모트 레포지토리의 main 브랜치를 대상으로 똑같이 동작함
- '-u'옵션을 주지 않아도 git pull/push할 수 있으나 git push origin main:main 이런식으로 복잡하게 표현해야 함
git push를 하면 main, [origin/main] 브랜치 모두 같은 커밋을 가리키게 됨HEAD -> branch -> commit
* HEAD & branch : 어떤 커밋을 가리키는 존재 -> "포인터"

git checkout [브랜치명] 하면 코드의 관리 흐름이 [브랜치명]으로 이동함
머지 커밋 : HEAD가 가리키던 커밋에 다른 브랜치가 가리키던 커밋을 합쳐서 새로운 커밋을 만드는 작업