자주 사용하는 깃허브 명령어를 정리해봤다.
git init
- 폴더를 생성하고 그 폴더 안에서 git init을 하면 이 폴더는 깃저장소가 된다.git clone 사용자명@호스트:/원격/저장소/경로
- 원격 저장소 복사
git remote -v
- 원격 저장소 가져왔는 지 확인
- 커밋(commit)
- Git에서 commit이란, 프로젝트의 현재 상태를 나타내는 체크포인트 또는 스냅샷으로 생각할 수 있다.git status
- 깃으로 현재 작업중인 상태나, 파일 추가 여부를 확인할 수 있다.Staging Area
- 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장한다.git add 파일명
- git add를 통해 파일을 staging Area에 넣을 수 있다.
- 예시
- git add
- 한번에 추가
- git add hello1.py hello2.pygit commit -m "Commit message"
- git add
- staging area에 올린 파일들에 대한 커밋 메세지 작성
git push origin master
- 커밋한 내용을 원격 서버로 올리기
- git log
- 모든 커밋 내역을 볼 수 있다.git checkout <commit-hash>
- 특정시점으로 커밋을 되돌릴 수 있다.
- 즉 가리키는 포인트를 바꾸며 코드도 이때로 돌아간다.
- 다만 그렇다고 그 이후의 커밋이 사라지는 것은 아니다.
- <commit-hash>는 git log치면 나온다.Ignoring files
- staging area에 추가하고 싶지 않거나, git에서 관리하지 않아도 되는 파일이 있다면
.gitignore
파일을 프로젝트 폴더에 생성해주면 된다.브랜치(Branch) - 동일한 소스코드를 공유하면서 서로 다른 작업을 할 때 사용
- git checkout -b 이름
- checkout을 하는 데 없으면 생성
- git branch 이름
- 브랜치 생성
- git checkout 이름
- 이름으로 브랜치 변경
- git push origin <가지 이름>
- 생성한 가지 원격저장소로 올리기.
- git switch 이름
- checkout기능을 분리한 것
- git merge 이름
- git switch로 주 브랜치가 될 곳으로 이동하고
- 주 브랜치에 합치고 싶은 브랜치 이름을 넣어준다.
- 만약 중복된 부분이 있다면 두 코드중 하나는 지워야 한다.
- 이 때까지 step은 기존의 자신이 했던 커밋을 가리키고 있다. 아래를 통해 같은 곳을 바라보도록 하자.
- git switch step
- git merge 주브랜치이름
- git rebase 이름
- A브랜치를 B브랜치 위로 올리고 싶을 때
- git switch A
- git rebase B
- B 부모로 A가 이동한다.
- git switch B
- git rebase A
- B가 부모 끝을 가리키게 된다.
- 단점
- A가 B위로 올라가면서 기록(History)이 지워진다.
- 헤드
- git switch HEAD^
- ^는 carot이라고 한다.
- 헤드가 한칸 뒤로 간다. ^붙인 만큼 뒤로 돌아간다
- ~(tilde)숫자
- git switch HEAD~3
- 틸드 뒤에 숫자를 붙이면 숫자만큼 뒤로간다.
- git reset HEAD~1
- 내 로컬 작업되돌리기
- 그럼 커밋하나가 완전히 지워진다.
- git reset --hard 삭제전의 커밋해쉬값
- 삭제한 거 되돌리기
- git reflog
- 모든 로그를 볼 수 있다
- 해쉬 값도 나온다.
- 제거를 해도 해쉬 값은 남아 있고 이로 reset시키면된다.
- git switch -c 새브랜치명 삭제된브랜치의 커밋해쉬값
- 삭제된 브랜치 되돌리기
- git revert HEAD
- 커밋을 삭제하지 않고 새로 추가하면서 되돌린다.
- git cherry-pick
- git fetch origin 브랜치이
- git pull이란 원격 저장소의 정보를 가져오면서 자동으로 로컬 브랜치에 병합(Merge)까지 수행해주는 명령어이다.
- git pull origin 브랜치이름
- 원격 저장소의 커밋들을 로컬 저장소로 가져온다. 그리고 자동으로 병합(Merge)를 해주지 않기 때문에 본인이 직접 확인을 한 후에 병합(Merge)하는 과정을 거쳐야한다.