티스토리 뷰
1년동안 Git을 사용하며 자주 사용한 명령어를 정리했습니다 :)
congif
초기설정
git config --global user.name 'name' // --global로 설정된 값은 처음 한 번만 설정
git config --global user.email 'gthub email' // 매번 다른 이름과 메일주소를 사용할 것이라면 --global 안써도 됨
설정확인 / 삭제
git config --list // 현재 git 설정을 출력
git config --unset user.name // 설정된 user.name 삭제
git config --unset --global user.email // --global로 설정된 user.email 삭제
저장소 생성
저장소 생성
// 먼저 저장소를 만들 위치로 이동
git init
git init --bare 저장소이름 // 수정없이 저장만 할 저장소 생성
remote저장소 생성
git remote add origin '저장소주소' // 해당 주소로 연결되는 origin이라는 이름의 remote저장소 생성
git remote // 현재 프로젝트에 등록된 remote저장소 목록을 보여줌
git remote -v // remote저장소 목록을 ULR과 함께 보여줌
git remote set-url 저장소이름 새로운저장소주소 // remote저장소의 url주소
status
현재 파일들의 상태 출력
git status
- Untracked file: add되기 전. git의 추적을 받지 않는 파일
log
git log // 현재까지 commit한 내용 출력
git log -p // 각 commit사이의 소스코드상의 변경사항을 함께 출력
git log diff commitID1..commitID2 // commitID1과 commitID2사이의 변경사항 출력
git log --branch // 모든 브랜치를 표현
git log --graph // 그래프로 표현
git log -1 // 최근 1개의 log만 표시
diff
git diff // modified 상태가 되며 수정된 요소가 무엇인지 출력
add
파일을 add하기
git add 'File'
git add * // 모든 파일을 add
git add -u // modified & deleted 파일만 add
add 취소하기
git reset // 모든 파일의 add를 취소
git reset 'File' // 해당 파일을 unstaged상태로 변경
git clean -fdx // 모든 untracked파일 삭제
rm
git rm 'File' // 파일을 삭제 후 staged상태로 변경(work directory의 파일도 삭제)
git rm --cached 'File' // 파일을 untracked상태로 변경(work directory의 파일은 그대로 유지)
commit
commit하기
git commit
git commit -a // modified & deleted 파일을 자동으로 add하고 commit
git commit -m 'commit message' // 에디터를 거치지않고 바로 commit메세지 작성
commit 취소 하기
git reset 버전아이디 --hard // 작성한 commit아이디 상태로 돌아가고 그 이후의 버전은 버림
git reset --hard HEAD^ // 마지막 커밋 바로 이전으로 돌아가고 마지막 커밋은 버림
git reset HEAD^ // 마지막 커밋을 취소하고 내용은 남김채 unstaged 상태로 만들기
git reset --soft HEAD^ // 마지막 커밋을 취소하고 내용은 남김채 staged 상태로 만들기
git revert 버전아이디 // 버전아이디 커밋을 취소한 내용을 새로운 버전으로 만듦
* 반드시 push전에 할 것
마지막 commit 수정하기
git commit --amend // 편집기에서 새로운 커밋메세지 작성 후 반영
// 파일 수정 후 add하여 실행할 시 해당 파일의 수정사항을 마지막 커밋에 추가
git commit --amend --no-edit // 커밋 메세지 수정없이 커밋 내용 반영
git commit --amend -m '새로운 메세지' // 바로 직전의 commit 메세지를 변경
* 반드시 push전에 할 것
checkout
브랜치 이동
git checkout HEAD~1 // 현재 위치에서 1단계 전 commit으로 돌아가기
git checkout 'name of branch' // 해당 브랜치로 이동
modified전 상태로 되돌리기
git checkout . // (위치: repository_root_dir) 프로젝트 내 모든 파일을 modified되기 전 상태로 되돌리기
git checkout 'dir' // 해당 폴대 내 모든 파일을 modified되기 전 상태로 되돌리기
git checkout -- 'file' // 해당 파일이 modified되기 전 상태로 되돌리기
push
Github에 작업물 push
- Github에 repository생성
- 작업 후 commit
pull
git pull // update내용을 local로 가져오기
stash
git stash // 새로운 stash 생성
git stash save // 새로운 stash 생성
git stash list // stash 목록 확인하기
git stash apply // stash 적용하기
git stash apply --index // Staged상태로 stash 적용하기
git stash apply 'stash name' // stash 적용하기
git stash drop // 가장 최근의 stash
git stash drop 'stash name' // 해당 stash 제거
git stash show -p | gir apply -R // stash 되돌리기
git stash show -p 'stash name'| git apply -R // 해당 stash 되돌리기
branch
git branch // 현재 브랜치목록을 보여줌
git branch -r // 원격 저장소의 브랜치목록을 보여줌
git branch -a // 로컬, 원격 저장소의 브랜치 목록을 보여줌
branch 생성, 전환, 삭제
git branch nameOfBranch
git checkout master // master브랜치로 이동
git branch -d nameOfBranch // 현재 위치가 삭제할 브랜치여서는 안됨
git branch -D nameOfBranch // 병합하지 않은 브랜치를 강제 삭제
git push origin --delete nameOfbranch // 리모트 저장소의 브랜치
git checkout -b nameOfBranch // 새로운 브랜치를 생성하고 생성 브랜치로 전환
cherry-pick
- 다른 branch에 있는 commit을 선별적으로 현재 branch에 반영
merge branch
- commit ID가 보존됨
git checkout branch1 // branch1으로 이동
git merge branch2 // branch2를 branch1(현재 위치한 브랜치)에 merge
>git merge --no-ff branch2 // 3-Way Merge 수행 git merge --squash branch2 // branch2의 커밋을 하나로 합쳐서 merge // 이후 Staging Area에 올라온 파일을 커밋해줘야 함
rebase branch
- 여러개의 commit을 다룰 수 있음
- 새로운 commit이 생성되므로 commit ID가 변경됨
git rebase nameOfBranch // 현재 branch와 대상 branch의 공통 조상부터 대상 branch의 최신 커밋까지
// 순서대로 하나씩 가져와 현재 branch에 붙임
git rebase -i HEAD~3 // 현재 branch의 HEAD로 부터 3개의 commit을 편집
branch 충돌 해결
- CONFLICT 에러 발생
- git status로 충돌이 일어난 파일 확인
원격 저장소의 branch 로컬로 가져오기
git branch -r // 원격저장소의 브랜치목록 보기
origin/branch1 // '저장소명'/'브랜치명'
git checkout -t origin/branch1 // 로컬에 'branch1'를 만들고 이동
git checkout -b 'new-branch-name' 'origin/branch1' // 새로운 이름으로 브랜치 가져오기
etc
pwd // 현재 나의 위치
mkdir 폴더명 // 현재 위치에 새로운 폴더 생성
cp file1 file2 // file1과 같은 내용의 fil12를 생성(확장자 쓰기)
git // 사용할 수 있는 명령어 표시
ls -al // 현재 디렉토리의 파일 목록 출력
cat 파일명.확장자 // 선택한 파일의 내용을 출력
명령어 --help // 해당 명령어에 대한 메뉴얼을 보여줌
'Git' 카테고리의 다른 글
[Git] fork한 repository 최신으로 동기화하기 (0) | 2020.02.09 |
---|
댓글