git config --global user.name <username>
git config --global user.email <email>
windows line ending = CR(\r) + LF(\n)
unix or mac line ending = LF(\n)
windows 사용자와 mac 사용자가 같은 git repository를 작업할 때 코드에서 변경된 내용이 없어도 CRLF 차이로 인해 commit이 발생할 수 있다.
# windows 사용자
# 가져올 때는 LF를 CRLF로, 보낼 때는 CRLF를 LF로 변경
git config --global core.autocrlf true
에디터 설정
git config --global core.editor vim
전체 설정 확인
git config --list
# Q 눌러서 빠져나올 수 있다.
항목별 설정 확인
git config <key>
checkout
- 특정 시점이나 branch의 소스코드로 이동하는 것
- checkout 대상 : branch, commit, tag
- checkout을 통해 과거 여러 시점의 코드로 이동 가능
stage
- 작업할 내용이 올라가는 임시 저장 영역
- 작업한 내용 중 commit에 반영할 파일만 선별하여 commit 수행 가능
commit
- 의미 있는 변경 단위로, 변경에 대한 설명을 commit log로 남김
- commit을 아끼지 말 것!
tag
- 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여 놓은 이정표
- tag가 붙은 commit은 commit id 대신 tag name으로 checkout 가능
push
local repository에서 수정한 내용을 remote repository에 반영되지 않은 commit을 remote repository로 내보내는 과정(코드 검증 후 push 하기)
pull
- remote repository에 있는 내용 중 local repository에 반영되지 않은 내용을 가져와서 local repository에 저장하는 과정
- pull 과정에서 conflict 일어나면 remote repository의 변경 내용을 local repository에 반영하여 conflict 해결 후 다시 push
branch
- 특정 시점에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것
- master branch = 개발의 주축이 되는 branch
- 모든 branch는 최종적으로 다시 master branch에 merge 되는 방식
merge
- branch의 반대 개념으로 하나의 branch를 다른 branch와 합치는 과정
- merge 과정에서 conflict 일어나면 diff를 수정하여 conflict 해결 후 merge 진행
# 폴더에서 git 초기화 - 해당 폴더를 git이 관리하기 시작
git init
# git에 존재하는 파일 확인
git status
>>>
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt
nothing added to commit but untracked files present (use "git add" to track)
# 빈 파일 생성
touch test.txt
# working directory에서 변경된 파일을 stage에 추가
git add test.txt
git status
>>>
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.txt
# stage에 추가된 변경 사항을 head에 반영
git commit -m "first commit" test.txt
git status
>>>
On branch master
nothing to commit, working tree clean
Github token 생성
# remote repository 등록
git remote add origin https://github.com/<repository>.git
got remote add origin https://<username>:<token>@github.com/<repository>.git
# remote repository 정보 확인
git remote -v
# local의 master branch를 remote
git push origin master
README.md 파일 생성 후
git pull origin master
local repository를 생성하지 않은 상태에서 git clone 명령을 사용하여 remote repository를 local에 복제할 수 있다.
# 폴더 만들기 ➡ git init (폴더 초기화) ➡ remote 등록 ➡ pull 한 번에
git clone https://github.com/<repository>.git
git clone https://<username>:<token>@github.com/<repository>.git
# local branch 조회
# branch를 local에서 생성해도 바로 remote에 공유되지 않음
git branch
# remote branch 조회
git branch -r
# local + remote branch 조회
git branch -a
# branch 생성
git branch <branchname>
# branch 이동
git checkout <branchname>
# branch 생성 + 이동
git checkout -b <branchname>
# remote에 branch push
git push origin <branchname>
git branch -a
>>>
branch01
* branch02
main
remotes/origin/HEAD -> origin/main
remotes/origin/branch01
remotes/origin/main
# branch 삭제 (local)
# 현재 머물고 있는 branch는 삭제 불가 - 다른 branch로 이동 후 삭제
git branch -d <branchname>
# branch 삭제 (remote)
git push origin --delete <branchname>