SUIN

내가 보려고 정리한 git 본문

Git

내가 보려고 정리한 git

choi suin 2022. 8. 9. 16:28
728x90

 

git 작업 상태 기록

git init 파일명  // 깃 작업폴더 감시

git add 파일명1 -> git add file.txt
or 
git add 파일명1 파일명2 ->  git add file1.txt file2.txt
or
git add .(모든파일 스테이징)  // 업로드파일 staging area 

git commit -m ‘메세지’     // 작업 메세지 repository(저장소)

 

  • staging area : commit을 하기 전에 commit 할 파일들을 골라놓는 곳
  • 그리고 staging area에 파일 넣는 행위를 staging이라고 한다.
  • repository : commit된 파일의 버전들을 모아놓는 곳
  • git commit을 통해 repository(저장소)로 옮겨지게 된다.

Q. 얼마나 자주 commit 하는 게 좋을까?

  • 간단한 기능을 하나 추가할 때마다 commit 하면 된다.(습관적으로 할 필요 없음)

예를 들어 웹 개발 시 회원가입 기능을 만든다고 하면

  • 회원가입 폼 레이아웃을 만들면 commit 하고
  • 입력한 이메일이 맞는지 검증하는 기능을 만들었으면 commit 하고
  • 서버에 전송하는 기능을 만들었으면 commit 하고


이외 명령어

git status  //변경된파일,staging 된 파일 확인

git restore --staged 파일명  //staging 된 파일 취소

 

git log --all --oneline    //commit log 확인 
git log --all --oneline --graph // 그래프 형식의 commit log 확인 

// 종료시 q

 


commit file 비교 (difftool )

  • commit 하기 전 현재 코드와 차이점을 확인하기 위한 용도로 사용
git difftool                            //최근commit과 현재파일 비교 
- 방향키 - hjkl
- 종료키 - :q :qa

git difftool 커밋 아이디                  //특정 커밋기록 비교
git difftool 커밋아이디1 커밋아이디2        //두 commit 비교

git Graph 에디터 설치시 간편하게 확인가능


git branch

git branch 브랜치이름 //브랜치 생성
git switch 브랜치이름 //해당브랜치로 이동

git merge

git switch main  //merge할 브랜치로 이동 
git merge 브랜치명

 

다양한 merge방법

 

다양한 Git merge 방법 알아보기(3-way merge/fast-forward merge/rebase and merge/squash and merge)

로컬 저장소에서 바로 merge 하는 방법도 있지만 협업을 하면서 merge전 검토 과정을 거치게 된다. 1. 3-way merge 새로운 commit branch 생성 git flow : feature/develop 브랜치에서 많이 사용 2. fast-forwar..

suinchoi.tistory.com

git branch -d 브랜치명      //merge완료된 브랜치 삭제 

//merge하지 못한 브랜치의 경우 git branch -D  대문자로 삭제

git 복구 , 취소, 돌아가기 (restore/revert/reset)

restore

git restore 파일명          //해당파일의 최근 commit 상태로 돌아감

git restore --source 커밋아이디 파일명  //해당파일의 특정 상태의파일로 복구 

git restore --staged 파일명        //특정 파일 staging 취소

revert

git revert 커밋아이디         //해당 id 작업의 commit 취소
or
git revert 커밋아이디1 커밋아이디2 (중복취소)

//i로 커밋메세지 글 수정
//:wq로 저장후 닫기 

git revert HEAD        //최근 commit 취소

reset

git reset --hard 커밋아이디     //특정 로그로 되돌리기 (과거로 되돌아가기) 

//주의!:협업할떄 위험해서 사용하지 않음 .기존의 작업도 삭제되기때문에 공유된 코드가 삭제될 가능성이 있음 


git reset --soft 커밋아이디  //리셋은 하지만 변경사항을 staging 에 남아있음(별도의 커밋가능) 
git reset --mixed 커밋아이디 //리셋은 하지만 변경사항을 unstage 된 상태로 남아있음(별도의 스테이징 필요)

git push

로컬 저장소 → 원격 저장소

git push -u 원격저장소주소 브랜치이름

-u 옵션 : 입력한 주소를 기억해라 (이 이후에는 주소 입력 없이 git push로 가능 )

git remote add origin 원격저장소주소
//원격저장소주소 변수에 저장 가능
git clone https://원격저장소주소
//원격 저장소 주소 내려받기

git pull

  • 원격과 로컬 저장소의 내용이 다르다면 push가 되지 않는 상황이 발생하게 된다(merge conflict). 이는 다른 사용자와 협업을 할 때 자주 방생되게 되는데 이런 경우 git pull 통해 원격 저장소의 내용을 가져온 후 push가 가능하다
git pull 원격저장소주소
  • git pull 명령어는 git fetch + git merge 축약어
  • git merge: fetch 된 내용을 merge 하라는 뜻
  • git fetch: 원격 저장소에 있는 commit 중에 로컬에 없는 신규 commit을 가져오라는 뜻

 


pull request

- 로컬 저장소에서 바로 merge를 할 수도 있지만 협업을 할 때 팀끼리 merge를 하기 전 검토 과정을 거치게 된다.

push 후 해당 레포의 pull reqst 요청을 통해 검토 후 merge 진행