깃 동작 원리와 과정
- Working Directory: 작업할 파일이 있는 디렉토리
- Staging Area : 커밋을 수행 할 파일들이 올라가는 영역
- Local Repository: 로컬 저장소
- Remote Repository : 원격 저장소
- fetch + merge =pull
- git add <특정파일> //working directory=>staging area
- git reset <특정파일> //staging area=>working directory
- git checkout -- <특정파일> // 특정파일의 변경사항을 원래대로 돌려놓음
git clone vs git pull
git clone명령을 사용하면 로컬 저장소의 내용이 원격 저장소의 내용과 일치해진다.
기존에 작업중이었던 사람이 git명령을 사용해서 원격 저장소의 내용을 그대로 가져와버리면 기존에 작업했던 내용들은 직접 복구해야 한다. 즉, git clone은 프로젝트에 처음 투입될 때 사용되어야 하는 명령인 것이다.반면 git pull명령은 원격 저장소의 내용을 가져와서 현재 브랜치와 병합(merge)까지 해주기 때문에, 기존에 작업했던 내용은 유지하면서 최신 코드로 업데이트할 수 있는 것이다
git pull명령은 병합과정도 포함되어 있기 때문에, pull을 하기 전에 commit을 하지 않으면 덮어쓰기 에러가 발생할 수 있다. 즉 기존 작업에 대해 commit을 미리 해두고 pull을 수행해주자.
1.원격 저장소의 특정 브랜치만 클론하기
git clone -b <branch명> <remote_repo 주소>
2. 클론후 원격저장소의 브랜치 가져오기+브랜치이동
git checkout -t <원격저장소이름/브랜치이름>
3.원격 저장소의 특정 브랜치 로컬에 풀하기
git pull <원격저장소명> <브랜치이름>
git commit
1.commit은 당시의 스냅샷이다
원한다면 그때의 시점으로 돌아갈수있다
git reset --hard commithash
- 특정 커밋시점으로 돌아가고 그 이후는 다 지워버림
- 이경우 로컬저장소의 커밋지점이 바뀌고 원격저장소와는 커밋내역이다르기때문에 일반 push는 안됨
git push -f <원격저장소명> <브랜치명>
이용2.commit내역 수정
git commit --amend
// commit내역 수정
git log
1. 엔터로 더 내려볼수있고 q로 나갈수있음
2.초록색은 로컬을 /빨간색은 원격을 뜻함
branch 관련 명령어
1.로컬의 브랜치 삭제하기
다른브랜치로 이동후
git branch -d <branchname>
2.원격 저장소의 브랜치 삭제하기
git push origin --delete <브랜치명>
3.원격&로컬의 모든 브랜치를 표시
git branch -a
4.git 브랜치가 목록에서 보이지 않을 때
git remote update
5.원격 브랜치만 표시
git branch -r
6.원격저장소의 해당 브랜치를 로컬에도 생성한 뒤 해당 브랜치로 이동
git checkout -t <원격저장소이름/브랜치이름>
remote 관련 명령어
1. 리모트 저장소 추가
git retmote add <원격저장소별칭> <원격저장소 주소>
2.리모트 저장소 이름 변경
git remote rename <전> <후>
3.리모트 저장소 삭제
git remote rm <저장소이름>
work flow
1. 싱크맞추기
git pull upstream dev
upstream/dev의 변경사항을 로컬과 맞추어준다
(브랜치가 devd인 상태에서)2.작업하기
- 로컬에 feature브랜치 생성
git branch featrue
- 로컬의 feature브랜치로 이동
git checkout featrue
- 이동한 feature 브랜치에서 작업하고 commit하기
git add .
git commit -m "[커밋타입] 커밋메세지"
- 작업한 내용 로컬의 dev로 머지시키기
git checkout dev
git merge feature
- 로컬의 commit내역 myrepo로 push
git push myrepo dev
- feature 브랜치 삭제
git branch -d feature
- pull request 생성
- 리뷰후 merge