본문 바로가기
Git

Git 자주쓰이는 명령어 모음

by 봄석 2019. 3. 14.

기본 명령어

저장소 생성

git init

원격 저장소로부터 복제

git clone {url} {저장할폴더명} // 폴더명을 입력하면 , 현재위치에폴더를 만들면서 클론

변경 사항 체크

git status // 

특정 파일 스테이징

git add {파일명} 

변경된 모든 파일 스테이징

git add * 

커밋

git commit -m “{변경 내용}” 

원격으로 보내기

git push origin master 

원격저장소 추가

git remote add origin {원격서버주소} 

unstaged인 파일 초기화 - discard

unstaged인 모든 파일 초기화

git checkout -- .

unstaged인 하나의 파일 버리기 (초기화 )

git checkout <초기화할 파일의 이름(경로)>

diff

Commit간 비교

git diff <commit hash> <commit hash>


현재 unstaged된  수정사항만 확인하기

git diff


로컬과 리모트간 내용비교

git diff <브랜치명> origin/<브랜치명>

로컬의 브랜치간 비교

git diff <브랜치명> <다른브랜치명>

마지막 커밋과 그이전 커밋 비교

git diff HEAD HEAD^

마지막 커밋과 현재 수정사항 확인

git diff HEAD

현재 stage 된 수정사항만 따로 확인

git diff --cached 또는 git diff --staged

Commit

커밋 합치기

git rebase -i HEAD~4 // 최신 4개의 커밋을 하나로 합치기

커밋 메세지 수정

$ git commit --amend -m "수정할메시지"// 마지막 커밋메세지 수정(ref)

간단한 commit방법

$ git add {변경한 파일병}
$ git commit -m “{변경 내용}"

커밋 이력 확인

$ git log // 모든 커밋로그 확인
$ git log -3 // 최근 3개 커밋로그 확인
$ git log --pretty=oneline // 각 커밋을 한 줄로 표시   
$ git log -p -1 //마지막 커밋의 변경사항(단어단위의)까지 보이기   ,, // 추가 mac 단축키 (fn +shift +위 , fn +shift +아래 )로 pageDown,Up 가능 

커밋 취소

$ git reset HEAD^ // 마지막 커밋 삭제
$ git reset --hard HEAD // 마지막 커밋 상태로 되돌림
$ git reset HEAD * // 스테이징을 언스테이징으로 변경, ref

Branch

master 브랜치를 특정 커밋으로 옮기기

git checkout better_branch
git merge --strategy=ours master    # keep the content of this branch, but record a merge
git checkout master
git merge better_branch            # fast-forward master up to the merge

브랜치 목록

$ git branch // 로컬
$ git branch -r // 리모트 
$ git branch -a // 로컬, 리모트 포함된 모든 브랜치 보기

브랜치 생성

git branch new master // master -> new 브랜치 생성
git push origin new // new 브랜치를 리모트로 보내기

브랜치 삭제

git branch -D {삭제할 브랜치 명} // local
git push origin :{the_remote_branch} // remote

빈 브랜치 생성

$ git checkout --orphan {새로운 브랜치 명}
$ git commit -a // 커밋해야 새로운 브랜치 생성됨
$ git checkout -b new-branch // 브랜치 생성과 동시에 체크아웃

리모트 브랜치 가져오기

$ git checkout -t origin/{가져올 브랜치명} // ref

브랜치 이름 변경

$ git branch -m {new name} // ref

Tag

태그 생성

git tag -a {tag name} -m {tag message} {commit hash}
git tag {tag name} {tag name} -f -m "{new message}" // Edit tag message

태그 삭제

git tag -d {tag name}
git push origin :tags/{tag name} // remote

태그 푸시

git push origin --tags
git push origin {tag name}
git push --tags


기타

파일 삭제

git rm --cached --ignore-unmatch [삭제할 파일명]

히스토리 삭제

  • 목적: 패스워드, 아이디 같은 비공개 정보가 담긴 파일을 실수로 올렸을 때 삭제하는 방법이다. (history에서도 해당 파일만 삭제)
$ git clone [url] # 소스 다운로드
$ cd [foler_name] # 해당 폴더 이동
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch [삭제할 파일명]' --prune-empty -- --all # 모든 히스토리에서 해당 파일 삭제
$ git push origin master --force # 서버로 전송

히스토리에서 폴더 삭제:

git filter-branch --tree-filter 'rm -rf vendor/gems' HEAD

리모트 주소 추가하여 로컬에 싱크하기

$ git remote add upstream {리모트 주소}
$ git pull upstream {브랜치명}

최적화

$ git gc
$ git gc --aggressive


파일 삭제

git rm --cached --ignore-unmatch [삭제할 파일명]

히스토리 삭제

  • 목적: 패스워드, 아이디 같은 비공개 정보가 담긴 파일을 실수로 올렸을 때 삭제하는 방법이다. (history에서도 해당 파일만 삭제)
$ git clone [url] # 소스 다운로드
$ cd [foler_name] # 해당 폴더 이동
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch [삭제할 파일명]' --prune-empty -- --all # 모든 히스토리에서 해당 파일 삭제
$ git push origin master --force # 서버로 전송

히스토리에서 폴더 삭제:

git filter-branch --tree-filter 'rm -rf vendor/gems' HEAD

리모트 주소 추가하여 로컬에 싱크하기

$ git remote add upstream {리모트 주소}
$ git pull upstream {브랜치명}

최적화

$ git gc
$ git gc --aggressive



출처 - https://github.com/jeonghwan-kim/git-usage

참고 - https://blog.outsider.ne.kr/572

참고 - https://dimdim.tistory.com/entry/GIT%EC%97%90-%EB%8C%80%ED%95%9C-%EB%82%B4%EC%9A%A9%EC%A0%95%EB%A6%AC-%EC%A0%95%EB%A6%AC%EC%A4%91

댓글