git diff - 파일 수정 후의 before / after
git commit -a -m "message" = git commit -am "message"
-a : auto adding, 자동으로 add가 된다. (tracked 상태의 파일에 대해서만)
add의 3대 의미
1. commit 대기 상태를 만듦
2. untracked를 tracked로 만듦
3. 충돌을 해결했다는 것을 git에게 알려줌
gitignore
git reset
checkout은 head를 옮기고 reset은 head가 가리키는 branch를 옮긴다.
reset은 마지막 작업 버젼을 바꾸는 것
git reset --hard (version id)
it checkout -b 브랜치id : branch 만들고 checkout
git log --oneline --all --graph : 로그를 그래프 모양으로 보여줌
alias(전역설정) :
git config --global alias : 별명 부여
ex)
git config --global alias.l "log --oneline --all --graph"
-> git l = git log --oneline --all --graph
git reset --hard HEAD@{1} : 최근 1개 reset
원격 저장소 설정
git remote repository 생성
git remote add origin <원격 저장소 주소> : 깃 원격 저장소 연결
git remote -v : 깃 원격 저장소 연결 확인
git push --set-upstream origin master : 오리진 마스터 브랜치와 로컬 마스터 브랜치를 페어링
git push : 로컬 repo의 변동 사항을 원격 repo에 올린다
git commit --amend -m "메시지" : 마지막 version의 commit message 변경 → id도 변경
git pull <원격 저장소 주소> : 원격 repo 내용을 로컬로 가져옴. 새로운 경로에서 <주소>입력으로 다운 가능
.vscode와 같은 개인설정 파일은 git -> info -> exclude에 넣어 사용
(로컬에 저장되며 git push로 올라가지 않음. ignored와 다르게 제외 정보조차 올라가지 않는다.)
config.txt.template : config의 형식을 나타냄.
ignore 자동생성 : https://www.toptal.com/developers/gitignore
생활 코딩 conflict 관련 https://www.youtube.com/watch?v=wVUnsTsRQ3g
git clone (원격 저장소 주소) (+) (현재 저장소, 생략 가능, 다른 저장 위치로 설정) : 원격 저장소를 로컬에 복제
git push -u origin(원격) master(로컬) : 원격 저장소와 페어링 후 push(u = --set-upstream)
git rebase : commit 조작
branch
- branch를 적극적으로 사용해서 project를 체계적으로 관리
- git flow / github flow 등
- git hub flow 전략(아래)
- master는 언제나 실행 가능하고 테스트 가능해야 한다.
- 새로운 기능을 추가할 때는 branch를 만들어 pull-request로 merge
git tag 태그이름 - 태그를 달 수 있음
로컬 branch를 만든 후 push --set-upstream 브랜치명
-> 원격 branch 생성 및 연결
-> master로 checkout
-> master에서 로컬 branch merge? -> merge commit 생성되지 않음 (master가 별도로 작업한 게 없기 때문)
-> fastforward (따로 merge commit 필요 없이 master가 로컬 branch와 동일 version으로 이동, 변경 사항 반영)
git merge --no-ff (브랜치명) : fastforward 못하게 하는 명령(병합을 명시하기 위해, flow 확인 수월)
git branch -d (브랜치명) - 브랜치 삭제
pull-request
- branch를 master로 합쳐달라는 요청
-> branch를 만든 후 원격 저장소에 push
-> 원격 저장소에 pull request 등장 == 내가 만든 브랜치를 마스터에 병합하도록 승인 요청- 코드 비교, 기능
assignees - 담당자
reviewers - 코드 리뷰를 맡김- Create pull request (pull request 신청)
conversation : 종합적인 timeline
(* merge 되기 전의 push 변동 사항은 자동으로 업데이트된다.)
file changed : 해당 branch에서 변경된 내용들을 보여줌
- + 버튼을 통해 line 별로 comment를 달 수 있다(add single comment).
start a review는 여러 파일에 걸쳐서 리뷰를 달 수 있다.
-> finish your review로 작성 완료
병합의 두 가지 방법
- 책임 있는 사람이 Merge pull request를 누르는 방법 -> confirm merge
- local 에서 git checkout master로 가서 merge(fast-forward) 후 push
→ 1번 방법(원격 저장소 제어) 후 로컬에서 git pull -> fast-forward
서로 다른 branch에서 같은 파일을 작업, pull request
→ git 원격 저장소에서 conflict를 감지하고 그것을 알려줌
→ local에서 conflict 해결 후 push / remote에서 resolve
→ merge pull request
git config --global core.editor "code --wait" : vs code를 터미널에서 키는 명령어
git cherry-pick (원하는 version의 commit id) -> 하나의 version 만 가져오는 것, 부분 병합
rebase