mingrammer/git-tips
Snapshot của mingrammer/git-tips: 1.0k★ · Developer Tools. :books: Git 팁 모음집 (https://github.com/git-tips/tips 한국어 버전)
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
Snapshot
Cộng tác viên hàng đầu
Xem cộng tác viên hàng đầu
Git Tips
git tips의 한국어 버전 문서입니다.
English | 中文 | Русский | Tiếng Việt | 日本語 | नेपाली | Polski
팁 툴
- git-tip - 아래에 나열된 팁들을 사용할 수 있는 CLI 툴 (도커 컨테이너)
목차
참고로 모든 명령어는 다음 버전에서 테스트 되었습니다:
git version 2.7.4 (Apple Git-66).
- 20개 내외의 명령어로 Git 사용하기
- Git과 함께 제공되는 유용한 가이드라인 보기
- 내용으로 변경사항 검색
- 원격지 동기화 및 로컬 변경사항 덮어쓰기
- 특정 커밋까지의 모든 파일 나열하기
- 첫 번째 커밋 초기화
- 충돌된 모든 파일 나열하기
- 특정 커밋에서 변경된 모든 파일 나열하기
- 마지막 커밋 이후로 스테이징되지 않은 변경사항 보기
- 커밋을 하기 위해 스테이징된 변경사항 보기
- 스테이징된 변경사항과 스테이징되지 않은 변경사항 모두 보기
- 이미 마스터 브랜치에 머지된 모든 브랜치 나열하기
- 이전 브랜치로 전환하기
- 이미 마스터 브랜치에 머지된 모든 브랜치들 삭제하기
- 모든 브랜치들 및 그 브랜치들의 업스트림과 마지막 커밋 나열하기
- 업스트림 브랜치 설정 (트래킹)
- 로컬 브랜치 삭제
- 원격 브랜치 삭제
- 로컬 태그 삭제
- 원격 태그 삭제
- 로컬 변경사항을 헤드의 마지막 내용으로 되돌리기
- Revert: 새로운 커밋을 생성하면서 커밋 되돌리기
- Reset: 커밋 제거 (프라이빗 브랜치에서만 사용하길 권고)
- 이전 커밋 메시지 변경
- 브랜치의 커밋중 업스트림에 머지되지 않은 커밋 히스토리 보기
- Author 수정하기
- 글로벌 설정에서 변경된 author로 author 재설정하기
- 원격지 URL 변경하기
- 모든 원격지 레퍼런스 리스트 나열하기
- 모든 로컬 및 원격지 브랜치 나열하기
- 원격지 브랜치만 나열하기
- 파일 변경사항의 전체가 아닌 일부만 스테이징하기
- git 배시 자동완성 사용하기
- 2주 전부터 현재까지의 변경사항 보기
- 마스터로부터 포크한 이후에 생성된 모든 커밋 보기
- cherry-pick을 사용해 브랜치간 커밋 가져오기
- 해당 커밋 해시를 가지고 있는 브랜치들 검색하기
- Git 명령어 별칭 지정
- 커밋하지 않은 트래킹된 파일들의 상태 저장하기
- 스테이징되지 않은 변경사항들의 현재 상태를 트래킹된 파일로 저장하기
- 트래킹되지 않은 파일들까지 모두 포함해 현재 상태 저장하기
- 현재 상태를 메시지와 함께 저장하기
- 모든 무시된 파일, 트래킹되지 않은 파일, 트래킹된 파일들의 현재 상태 저장하기
- 저장된 모든 스태시 리스트 나열하기
- 스태시 리스트에서 삭제하지 않고 스태시 적용하기
- 마지막으로 저장된 스태시 상태를 적용하고 스태시 리스트에서 삭제하기
- 저장된 모든 스태시 삭제하기
- 스태시로부터 단일 파일 가져오기
- 트래킹된 파일들 모두 보기
- 트래킹되지 않은 모든 파일 보기
- 무시된 파일들 모두 보기
- 저장소에 새로운 워킹 트리 생성하기 (git 2.5)
- HEAD로부터 새로운 워킹 트리 생성하기
- 파일을 삭제하지 않고 언트래킹하기
- 트래킹되지 않은 파일/디렉토리를 실제로 삭제하기 전에 어떤 파일/디렉토리가 삭제되는지 테스트 해보기
- 트래킹되지 않은 파일들 강제로 삭제하기
- 트래킹되지 않은 디렉토리 강제로 삭제하기
- 모든 서브 모듈 업데이트하기
- 현재 브랜치에서 아직 마스터에 머지되지 않은 모든 커밋들 보기
- 브랜치명 수정하기
- 'feature' 브랜치를 마스터에 리베이스한 후 마스터에 머지하기
- 마스터 브랜치 아카이브
- 커밋 메시지는 변경하지 않고 이전 커밋 변경하기
- 원격지에서 삭제된 원격 브랜치 레퍼런스 제거하기
- 첫 리비전의 커밋 해시값 가져오기
- 버전 트리 시각화
- 트래킹된 하위폴더를 gh-pages 브랜치로 배포하기
- subtree를 사용해 저장소에 프로젝트 추가하기
- subtree를 사용해 관련된 프로젝트의 최신 변경사항을 저장소로 가져오기
- 브랜치를 히스토리와 함께 파일로 추출하기
- 번들 가져오기
- 현재 브랜치명 가져오기
- 커밋시 파일 무시하기 (예를 들어, Changelog 파일)
- 리베이스 전에 변경사항 스태시하기
- ID로 풀 리퀘스트를 로컬 저장소로 가져오기
- 현재 브랜치의 가장 최근 태그 보기
- diff 워드 단위로 보기
- diff 도구를 사용해 변경사항 보기
- 트래킹된 파일의 변경사항 무시하기
- assume-unchanged 되돌리기
.gitignore에 명시된 파일들 삭제하기- 삭제된 파일 복구하기
- 특정 커밋으로의 파일로 복구하기
- pull시 머지하는 대신 항상 리베이스 하기
- 모든 별칭과 설정값들 나열하기
- 대소문자 구별 활성화
- 커스텀 에디터 추가하기
- 오타 자동 수정 활성화
- 변경사항이 어떤 릴리즈에 속하는지 확인하기
- 명령어 테스트 해보기 (dry-run 플래그를 지원하는 모든 명령어에서 가능)
- 커밋이 이전 커밋의 수정 버전임을 표시하기
- fixup 커밋을 일반 커밋으로 스쿼시하기
- 커밋시 스테이징된 파일들 스킵하기
- 대화형으로 스테이징하기
- 무시된 파일들 나열하기
- 무시된 파일들 상태 출력
- Branch2에는 없고 Branch1에만 있는 커밋들 나열하기
- 마지막 n개의 커밋 나열하기
- 이전에 충돌을 해결했던 방법을 기록하고 재사용하기
- 모든 충돌된 파일들 에디터로 열기
- unpacked 오브젝트의 갯수와 디스크 사용량 보기
- 오브젝트 데이터베이스에서 도달할 수 없는 오브젝트들 제거하기
- gitweb으로 워킹 디렉토리 탐색하기
- 커밋 로그에서 GPG 시그니쳐 보기
- 글로벌 설정에서 엔트리 제거하기
- 히스토리가 없는 새로운 브랜치로 체크아웃하기
- 다른 브랜치에서 파일내용 가져오기
- 루트 커밋과 머지 커밋만 나열하기
- 대화형 리베이스로 이전 두 커밋 수정하기
- 작업중인 브랜치들 모두 나열하기
- 이진 탐색으로 좋은/안좋은 커밋 검색하기
- pre-commit과 commit-msg 깃 후킹 우회하기
- 특정 파일에 대한 커밋과 변경사항 나열하기 (이름이 바뀐 파일도 추적)
- 단일 브랜치 클론
- 새로운 브랜치 생성과 동시에 스위칭
- 커밋시 파일 모드 변경 무시
- Git 터미널 색상 출력 비활성화
- 특정 명령어에 대한 색상 설정 지정하기
- 모든 로컬 브랜치를 최근 커밋 날짜를 기준으로 정렬해 나열하기
- 트래킹된 파일에서 패턴(정규식이나 문자열)에 매칭되는 라인 검색
- 저장소의 얕은 카피 버전 클론하기
- 모든 브랜치에서 주어진 텍스트로 커밋 로그 검색하기
- 브랜치의 첫 커밋 가져오기 (마스터 브랜치로부터 시작된)
- 스테이징된 파일들 언스테이징하기
- 원격 저장소에 강제 푸시하기
- 저장소명 추가하기
- 주어진 파일의 각 라인별 author, 시간 그리고 최종 리비전명 보기
- Author와 제목으로 커밋 그룹핑하기
- 다른 사람이 작업한 내용을 덮어쓰지 않고 강제 푸시하기
- 특정 author가 기여한 라인수 보기
- Revert: 머지 복구하기
- 특정 브랜치의 커밋 수 출력하기
- 별칭: git undo
- 오브젝트에 노트(메모) 추가하기
- 모든 깃 노트 보기
- 다른 저장소에 있는 커밋 적용하기
- 페치 레퍼런스 지정하기
- 두 브랜치의 공통 조상 커밋 찾기
- 푸시되지 않은 커밋들 나열하기
- 공백 변경사항을 제외한 모든 변경사항 추가하기
- 깃 설정 [로컬/글로벌] 수정하기
- 특정 구간에서 blame 정보 보기
- Git의 논리적 변수 보기
- 패치 파일 미리 포맷팅하기
- 저장소명 가져오기
- 특정 날짜 구간 사이의 커밋 로그 출력하기
- 로그에서 author 제외하기
- 브랜치의 수정사항 요약하기
- 원격 저장소의 모든 레퍼런스 나열하기
- 트래킹되지 않은 파일들 백업하기
- 모든 git 명령어 별칭 나열하기
- git 상태 간략하게 보기
- 하루 전의 커밋으로 체크아웃하기
- 새로운 로컬 브랜치를 원격 저장소에 푸시하고 트래킹하기
- 브랜치 베이스 변경하기
- 원격 저장소에 HTTPs 대신 SSH 사용하기
- 최신 커밋에 서브모듈 업데이트하기
- LF에서 CRLF로의 자동 변환 막기
20개 내외의 명령어로 Git 사용하기
git help everyday
Git과 함께 제공되는 유용한 가이드라인 보기
git help -g
내용으로 변경사항 검색
git log -S'<a term in the source>'
원격지 동기화 및 로컬 변경사항 덮어쓰기
git fetch origin && git reset --hard origin/master && git clean -f -d
특정 커밋까지의 모든 파일 나열하기
git ls-tree --name-only -r <commit-ish>
첫 번째 커밋 초기화
git update-ref -d HEAD
충돌된 모든 파일 나열하기
git diff --name-only --diff-filter=U
특정 커밋에서 변경된 모든 파일 나열하기
git diff-tree --no-commit-id --name-only -r <commit-ish>
마지막 커밋 이후로 스테이징되지 않은 변경사항 보기
git diff
커밋을 하기 위해 스테이징된 변경사항 보기
git diff --cached
다른 방법:
git diff --staged
스테이징된 변경사항과 스테이징되지 않은 변경사항 모두 보기
git diff HEAD
이미 마스터 브랜치에 머지된 모든 브랜치 나열하기
git branch --merged master
이전 브랜치로 전환하기
git checkout -
다른 방법:
git checkout @{-1}
이미 마스터 브랜치에 머지된 모든 브랜치들 삭제하기
git branch --merged master | grep -v '^\*' | xargs -n 1 git branch -d
다른 방법:
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d # will not delete master if master is not checked out
모든 브랜치들 및 그 브랜치들의 업스트림과 마지막 커밋 나열하기
git branch -vv
업스트림 브랜치 설정 (트래킹)
git branch -u origin/mybranch
로컬 브랜치 삭제
git branch -d <local_branchname>
원격 브랜치 삭제
git push origin --delete <remote_branchname>
다른 방법:
git push origin :<remote_branchname>
로컬 태그 삭제
git tag -d <tag-name>
원격 태그 삭제
git push origin :refs/tags/<tag-name>
로컬 변경사항을 헤드의 마지막 내용으로 되돌리기
git checkout -- <file_name>
Revert: 새로운 커밋을 생성하면서 커밋 되돌리기
git revert <commit-ish>
Reset: 커밋 제거 (프라이빗 브랜치에서만 사용하길 권고)
git reset <commit-ish>
이전 커밋 메시지 변경
git commit -v --amend
브랜치의 커밋중 업스트림에 머지되지 않은 커밋 히스토리 보기
git cherry -v master
Author 수정하기
git commit --amend --author='Author Name <[email protected]>'
글로벌 설정에서 변경된 author로 author 재설정하기
git commit --amend --reset-author --no-edit
원격지 URL 변경하기
git remote set-url origin <URL>
모든 원격지 레퍼런스 리스트 나열하기
git remote
다른 방법:
git remote show
모든 로컬 및 원격지 브랜치 나열하기
git branch -a
원격지 브랜치만 나열하기
git branch -r
파일 변경사항의 전체가 아닌 일부만 스테이징하기
git add -p
Git 배시 자동완성 사용하기
curl http://git.io/vfhol > ~/.git-completion.bash && echo '[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash' >> ~/.bashrc
2주 전부터 현재까지의 변경사항 보기
git log --no-merges --raw --since='2 weeks ago'
다른 방법:
git whatchanged --since='2 weeks ago'
마스터로부터 포크한 이후에 생성된 모든 커밋 보기
git log --no-merges --stat --reverse master..
cherry-pick을 사용해 브랜치간 커밋 가져오기
git checkout <branch-name> && git cherry-pick <commit-ish>
해당 커밋 해시를 가지고 있는 브랜치들 검색하기
git branch -a --contains <commit-ish>
다른 방법:
git branch --contains <commit-ish>
Git 명령어 별칭 지정
git config --global alias.<handle> <command>
git config --global alias.st status
커밋하지 않은 트래킹된 파일들의 상태 저장하기
git stash
다른 방법:
git stash save
스테이징되지 않은 변경사항들의 현재 상태를 트래킹된 파일로 저장하기
git stash -k
다른 방법:
git stash --keep-index
git stash save --keep-index
트래킹되지 않은 파일들까지 모두 포함해 현재 상태 저장하기
git stash -u
다른 방법:
git stash save -u
git stash save --include-untracked
현재 상태를 메시지와 함께 저장하기
git stash save <message>
모든 무시된 파일, 트래킹되지 않은 파일, 트래킹된 파일들의 현재 상태 저장하기
git stash -a
다른 방법:
git stash --all
git stash save --all
저장된 모든 스태시 리스트 나열하기
git stash list
스태시 리스트에서 삭제하지 않고 스태시 적용하기
git stash apply <stash@{n}>
마지막으로 저장된 스태시 상태를 적용하고 스태시 리스트에서 삭제하기
git stash pop
다른 방법:
git stash apply stash@{0} && git stash drop stash@{0}
저장된 모든 스태시 삭제하기
git stash clear
다른 방법:
git stash drop <stash@{n}>
스태시로부터 단일 파일 가져오기
git checkout <stash@{n}> -- <file_path>
다른 방법:
git checkout stash@{0} -- <file_path>
트래킹된 파일들 모두 보기
git ls-files -t
트래킹되지 않은 파일들 모두 보기
git ls-files --others
무시된 파일들 모두 보기
git ls-files --others -i --exclude-standard
저장소에 새로운 워킹 트리 생성하기 (git 2.5)
git worktree add -b <branch-name> <path> <start-point>
HEAD로부터 새로운 워킹 트리 생성하기
git worktree add --detach <path> HEAD
파일을 삭제하지 않고 언트래킹하기
git rm --cached <file_path>
다른 방법:
git rm --cached -r <directory_path>
트래킹되지 않은 파일/디렉토리를 실제로 삭제하기 전에 어떤 파일/디렉토리가 삭제되는지 테스트 해보기
git clean -n
트래킹되지 않은 파일들 강제로 삭제하기
git clean -f
트래킹되지 않은 디렉토리 강제로 삭제하기
git clean -f -d
다른 방법:
git clean -df
모든 서브 모듈 업데이트하기
git submodule foreach git pull
다른 방법:
git submodule update --init --recursive
git submodule update --remote
현재 브랜치에서 아직 마스터에 머지되지 않은 모든 커밋들 보기
git cherry -v master
다른 방법:
git cherry -v master <branch-to-be-merged>
브랜치명 수정하기
git branch -m <new-branch-name>
다른 방법:
git branch -m [<old-branch-name>] <new-branch-name>
'feature' 브랜치를 마스터에 리베이스한 후 마스터에 머지하기
git rebase master feature && git checkout master && git merge -
마스터 브랜치 아카이브
git archive master --format=zip --output=master.zip
커밋 메시지는 변경하지 않고 이전 커밋 변경하기
git add --all && git commit --amend --no-edit
원격지에서 삭제된 원격 브랜치 레퍼런스 제거하기
git fetch -p
다른 방법:
git remote prune origin
첫 리비전의 커밋 해시값 가져오기
git rev-list --reverse HEAD | head -1
다른 방법:
git rev-list --max-parents=0 HEAD
git log --pretty=oneline | tail -1 | cut -c 1-40
git log --pretty=oneline --reverse | head -1 | cut -c 1-40
버전 트리 시각화
git log --pretty=oneline --graph --decorate --all
다른 방법:
gitk --all
트래킹된 하위폴더를 gh-pages 브랜치로 배포하기
git subtree push --prefix subfolder_name origin gh-pages
subtree를 사용해 저장소에 프로젝트 추가하기
git subtree add --prefix=<directory_name>/<project_name> --squash [email protected]:<username>/<project_name>.git master
subtree를 사용해 관련된 프로젝트의 최신 변경사항을 저장소로 가져오기
git subtree pull --prefix=<directory_name>/<project_name> --squash [email protected]:<username>/<project_name>.git master
브랜치를 히스토리와 함께 파일로 추출하기
git bundle create <file> <branch-name>
번들 가져오기
git clone repo.bundle <repo-dir> -b <branch-name>
현재 브랜치명 가져오기
git rev-parse --abbrev-ref HEAD
커밋시 파일 무시하기 (예를 들어, Changelog 파일)
git update-index --assume-unchanged Changelog; git commit -a; git update-index --no-assume-unchanged Changelog
리베이스 전에 변경사항 스태시하기
git rebase --autostash
ID로 풀 리퀘스트를 로컬 저장소로 가져오기
git fetch origin pull/<id>/head:<branch-name>
다른 방법:
git pull origin pull/<id>/head:<branch-name>
현재 브랜치의 가장 최근 태그 보기
git describe --tags --abbrev=0
diff 워드 단위로 보기
git diff --word-diff
diff 도구를 사용해 변경사항 보기
git difftool -t <commit1> <commit2> <path>
트래킹된 파일의 변경사항 무시하기
git update-index --assume-unchanged <file_name>
assume-unchanged 되돌리기
git update-index --no-assume-unchanged <file_name>
.gitignore에 명시된 파일들 삭제하기
git clean -X -f
삭제된 파일 복구하기
git checkout <deleting_commit>^ -- <file_path>
특정 커밋으로의 파일로 복구하기
git checkout <commit-ish> -- <file_path>
pull시 머지하는 대신 항상 리베이스 하기
git config --global pull.rebase true
다른 방법:
#git < 1.7.9
git config --global branch.autosetuprebase always
모든 별칭과 설정값들 나열하기
git config --list
대소문자 구별 활성화
git config --global core.ignorecase false
커스텀 에디터 추가하기
git config --global core.editor '$EDITOR'
오타 자동 수정 활성화
git config --global help.autocorrect 1
변경사항이 어떤 릴리즈에 속하는지 확인하기
git name-rev --name-only <SHA-1>
명령어 테스트 해보기 (dry-run 플래그를 지원하는 모든 명령어에서 가능)
git clean -fd --dry-run
커밋이 이전 커밋의 수정 버전임을 표시하기
git commit --fixup <SHA-1>
fixup 커밋을 일반 커밋으로 스쿼시하기
git rebase -i --autosquash
커밋시 스테이징된 파일들 스킵하기
git commit --only <file_path>
대화형으로 스테이징하기
git add -i
무시된 파일들 나열하기
git check-ignore *
무시된 파일들 상태 출력
git status --ignored
Branch2에는 없고 Branch1에만 있는 커밋들 나열하기
git log Branch1 ^Branch2
마지막 n개의 커밋 나열하기
git log -<n>
다른 방법:
git log -n <n>
이전에 충돌을 해결했던 방법을 기록하고 재사용하기
git config --global rerere.enabled 1
모든 충돌된 파일들 에디터로 열기
git diff --name-only | uniq | xargs $EDITOR
unpacked 오브젝트의 갯수와 디스크 사용량 보기
git count-objects --human-readable
오브젝트 데이터베이스에서 도달할 수 없는 오브젝트들 제거하기
git gc --prune=now --aggressive
gitweb으로 워킹 디렉토리 탐색하기
git instaweb [--local] [--httpd=<httpd>] [--port=<port>] [--browser=<browser>]
커밋 로그에서 GPG 시그니쳐 보기
git log --show-signature
글로벌 설정에서 엔트리 제거하기
git config --global --unset <entry-name>
히스토리가 없는 새로운 브랜치로 체크아웃하기
git checkout --orphan <branch_name>
다른 브랜치에서 파일내용 가져오기
git show <branch_name>:<file_name>
루트 커밋과 머지 커밋만 나열하기
git log --first-parent
대화형 리베이스로 이전 두 커밋 수정하기
git rebase --interactive HEAD~2
작업중인 브랜치들 모두 나열하기
git checkout master && git branch --no-merged
이진 탐색으로 좋은/안좋은 커밋 검색하기
git bisect start # Search start
git bisect bad # Set point to bad commit
git bisect good v2.6.13-rc2 # Set point to good commit|tag
git bisect bad # Say current state is bad
git bisect good # Say current state is good
git bisect reset # Finish search
pre-commit과 commit-msg 깃 후킹 우회하기
git commit --no-verify
특정 파일에 대한 커밋과 변경사항 나열하기 (이름이 바뀐 파일도 추적)
git log --follow -p -- <file_path>
단일 브랜치 클론
git clone -b <branch-name> --single-branch https://github.com/user/repo.git
새로운 브랜치 생성과 동시에 스위칭
git checkout -b <branch-name>
다른 방법:
git branch <branch-name> && git checkout <branch-name>
커밋시 파일 모드 변경 무시
git config core.fileMode false
Git 터미널 색상 출력 비활성화
git config --global color.ui false
특정 명령어에 대한 색상 설정 지정하기
git config --global <specific command e.g branch, diff> <true, false or always>
모든 로컬 브랜치를 최근 커밋 날짜를 기준으로 정렬해 나열하기
git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/
트래킹된 파일에서 패턴(정규식이나 문자열)에 매칭되는 라인 검색
git grep --heading --line-number 'foo bar'
저장소의 얕은 카피 버전 클론하기
git clone https://github.com/user/repo.git --depth 1
모든 브랜치에서 주어진 텍스트로 커밋 로그 검색하기
git log --all --grep='<given-text>'
브랜치의 첫 커밋 가져오기 (마스터 브랜치로부터 시작된)
git log master..<branch-name> --oneline | tail -1
스테이징된 파일들 언스테이징하기
git reset HEAD <file-name>
원격 저장소에 강제 푸시하기
git push -f <remote-name> <branch-name>
저장소명 추가하기
git remote add <remote-nickname> <remote-url>
주어진 파일의 각 라인별 author, 시간 그리고 최종 리비전명 보기
git blame <file-name>
Author와 제목으로 커밋 그룹핑하기
git shortlog
다른 사람이 작업한 내용을 덮어쓰지 않고 강제 푸시하기
git push --force-with-lease <remote-name> <branch-name>
특정 author가 기여한 라인수 보기
git log --author='_Your_Name_Here_' --pretty=tformat: --numstat | gawk '{ add += <!-- @doxie.inject start -->; subs += <!-- @doxie.inject end -->; loc += <!-- @doxie.inject start --> - <!-- @doxie.inject end --> } END { printf "added lines: %s removed lines: %s total lines: %s
", add, subs, loc }' -
다른 방법:
git log --author='_Your_Name_Here_' --pretty=tformat: --numstat | awk '{ add += <!-- @doxie.inject start -->; subs += <!-- @doxie.inject end -->; loc += <!-- @doxie.inject start --> - <!-- @doxie.inject end --> } END { printf "added lines: %s, removed lines: %s, total lines: %s
", add, subs, loc }' - # on Mac OSX
Revert: 머지 복구하기
git revert -m 1 <commit-ish>
특정 브랜치의 커밋 수 출력하기
git rev-list --count <branch-name>
별칭: git undo
git config --global alias.undo '!f() { git reset --hard $(git rev-parse --abbrev-ref HEAD)@{${1-1}}; }; f'
오브젝트에 노트(메모) 추가하기
git notes add -m 'Note on the previous commit....'
모든 깃 노트 보기
git log --show-notes='*'
다른 저장소에 있는 커밋 적용하기
git --git-dir=<source-dir>/.git format-patch -k -1 --stdout <SHA1> | git am -3 -k
페치 레퍼런스 지정하기
git fetch origin master:refs/remotes/origin/mymaster
두 브랜치의 공통 조상 커밋 찾기
diff -u <(git rev-list --first-parent BranchA) <(git rev-list --first-parent BranchB) | sed -ne 's/^ //p' | head -1
푸시되지 않은 커밋들 나열하기
git log --branches --not --remotes
다른 방법:
git log @{u}..
git cherry -v
공백 변경사항을 제외한 모든 변경사항 추가하기
git diff --ignore-all-space | git apply --cached
깃 설정 [로컬/글로벌] 수정하기
git config [--global] --edit
특정 구간에서 blame 정보 보기
git blame -L <start>,<end>
Git의 논리적 변수 보기
git var -l | <variable>
패치 파일 미리 포맷팅하기
git format-patch -M upstream..topic
저장소명 가져오기
git rev-parse --show-toplevel
특정 날짜 구간 사이의 커밋 로그 출력하기
git log --since='FEB 1 2017' --until='FEB 14 2017'
로그에서 author 제외하기
git log --perl-regexp --author='^((?!excluded-author-regex).*)
브랜치의 수정사항 요약하기
git request-pull v1.0 https://git.ko.xz/project master:for-linus
원격 저장소의 모든 레퍼런스 나열하기
git ls-remote git://git.kernel.org/pub/scm/git/git.git
트래킹되지 않은 파일들 백업하기
git ls-files --others -i --exclude-standard | xargs zip untracked.zip
모든 git 명령어 별칭 나열하기
git config -l | grep alias | sed 's/^alias\.//g'
다른 방법:
git config -l | grep alias | cut -d '.' -f 2
git 상태 간략하게 보기
git status --short --branch
하루 전의 커밋으로 체크아웃하기
git checkout master@{yesterday}
새로운 로컬 브랜치를 원격 저장소에 푸시하고 트래킹하기
git push -u origin <branch_name>
브랜치 베이스 변경하기
git rebase --onto <new_base> <old_base>
원격 저장소에 HTTPs 대신 SSH 사용하기
git config --global url.'[email protected]:'.insteadOf 'https://github.com/'
최신 커밋에 서브모듈 업데이트하기
cd <path-to-submodule>
git pull origin <branch>
cd <root-of-your-main-project>
git add <path-to-submodule>
git commit -m "submodule updated"
LF에서 CRLF로의 자동 변환 막기
git config --global core.autocrlf false
Repo liên quan
GitHub gitignore templates is the collection maintained in the github/gitignore repository, licensed CC0-1.0. GitHub uses this exact list to fill the .gitignore chooser shown when you create a new repository or file, and it splits templates into a curated root set for common languages, a Global folder for editors and operating systems, and a community folder for narrower or version-specific cases.
30 seconds of code (Chalarangelo/30-seconds-of-code) is a GitHub repository that points to a collection of coding articles at 30secondsofcode.org, maintained by Angelos Chalaris. Each article pairs a code snippet with an explanation and an example, and the snippets themselves are licensed CC-BY-4.0; the project isn't taking new content submissions right now, per its README.
DevOps Exercises is a GitHub repository collecting 2624 questions and exercises spanning Linux, networking, Kubernetes, Terraform, and cloud platforms, written as plain markdown Q&A with no app or course wrapped around it.
Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞
Trả lời nhanh
Cùng nhóm Developer Tools còn repo nào?
mingrammer/git-tips thuộc nhóm Developer Tools trên TopGit, cùng 2 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về mingrammer/git-tips ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/mingrammer/git-tips là nguồn chính thức.
mingrammer/git-tips có bao nhiêu sao?
mingrammer/git-tips có 1.0k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/mingrammer/git-tips. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
mingrammer/git-tips có những chủ đề gì?
GitHub topics của mingrammer/git-tips: "git", "git-tips". TopGit xếp repo vào nhóm Developer Tools.
mingrammer/git-tips còn đang phát triển không?
Commit gần nhất trên mingrammer/git-tips là 4.4 năm trước (theo timestamp GitHub). Repo có 265 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
mingrammer/git-tips viết bằng ngôn ngữ gì?
Dữ liệu TopGit chưa ghi nhận ngôn ngữ chính cho mingrammer/git-tips. Xem danh sách file trên GitHub để biết chi tiết.
Vì sao mingrammer/git-tips được xếp vào nhóm Developer Tools?
TopGit xếp mingrammer/git-tips vào nhóm Developer Tools dựa trên GitHub topics và mô tả của repo (gắn thẻ: "git", "git-tips"). Việc phân loại dựa trên metadata thật của repo, không phải đoán theo cảm tính biên tập.
Đọc đầy đủ README ở tab phía trên.
Muốn nghe thêm một ý kiến về git-tips?
Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về git-tips.