소스트리를 사용할 경우에는 명령어가 필요하지 않지만 터미널이나 git bash에서 바로 git을 이용하기 위해서는 알아야 할 명령어가 많다. 차츰 익숙해지면 자연스럽게 사용할 수 있을것 같은데
지금은 잘 모르기 때문에 git 명령어에 대해 정리를 해봤다. 강의를 보면서 급하게 정리한거라서
제대로 정리가 안됐을것 같기도 한데 그건 차츰 git을 사용하면서 보완할 예정이다.
git bash
- git init - 깃 저장소를 만듬
- touch [파일명] 빈 파일을 만듬
- git add 파일명 파일을 stage에 add 함
- git status 현재 깃 상태 확인
- git commit -m "commit메시지" 깃 커밋하기 (커밋메시지에 제목만 간단히 작성)
- git commit -> enter 상세하게 커밋 작성할 때 vi편집기로 이동
a or i or o 눌러서 편집기 하단 insert 상태가 된 걸 확인후 커밋작성, 작성후 esc 누름
그 후 ':' + w 입력 ->커밋 작성 -> ':' + q입력 vi편집기 닫힘 ->한번에 입력하려면 : 엔터 후 wq 엔터 (저장하고 닫겠다.)
개발 과정중 여러개의 파일이 변경 되었을 경우
-
git add . 변경된 모든 파일 스테이지에 올리기(현재 작업 디렉토리에 있는)
한번이라도 커밋을 했거나 git이 변경사항을 추적하고 있는 파일에 대해서는
스테이지에 추가와 커밋을 한번에 할 수 있다.
-
git commit -am "커밋메시지"
-
git log 창에서 나가기 Q
-
git log --oneline : git log 한줄로 표시하기
-
git log -p(or --patch) 어떤 변경사항을 담고 있는지 표시
-
git log --graph(소스트리의 그래프처럼 터미널에서 표시)
각각의 명령어 한줄로 표시할 수도 있음
ex: git log --oneline --graph 한줄로 표시하면서 그래프 표시
git에 명령어로 tag 붙이기
- git tag 버전
ex: git tag v0.0.1
- 특정 커밋에 태그달기
git log 버전 해당커밋 해쉬(긴 해쉬로 할 수도 있고 짧은 해쉬로 할 수도 있음. git --oneline에서 나오는 해쉬)
태그 목록 조회
- git tag (git tag --list, git tag -l)
태그 삭제
- git tag --delete(-d) 태그이름(버전)
커밋끼리 무엇이 다른지 알아보는 방법
- git diff : 지금까지 작업 디렉토리의 변경사항과 가장 최신 커밋의 차이를 보여줌
- git diff --staged(or --cached) 스테이지와 가장 최신 커밋의 차이를 보여줌
git diff A커밋해쉬 B커밋해쉬 (앞 뒤 순서 바뀌면 결과도 달라짐) : B커밋해쉬는 A커밋해쉬랑 뭐가 다른가?
Revert하기
Reset하기
- git reset 되돌아갈커밋해쉬 옵션 없을경우 mixed 리셋(옵션:soft, mixed, hard)
- git reset 옵션 되돌아갈커밋해쉬
임시저장(stash)
- git stash list 임시 작업저장 내역 조회
- git stash 할 때 가장 최근에 저장한게 인덱스0번이 됨
- git stash -m "코멘트"
- git stash apply stash[i] stash뒤에 적용하고싶은 커밋의 인덱스 번호입력
임시저장된 항목 삭제
- git drop stash[i] 해당 stash인덱스 번호
git branch 관리하기
- git checkout 브랜치이름 특정 브랜치로 체크아웃하기 (작업환경 바꾸기)
- git log --branches 브랜치의 log까지 다 보여줌 (--branches 없으면 현재 로그만 보여줌)
branch 병합하기
- git merge 병합하고자 하는 브랜치가 아닌 다른 브랜치로 체크아웃 한 후 merge하고자 하는 branch이름 입력
- 브랜치 병합 후 필요없어진 브랜치는 삭제하는게 좋음
- git branch -d 삭제하고자하는 브랜치 이름
- git branch -b 브랜치이름 : 브랜치를 만들면서 만듦고 동시에 체크아웃 하겠다
명령어를 이용해서 rebase 하기
원격저장소와 상호작용하기
원격저장소에 명령어로 레포지토리 만들기
- git init
- git add README.md
- git commit -m "first commit"
- git branch -M main (브랜치명을 master에서 main으로 변경)
원격저장소 추가 명령어
-
git remote add [원격저장소별명][원격저장소주소]
ex) git remote add origin git@github.com:ljwon1203/second_repo.git
-
git push 푸시할곳[어디에] 변경사항있는브랜치
-
git push (-u) origin main (-u 한번 입력하면 이후부터는 origin main 생략가능)
-
git fetch (-u) origin main (-u 한번 입력하면 그 후 origin main 생략가능)
: 변경사항을 병합하지 않고 일단 가지고만 온다.
-
git checkout FETCH_HEAD : fetch를 해온 내용들을 가리키고 있는 일종의 head
-
git merge origin/main : origin/main원격저장소에서 만들어 낸 변경사항을 main브랜치로 병합
-
git pull (-u) origin main : 원격 origin에 있는 내용을 main으로 가져오기.
pull은 fetch와 merge를 동시에 해주는 것.
풀리퀘스트(Pull Request)
- 기여하려는 저장소를 본인 계정으로 포크하기
- 포크한 저장소를 클론하기
ex) git clone git@github.com:ljwon1203/collaboration.git
- 브랜치 생성 후 생성한 브랜치에서 작업하기
ex) main branch에서 git checkout -b myname (새로운 브랜치 만듦과 동시에 myname으로 체크아웃)
3-1 작성한 내용 커밋하기 (add . commit)
- 작업한 브랜치 푸시하기
ex) git push origin myname(origin에 myname이란 브랜치를 푸시)
- 풀 리퀘스트 보내기
ex) github 사이트에서 Compare & pull request 하기