From 7c6e8c346f047c09958a2f2b91c0a88813a74924 Mon Sep 17 00:00:00 2001 From: "jk.ko" Date: Thu, 8 Jan 2026 06:33:44 +0000 Subject: [PATCH] Delete 06_Tools_Utilities/git-tip.md --- 06_Tools_Utilities/git-tip.md | 1186 --------------------------------- 1 file changed, 1186 deletions(-) delete mode 100644 06_Tools_Utilities/git-tip.md diff --git a/06_Tools_Utilities/git-tip.md b/06_Tools_Utilities/git-tip.md deleted file mode 100644 index 0b485c4..0000000 --- a/06_Tools_Utilities/git-tip.md +++ /dev/null @@ -1,1186 +0,0 @@ -# Git Tips -> [git tips](https://github.com/git-tips/tips)의 한국어 버전 문서입니다. - -[English](http://git.io/git-tips) | [中文](https://github.com/521xueweihan/git-tips) | [Русский](https://github.com/Imangazaliev/git-tips) | [Tiếng Việt](https://github.com/hprobotic/git-tips) | [日本語](https://github.com/isotai/git-tips) | [नेपाली](https://github.com/amarduwal/git-tips) | [Polski](https://github.com/mbiesiad/tips) - -## 팁 툴 - -* [git-tip](https://www.npmjs.com/package/git-tip) - 아래에 나열된 팁들을 사용할 수 있는 CLI 툴 ([도커 컨테이너](https://github.com/djoudi5/docker-git-tip)) - -## 목차 - -> 참고로 모든 명령어는 다음 버전에서 테스트 되었습니다: `git version 2.7.4 (Apple Git-66)`. - -* [20개 내외의 명령어로 Git 사용하기](#20개-내외의-명령어로-git-사용하기) -* [Git과 함께 제공되는 유용한 가이드라인 보기](#git과-함께-제공되는-유용한-가이드라인-보기) -* [내용으로 변경사항 검색](#내용으로-변경사항-검색) -* [원격지 동기화 및 로컬 변경사항 덮어쓰기](#원격지-동기화-및-로컬-변경사항-덮어쓰기) -* [특정 커밋까지의 모든 파일 나열하기](#특정-커밋까지의-모든-파일-나열하기) -* [첫 번째 커밋 초기화](#첫-번째-커밋-초기화) -* [충돌된 모든 파일 나열하기](#충돌된-모든-파일-나열하기) -* [특정 커밋에서 변경된 모든 파일 나열하기](#특정-커밋에서-변경된-모든-파일-나열하기) -* [마지막 커밋 이후로 스테이징되지 않은 변경사항 보기](#마지막-커밋-이후로-스테이징되지-않은-변경사항-보기) -* [커밋을 하기 위해 스테이징된 변경사항 보기](#커밋을-하기-위해-스테이징된-변경사항-보기) -* [스테이징된 변경사항과 스테이징되지 않은 변경사항 모두 보기](#스테이징된-변경사항과-스테이징되지-않은-변경사항-모두-보기) -* [이미 마스터 브랜치에 머지된 모든 브랜치 나열하기](#이미-마스터-브랜치에-머지된-모든-브랜치-나열하기) -* [이전 브랜치로 전환하기](#이전-브랜치로-전환하기) -* [이미 마스터 브랜치에 머지된 모든 브랜치들 삭제하기](#이미-마스터-브랜치에-머지된-모든-브랜치들-삭제하기) -* [모든 브랜치들 및 그 브랜치들의 업스트림과 마지막 커밋 나열하기](#모든-브랜치들-및-그-브랜치들의-업스트림과-마지막-커밋-나열하기) -* [업스트림 브랜치 설정 (트래킹)](#업스트림-브랜치-설정-트래킹) -* [로컬 브랜치 삭제](#로컬-브랜치-삭제) -* [원격 브랜치 삭제](#원격-브랜치-삭제) -* [로컬 태그 삭제](#로컬-태그-삭제) -* [원격 태그 삭제](#원격-태그-삭제) -* [로컬 변경사항을 헤드의 마지막 내용으로 되돌리기](#로컬-변경사항을-헤드의-마지막-내용으로-되돌리기) -* [Revert: 새로운 커밋을 생성하면서 커밋 되돌리기](#revert-새로운-커밋을-생성하면서-커밋-되돌리기) -* [Reset: 커밋 제거 (프라이빗 브랜치에서만 사용하길 권고)](#reset-커밋-제거-프라이빗-브랜치에서만-사용하길-권고) -* [이전 커밋 메시지 변경](#이전-커밋-메시지-변경) -* [브랜치의 커밋중 업스트림에 머지되지 않은 커밋 히스토리 보기](#브랜치의-커밋중-업스트림에-머지되지-않은-커밋-히스토리-보기) -* [Author 수정하기](#author-수정하기) -* [글로벌 설정에서 변경된 author로 author 재설정하기](#글로벌-설정에서-변경된-author로-author-재설정하기) -* [원격지 URL 변경하기](#원격지-url-변경하기) -* [모든 원격지 레퍼런스 리스트 나열하기](#모든-원격지-레퍼런스-리스트-나열하기) -* [모든 로컬 및 원격지 브랜치 나열하기](#모든-로컬-및-원격지-브랜치-나열하기) -* [원격지 브랜치만 나열하기](#원격지-브랜치만-나열하기) -* [파일 변경사항의 전체가 아닌 일부만 스테이징하기](#파일-변경사항의-전체가-아닌-일부만-스테이징하기) -* [git 배시 자동완성 사용하기](#git-배시-자동완성-사용하기) -* [2주 전부터 현재까지의 변경사항 보기](#2주-전부터-현재까지의-변경사항-보기) -* [마스터로부터 포크한 이후에 생성된 모든 커밋 보기](#마스터로부터-포크한-이후에-생성된-모든-커밋-보기) -* [cherry-pick을 사용해 브랜치간 커밋 가져오기](#cherry-pick을-사용해-브랜치간-커밋-가져오기) -* [해당 커밋 해시를 가지고 있는 브랜치들 검색하기](#해당-커밋-해시를-가지고-있는-브랜치들-검색하기) -* [Git 명령어 별칭 지정](#git-명령어-별칭-지정) -* [커밋하지 않은 트래킹된 파일들의 상태 저장하기](#커밋하지-않은-트래킹된-파일들의-상태-저장하기) -* [스테이징되지 않은 변경사항들의 현재 상태를 트래킹된 파일로 저장하기](#스테이징되지-않은-변경사항들의-현재-상태를-트래킹된-파일로-저장하기) -* [트래킹되지 않은 파일들까지 모두 포함해 현재 상태 저장하기](#트래킹되지-않은-파일들까지-모두-포함해-현재-상태-저장하기) -* [현재 상태를 메시지와 함께 저장하기](#현재-상태를-메시지와-함께-저장하기) -* [모든 무시된 파일, 트래킹되지 않은 파일, 트래킹된 파일들의 현재 상태 저장하기](#모든-무시된-파일-트래킹되지-않은-파일-트래킹된-파일들의-현재-상태-저장하기) -* [저장된 모든 스태시 리스트 나열하기](#저장된-모든-스태시-리스트-나열하기) -* [스태시 리스트에서 삭제하지 않고 스태시 적용하기](#스태시-리스트에서-삭제하지-않고-스태시-적용하기) -* [마지막으로 저장된 스태시 상태를 적용하고 스태시 리스트에서 삭제하기](#마지막으로-저장된-스태시-상태를-적용하고-스태시-리스트에서-삭제하기) -* [저장된 모든 스태시 삭제하기](#저장된-모든-스태시-삭제하기) -* [스태시로부터 단일 파일 가져오기](#스태시로부터-단일-파일-가져오기) -* [트래킹된 파일들 모두 보기](#트래킹된-파일들-모두-보기) -* [트래킹되지 않은 모든 파일 보기](#트래킹되지-않은-파일들-모두-보기) -* [무시된 파일들 모두 보기](#무시된-파일들-모두-보기) -* [저장소에 새로운 워킹 트리 생성하기 (git 2.5)](#저장소에-새로운-워킹-트리-생성하기-git-25) -* [HEAD로부터 새로운 워킹 트리 생성하기](#head로부터-새로운-워킹-트리-생성하기) -* [파일을 삭제하지 않고 언트래킹하기](#파일을-삭제하지-않고-언트래킹하기) -* [트래킹되지 않은 파일/디렉토리를 실제로 삭제하기 전에 어떤 파일/디렉토리가 삭제되는지 테스트 해보기](#트래킹되지-않은-파일디렉토리를-실제로-삭제하기-전에-어떤-파일디렉토리가-삭제되는지-테스트-해보기) -* [트래킹되지 않은 파일들 강제로 삭제하기](#트래킹되지-않은-파일들-강제로-삭제하기) -* [트래킹되지 않은 디렉토리 강제로 삭제하기](#트래킹되지-않은-디렉토리-강제로-삭제하기) -* [모든 서브 모듈 업데이트하기](#모든-서브-모듈-업데이트하기) -* [현재 브랜치에서 아직 마스터에 머지되지 않은 모든 커밋들 보기](#현재-브랜치에서-아직-마스터에-머지되지-않은-모든-커밋들-보기) -* [브랜치명 수정하기](#브랜치명-수정하기) -* ['feature' 브랜치를 마스터에 리베이스한 후 마스터에 머지하기](#feature-브랜치를-마스터에-리베이스한-후-마스터에-머지하기) -* [마스터 브랜치 아카이브](#마스터-브랜치-아카이브) -* [커밋 메시지는 변경하지 않고 이전 커밋 변경하기](#커밋시-파일-무시하기-예를-들어-changelog-파일) -* [원격지에서 삭제된 원격 브랜치 레퍼런스 제거하기](#원격지에서-삭제된-원격-브랜치-레퍼런스-제거하기) -* [첫 리비전의 커밋 해시값 가져오기](#첫-리비전의-커밋-해시값-가져오기) -* [버전 트리 시각화](#버전-트리-시각화) -* [트래킹된 하위폴더를 gh-pages 브랜치로 배포하기](#트래킹된-하위폴더를-gh-pages-브랜치로-배포하기) -* [subtree를 사용해 저장소에 프로젝트 추가하기](#subtree를-사용해-저장소에-프로젝트-추가하기) -* [subtree를 사용해 관련된 프로젝트의 최신 변경사항을 저장소로 가져오기](#subtree를-사용해-관련된-프로젝트의-최신-변경사항을-저장소로-가져오기) -* [브랜치를 히스토리와 함께 파일로 추출하기](#브랜치를-히스토리와-함께-파일로-추출하기) -* [번들 가져오기](#번들-가져오기) -* [현재 브랜치명 가져오기](#현재-브랜치명-가져오기) -* [커밋시 파일 무시하기 (예를 들어, Changelog 파일)](#커밋시-파일-무시하기-예를-들어-Changelog-파일) -* [리베이스 전에 변경사항 스태시하기](#리베이스-전에-변경사항-스태시하기) -* [ID로 풀 리퀘스트를 로컬 저장소로 가져오기](#id로-풀-리퀘스트를-로컬-저장소로-가져오기) -* [현재 브랜치의 가장 최근 태그 보기](#현재-브랜치의-가장-최근-태그-보기) -* [diff 워드 단위로 보기](#diff-워드-단위로-보기) -* [diff 도구를 사용해 변경사항 보기](#diff-도구를-사용해-변경사항-보기) -* [트래킹된 파일의 변경사항 무시하기](#트래킹된-파일의-변경사항-무시하기) -* [assume-unchanged 되돌리기](#assume-unchanged-되돌리기) -* [`.gitignore`에 명시된 파일들 삭제하기](#gitignore에-명시된-파일들-삭제하기) -* [삭제된 파일 복구하기](#삭제된-파일-복구하기) -* [특정 커밋으로의 파일로 복구하기](#특정-커밋으로의-파일로-복구하기) -* [pull시 머지하는 대신 항상 리베이스 하기](#pull시-머지하는-대신-항상-리베이스-하기) -* [모든 별칭과 설정값들 나열하기](#모든-별칭과-설정값들-나열하기) -* [대소문자 구별 활성화](#대소문자-구별-활성화) -* [커스텀 에디터 추가하기](#커스텀-에디터-추가하기) -* [오타 자동 수정 활성화](#오타-자동-수정-활성화) -* [변경사항이 어떤 릴리즈에 속하는지 확인하기](#변경사항이-어떤-릴리즈에-속하는지-확인하기) -* [명령어 테스트 해보기 (dry-run 플래그를 지원하는 모든 명령어에서 가능)](#명령어-테스트-해보기-dry-run-플래그를-지원하는-모든-명령어에서-가능) -* [커밋이 이전 커밋의 수정 버전임을 표시하기](#커밋이-이전-커밋의-수정-버전임을-표시하기) -* [fixup 커밋을 일반 커밋으로 스쿼시하기](#fixup-커밋을-일반-커밋으로-스쿼시하기) -* [커밋시 스테이징된 파일들 스킵하기](#커밋시-스테이징된-파일들-스킵하기) -* [대화형으로 스테이징하기](#대화형으로-스테이징하기) -* [무시된 파일들 나열하기](#무시된-파일들-나열하기) -* [무시된 파일들 상태 출력](#무시된-파일들-상태-출력) -* [Branch2에는 없고 Branch1에만 있는 커밋들 나열하기](#branch2에는-없고-branch1에만-있는-커밋들-나열하기) -* [마지막 n개의 커밋 나열하기](#마지막-n개의-커밋-나열하기) -* [이전에 충돌을 해결했던 방법을 기록하고 재사용하기](#이전에-충돌을-해결했던-방법을-기록하고-재사용하기) -* [모든 충돌된 파일들 에디터로 열기](#모든-충돌된-파일들-에디터로-열기) -* [unpacked 오브젝트의 갯수와 디스크 사용량 보기](#unpacked-오브젝트의-갯수와-디스크-사용량-보기) -* [오브젝트 데이터베이스에서 도달할 수 없는 오브젝트들 제거하기](#오브젝트-데이터베이스에서-도달할-수-없는-오브젝트들-제거하기) -* [gitweb으로 워킹 디렉토리 탐색하기](#gitweb으로-워킹-디렉토리-탐색하기) -* [커밋 로그에서 GPG 시그니쳐 보기](#커밋-로그에서-gpg-시그니쳐-보기) -* [글로벌 설정에서 엔트리 제거하기](#글로벌-설정에서-엔트리-제거하기) -* [히스토리가 없는 새로운 브랜치로 체크아웃하기](#히스토리가-없는-새로운-브랜치로-체크아웃하기) -* [다른 브랜치에서 파일내용 가져오기](#다른-브랜치에서-파일내용-가져오기) -* [루트 커밋과 머지 커밋만 나열하기](#루트-커밋과-머지-커밋만-나열하기) -* [대화형 리베이스로 이전 두 커밋 수정하기](#대화형-리베이스로-이전-두-커밋-수정하기) -* [작업중인 브랜치들 모두 나열하기](#작업중인-브랜치들-모두-나열하기) -* [이진 탐색으로 좋은/안좋은 커밋 검색하기](#이진-탐색으로-좋은안좋은-커밋-검색하기) -* [pre-commit과 commit-msg 깃 후킹 우회하기](#pre-commit과-commit-msg-깃-후킹-우회하기) -* [특정 파일에 대한 커밋과 변경사항 나열하기 (이름이 바뀐 파일도 추적)](#특정-파일에-대한-커밋과-변경사항-나열하기-이름이-바뀐-파일도-추적) -* [단일 브랜치 클론](#단일-브랜치-클론) -* [새로운 브랜치 생성과 동시에 스위칭](#새로운-브랜치-생성과-동시에-스위칭) -* [커밋시 파일 모드 변경 무시](#커밋시-파일-모드-변경-무시) -* [Git 터미널 색상 출력 비활성화](#git-터미널-색상-출력-비활성화) -* [특정 명령어에 대한 색상 설정 지정하기](#특정-명령어에-대한-색상-설정-지정하기) -* [모든 로컬 브랜치를 최근 커밋 날짜를 기준으로 정렬해 나열하기](#모든-로컬-브랜치를-최근-커밋-날짜를-기준으로-정렬해-나열하기) -* [트래킹된 파일에서 패턴(정규식이나 문자열)에 매칭되는 라인 검색](#트래킹된-파일에서-패턴정규식이나-문자열에-매칭되는-라인-검색) -* [저장소의 얕은 카피 버전 클론하기](#저장소의-얕은-카피-버전-클론하기) -* [모든 브랜치에서 주어진 텍스트로 커밋 로그 검색하기](#모든-브랜치에서-주어진-텍스트로-커밋-로그-검색하기) -* [브랜치의 첫 커밋 가져오기 (마스터 브랜치로부터 시작된)](#브랜치의-첫-커밋-가져오기-마스터-브랜치로부터-시작된) -* [스테이징된 파일들 언스테이징하기](#스테이징된-파일들-언스테이징하기) -* [원격 저장소에 강제 푸시하기](#원격-저장소에-강제-푸시하기) -* [저장소명 추가하기](#저장소명-추가하기) -* [주어진 파일의 각 라인별 author, 시간 그리고 최종 리비전명 보기](#주어진-파일의-각-라인별-author-시간-그리고-최종-리비전명-보기) -* [Author와 제목으로 커밋 그룹핑하기](#author와-제목으로-커밋-그룹핑하기) -* [다른 사람이 작업한 내용을 덮어쓰지 않고 강제 푸시하기](#다른-사람이-작업한-내용을-덮어쓰지-않고-강제-푸시하기) -* [특정 author가 기여한 라인수 보기](#특정-author가-기여한-라인수-보기) -* [Revert: 머지 복구하기](#revert-머지-복구하기) -* [특정 브랜치의 커밋 수 출력하기](#특정-브랜치의-커밋-수-출력하기) -* [별칭: git undo](#별칭-git-undo) -* [오브젝트에 노트(메모) 추가하기](#오브젝트에-노트메모-추가하기) -* [모든 깃 노트 보기](#모든-깃-노트-보기) -* [다른 저장소에 있는 커밋 적용하기](#다른-저장소에-있는-커밋-적용하기) -* [페치 레퍼런스 지정하기](#페치-레퍼런스-지정하기) -* [두 브랜치의 공통 조상 커밋 찾기](#두-브랜치의-공통-조상-커밋-찾기) -* [푸시되지 않은 커밋들 나열하기](#푸시되지-않은-커밋들-나열하기) -* [공백 변경사항을 제외한 모든 변경사항 추가하기](#공백-변경사항을-제외한-모든-변경사항-추가하기) -* [깃 설정 [로컬/글로벌] 수정하기](#깃-설정-로컬글로벌-수정하기) -* [특정 구간에서 blame 정보 보기](#특정-구간에서-blame-정보-보기) -* [Git의 논리적 변수 보기](#git의-논리적-변수-보기) -* [패치 파일 미리 포맷팅하기](#패치-파일-미리-포맷팅하기) -* [저장소명 가져오기](#저장소명-가져오기) -* [특정 날짜 구간 사이의 커밋 로그 출력하기](#특정-날짜-구간-사이의-커밋-로그-출력하기) -* [로그에서 author 제외하기](#로그에서-author-제외하기) -* [브랜치의 수정사항 요약하기](#브랜치의-수정사항-요약하기) -* [원격 저장소의 모든 레퍼런스 나열하기](#원격-저장소의-모든-레퍼런스-나열하기) -* [트래킹되지 않은 파일들 백업하기](#트래킹되지-않은-파일들-백업하기) -* [모든 git 명령어 별칭 나열하기](#모든-git-명령어-별칭-나열하기) -* [git 상태 간략하게 보기](#git-상태-간략하게-보기) -* [하루 전의 커밋으로 체크아웃하기](#하루-전의-커밋으로-체크아웃하기) -* [새로운 로컬 브랜치를 원격 저장소에 푸시하고 트래킹하기](#새로운-로컬-브랜치를-원격-저장소에-푸시하고-트래킹하기) -* [브랜치 베이스 변경하기](#브랜치-베이스-변경하기) -* [원격 저장소에 HTTPs 대신 SSH 사용하기](#원격-저장소에-HTTPs-대신-SSH-사용하기) -* [최신 커밋에 서브모듈 업데이트하기](#최신-커밋에-서브모듈-업데이트하기) -* [LF에서 CRLF로의 자동 변환 막기](#LF에서-CRLF로의-자동-변환-막기) - - -## 20개 내외의 명령어로 Git 사용하기 -```sh -git help everyday -``` - -## Git과 함께 제공되는 유용한 가이드라인 보기 -```sh -git help -g -``` - -## 내용으로 변경사항 검색 -```sh -git log -S'' -``` - -## 원격지 동기화 및 로컬 변경사항 덮어쓰기 -```sh -git fetch origin && git reset --hard origin/master && git clean -f -d -``` - -## 특정 커밋까지의 모든 파일 나열하기 -```sh -git ls-tree --name-only -r -``` - -## 첫 번째 커밋 초기화 -```sh -git update-ref -d HEAD -``` - -## 충돌된 모든 파일 나열하기 -```sh -git diff --name-only --diff-filter=U -``` - -## 특정 커밋에서 변경된 모든 파일 나열하기 -```sh -git diff-tree --no-commit-id --name-only -r -``` - -## 마지막 커밋 이후로 스테이징되지 않은 변경사항 보기 -```sh -git diff -``` - -## 커밋을 하기 위해 스테이징된 변경사항 보기 -```sh -git diff --cached -``` - - -__다른 방법:__ -```sh -git diff --staged -``` - -## 스테이징된 변경사항과 스테이징되지 않은 변경사항 모두 보기 -```sh -git diff HEAD -``` - -## 이미 마스터 브랜치에 머지된 모든 브랜치 나열하기 -```sh -git branch --merged master -``` - -## 이전 브랜치로 전환하기 -```sh -git checkout - -``` - - -__다른 방법:__ -```sh -git checkout @{-1} -``` - -## 이미 마스터 브랜치에 머지된 모든 브랜치들 삭제하기 -```sh -git branch --merged master | grep -v '^\*' | xargs -n 1 git branch -d -``` - - -__다른 방법:__ -```sh -git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d # will not delete master if master is not checked out -``` - -## 모든 브랜치들 및 그 브랜치들의 업스트림과 마지막 커밋 나열하기 -```sh -git branch -vv -``` - -## 업스트림 브랜치 설정 (트래킹) -```sh -git branch -u origin/mybranch -``` - -## 로컬 브랜치 삭제 -```sh -git branch -d -``` - -## 원격 브랜치 삭제 -```sh -git push origin --delete -``` - - -__다른 방법:__ -```sh -git push origin : -``` - -## 로컬 태그 삭제 -```sh -git tag -d -``` - -## 원격 태그 삭제 -```sh -git push origin :refs/tags/ -``` - -## 로컬 변경사항을 헤드의 마지막 내용으로 되돌리기 -```sh -git checkout -- -``` - -## Revert: 새로운 커밋을 생성하면서 커밋 되돌리기 -```sh -git revert -``` - -## Reset: 커밋 제거 (프라이빗 브랜치에서만 사용하길 권고) -```sh -git reset -``` - -## 이전 커밋 메시지 변경 -```sh -git commit -v --amend -``` - -## 브랜치의 커밋중 업스트림에 머지되지 않은 커밋 히스토리 보기 -```sh -git cherry -v master -``` - -## Author 수정하기 -```sh -git commit --amend --author='Author Name ' -``` - -## 글로벌 설정에서 변경된 author로 author 재설정하기 -```sh -git commit --amend --reset-author --no-edit -``` - -## 원격지 URL 변경하기 -```sh -git remote set-url origin -``` - -## 모든 원격지 레퍼런스 리스트 나열하기 -```sh -git remote -``` - - -__다른 방법:__ -```sh -git remote show -``` - -## 모든 로컬 및 원격지 브랜치 나열하기 -```sh -git branch -a -``` - -## 원격지 브랜치만 나열하기 -```sh -git branch -r -``` - -## 파일 변경사항의 전체가 아닌 일부만 스테이징하기 -```sh -git add -p -``` - -## Git 배시 자동완성 사용하기 -```sh -curl http://git.io/vfhol > ~/.git-completion.bash && echo '[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash' >> ~/.bashrc -``` - -## 2주 전부터 현재까지의 변경사항 보기 -```sh -git log --no-merges --raw --since='2 weeks ago' -``` - - -__다른 방법:__ -```sh -git whatchanged --since='2 weeks ago' -``` - -## 마스터로부터 포크한 이후에 생성된 모든 커밋 보기 -```sh -git log --no-merges --stat --reverse master.. -``` - -## cherry-pick을 사용해 브랜치간 커밋 가져오기 -```sh -git checkout && git cherry-pick -``` - -## 해당 커밋 해시를 가지고 있는 브랜치들 검색하기 -```sh -git branch -a --contains -``` - - -__다른 방법:__ -```sh -git branch --contains -``` - -## Git 명령어 별칭 지정 -```sh -git config --global alias. -git config --global alias.st status -``` - -## 커밋하지 않은 트래킹된 파일들의 상태 저장하기 -```sh -git stash -``` - - -__다른 방법:__ -```sh -git stash save -``` - -## 스테이징되지 않은 변경사항들의 현재 상태를 트래킹된 파일로 저장하기 -```sh -git stash -k -``` - - -__다른 방법:__ -```sh -git stash --keep-index -``` - - -```sh -git stash save --keep-index -``` - -## 트래킹되지 않은 파일들까지 모두 포함해 현재 상태 저장하기 -```sh -git stash -u -``` - - -__다른 방법:__ -```sh -git stash save -u -``` - - -```sh -git stash save --include-untracked -``` - -## 현재 상태를 메시지와 함께 저장하기 -```sh -git stash save -``` - -## 모든 무시된 파일, 트래킹되지 않은 파일, 트래킹된 파일들의 현재 상태 저장하기 -```sh -git stash -a -``` - - -__다른 방법:__ -```sh -git stash --all -``` - - -```sh -git stash save --all -``` - -## 저장된 모든 스태시 리스트 나열하기 -```sh -git stash list -``` - -## 스태시 리스트에서 삭제하지 않고 스태시 적용하기 -```sh -git stash apply -``` - -## 마지막으로 저장된 스태시 상태를 적용하고 스태시 리스트에서 삭제하기 -```sh -git stash pop -``` - - -__다른 방법:__ -```sh -git stash apply stash@{0} && git stash drop stash@{0} -``` - -## 저장된 모든 스태시 삭제하기 -```sh -git stash clear -``` - - -__다른 방법:__ -```sh -git stash drop -``` - -## 스태시로부터 단일 파일 가져오기 -```sh -git checkout -- -``` - - -__다른 방법:__ -```sh -git checkout stash@{0} -- -``` - -## 트래킹된 파일들 모두 보기 -```sh -git ls-files -t -``` - -## 트래킹되지 않은 파일들 모두 보기 -```sh -git ls-files --others -``` - -## 무시된 파일들 모두 보기 -```sh -git ls-files --others -i --exclude-standard -``` - -## 저장소에 새로운 워킹 트리 생성하기 (git 2.5) -```sh -git worktree add -b -``` - -## HEAD로부터 새로운 워킹 트리 생성하기 -```sh -git worktree add --detach HEAD -``` - -## 파일을 삭제하지 않고 언트래킹하기 -```sh -git rm --cached -``` - - -__다른 방법:__ -```sh -git rm --cached -r -``` - -## 트래킹되지 않은 파일/디렉토리를 실제로 삭제하기 전에 어떤 파일/디렉토리가 삭제되는지 테스트 해보기 -```sh -git clean -n -``` - -## 트래킹되지 않은 파일들 강제로 삭제하기 -```sh -git clean -f -``` - -## 트래킹되지 않은 디렉토리 강제로 삭제하기 -```sh -git clean -f -d -``` - - -__다른 방법:__ -```sh -git clean -df -``` - -## 모든 서브 모듈 업데이트하기 -```sh -git submodule foreach git pull -``` - - -__다른 방법:__ -```sh -git submodule update --init --recursive -``` - - -```sh -git submodule update --remote -``` - -## 현재 브랜치에서 아직 마스터에 머지되지 않은 모든 커밋들 보기 -```sh -git cherry -v master -``` - - -__다른 방법:__ -```sh -git cherry -v master -``` - -## 브랜치명 수정하기 -```sh -git branch -m -``` - - -__다른 방법:__ -```sh -git branch -m [] -``` - -## 'feature' 브랜치를 마스터에 리베이스한 후 마스터에 머지하기 -```sh -git rebase master feature && git checkout master && git merge - -``` - -## 마스터 브랜치 아카이브 -```sh -git archive master --format=zip --output=master.zip -``` - -## 커밋 메시지는 변경하지 않고 이전 커밋 변경하기 -```sh -git add --all && git commit --amend --no-edit -``` - -## 원격지에서 삭제된 원격 브랜치 레퍼런스 제거하기 -```sh -git fetch -p -``` - - -__다른 방법:__ -```sh -git remote prune origin -``` - -## 첫 리비전의 커밋 해시값 가져오기 -```sh - git rev-list --reverse HEAD | head -1 -``` - - -__다른 방법:__ -```sh -git rev-list --max-parents=0 HEAD -``` - - -```sh -git log --pretty=oneline | tail -1 | cut -c 1-40 -``` - - -```sh -git log --pretty=oneline --reverse | head -1 | cut -c 1-40 -``` - -## 버전 트리 시각화 -```sh -git log --pretty=oneline --graph --decorate --all -``` - - -__다른 방법:__ -```sh -gitk --all -``` - -## 트래킹된 하위폴더를 gh-pages 브랜치로 배포하기 -```sh -git subtree push --prefix subfolder_name origin gh-pages -``` - -## subtree를 사용해 저장소에 프로젝트 추가하기 -```sh -git subtree add --prefix=/ --squash git@github.com:/.git master -``` - -## subtree를 사용해 관련된 프로젝트의 최신 변경사항을 저장소로 가져오기 -```sh -git subtree pull --prefix=/ --squash git@github.com:/.git master -``` - -## 브랜치를 히스토리와 함께 파일로 추출하기 -```sh -git bundle create -``` - -## 번들 가져오기 -```sh -git clone repo.bundle -b -``` - -## 현재 브랜치명 가져오기 -```sh -git rev-parse --abbrev-ref HEAD -``` - -## 커밋시 파일 무시하기 (예를 들어, Changelog 파일) -```sh -git update-index --assume-unchanged Changelog; git commit -a; git update-index --no-assume-unchanged Changelog -``` - -## 리베이스 전에 변경사항 스태시하기 -```sh -git rebase --autostash -``` - -## ID로 풀 리퀘스트를 로컬 저장소로 가져오기 -```sh -git fetch origin pull//head: -``` - - -__다른 방법:__ -```sh -git pull origin pull//head: -``` - -## 현재 브랜치의 가장 최근 태그 보기 -```sh -git describe --tags --abbrev=0 -``` - -## diff 워드 단위로 보기 -```sh -git diff --word-diff -``` - -## diff 도구를 사용해 변경사항 보기 -```sh -git difftool -t -``` - -## 트래킹된 파일의 변경사항 무시하기 -```sh -git update-index --assume-unchanged -``` - -## assume-unchanged 되돌리기 -```sh -git update-index --no-assume-unchanged -``` - -## `.gitignore`에 명시된 파일들 삭제하기 -```sh -git clean -X -f -``` - -## 삭제된 파일 복구하기 -```sh -git checkout ^ -- -``` - -## 특정 커밋으로의 파일로 복구하기 -```sh -git checkout -- -``` - -## pull시 머지하는 대신 항상 리베이스 하기 -```sh -git config --global pull.rebase true -``` - - -__다른 방법:__ -```sh -#git < 1.7.9 -git config --global branch.autosetuprebase always -``` - -## 모든 별칭과 설정값들 나열하기 -```sh -git config --list -``` - -## 대소문자 구별 활성화 -```sh -git config --global core.ignorecase false -``` - -## 커스텀 에디터 추가하기 -```sh -git config --global core.editor '$EDITOR' -``` - -## 오타 자동 수정 활성화 -```sh -git config --global help.autocorrect 1 -``` - -## 변경사항이 어떤 릴리즈에 속하는지 확인하기 -```sh -git name-rev --name-only -``` - -## 명령어 테스트 해보기 (dry-run 플래그를 지원하는 모든 명령어에서 가능) -```sh -git clean -fd --dry-run -``` - -## 커밋이 이전 커밋의 수정 버전임을 표시하기 -```sh -git commit --fixup -``` - -## fixup 커밋을 일반 커밋으로 스쿼시하기 -```sh -git rebase -i --autosquash -``` - -## 커밋시 스테이징된 파일들 스킵하기 -```sh -git commit --only -``` - -## 대화형으로 스테이징하기 -```sh -git add -i -``` - -## 무시된 파일들 나열하기 -```sh -git check-ignore * -``` - -## 무시된 파일들 상태 출력 -```sh -git status --ignored -``` - -## Branch2에는 없고 Branch1에만 있는 커밋들 나열하기 -```sh -git log Branch1 ^Branch2 -``` - -## 마지막 n개의 커밋 나열하기 -```sh -git log - -``` - - -__다른 방법:__ -```sh -git log -n -``` - -## 이전에 충돌을 해결했던 방법을 기록하고 재사용하기 -```sh -git config --global rerere.enabled 1 -``` - -## 모든 충돌된 파일들 에디터로 열기 -```sh -git diff --name-only | uniq | xargs $EDITOR -``` - -## unpacked 오브젝트의 갯수와 디스크 사용량 보기 -```sh -git count-objects --human-readable -``` - -## 오브젝트 데이터베이스에서 도달할 수 없는 오브젝트들 제거하기 -```sh -git gc --prune=now --aggressive -``` - -## gitweb으로 워킹 디렉토리 탐색하기 -```sh -git instaweb [--local] [--httpd=] [--port=] [--browser=] -``` - -## 커밋 로그에서 GPG 시그니쳐 보기 -```sh -git log --show-signature -``` - -## 글로벌 설정에서 엔트리 제거하기 -```sh -git config --global --unset -``` - -## 히스토리가 없는 새로운 브랜치로 체크아웃하기 -```sh -git checkout --orphan -``` - -## 다른 브랜치에서 파일내용 가져오기 -```sh -git show : -``` - -## 루트 커밋과 머지 커밋만 나열하기 -```sh -git log --first-parent -``` - -## 대화형 리베이스로 이전 두 커밋 수정하기 -```sh -git rebase --interactive HEAD~2 -``` - -## 작업중인 브랜치들 모두 나열하기 -```sh -git checkout master && git branch --no-merged -``` - -## 이진 탐색으로 좋은/안좋은 커밋 검색하기 -```sh -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 깃 후킹 우회하기 -```sh -git commit --no-verify -``` - -## 특정 파일에 대한 커밋과 변경사항 나열하기 (이름이 바뀐 파일도 추적) -```sh -git log --follow -p -- -``` - -## 단일 브랜치 클론 -```sh -git clone -b --single-branch https://github.com/user/repo.git -``` - -## 새로운 브랜치 생성과 동시에 스위칭 -```sh -git checkout -b -``` - - -__다른 방법:__ -```sh -git branch && git checkout -``` - -## 커밋시 파일 모드 변경 무시 -```sh -git config core.fileMode false -``` - -## Git 터미널 색상 출력 비활성화 -```sh -git config --global color.ui false -``` - -## 특정 명령어에 대한 색상 설정 지정하기 -```sh -git config --global -``` - -## 모든 로컬 브랜치를 최근 커밋 날짜를 기준으로 정렬해 나열하기 -```sh -git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/ -``` - -## 트래킹된 파일에서 패턴(정규식이나 문자열)에 매칭되는 라인 검색 -```sh -git grep --heading --line-number 'foo bar' -``` - -## 저장소의 얕은 카피 버전 클론하기 -```sh -git clone https://github.com/user/repo.git --depth 1 -``` - -## 모든 브랜치에서 주어진 텍스트로 커밋 로그 검색하기 -```sh -git log --all --grep='' -``` - -## 브랜치의 첫 커밋 가져오기 (마스터 브랜치로부터 시작된) -```sh -git log master.. --oneline | tail -1 -``` - -## 스테이징된 파일들 언스테이징하기 -```sh -git reset HEAD -``` - -## 원격 저장소에 강제 푸시하기 -```sh -git push -f -``` - -## 저장소명 추가하기 -```sh -git remote add -``` - -## 주어진 파일의 각 라인별 author, 시간 그리고 최종 리비전명 보기 -```sh -git blame -``` - -## Author와 제목으로 커밋 그룹핑하기 -```sh -git shortlog -``` - -## 다른 사람이 작업한 내용을 덮어쓰지 않고 강제 푸시하기 -```sh -git push --force-with-lease -``` - -## 특정 author가 기여한 라인수 보기 -```sh -git log --author='_Your_Name_Here_' --pretty=tformat: --numstat | gawk '{ add += ; subs += ; loc += - } END { printf "added lines: %s removed lines: %s total lines: %s -", add, subs, loc }' - -``` - - -__다른 방법:__ -```sh -git log --author='_Your_Name_Here_' --pretty=tformat: --numstat | awk '{ add += ; subs += ; loc += - } END { printf "added lines: %s, removed lines: %s, total lines: %s -", add, subs, loc }' - # on Mac OSX -``` - -## Revert: 머지 복구하기 -```sh -git revert -m 1 -``` - -## 특정 브랜치의 커밋 수 출력하기 -```sh -git rev-list --count -``` - -## 별칭: git undo -```sh -git config --global alias.undo '!f() { git reset --hard $(git rev-parse --abbrev-ref HEAD)@{${1-1}}; }; f' -``` - -## 오브젝트에 노트(메모) 추가하기 -```sh -git notes add -m 'Note on the previous commit....' -``` - -## 모든 깃 노트 보기 -```sh -git log --show-notes='*' -``` - -## 다른 저장소에 있는 커밋 적용하기 -```sh -git --git-dir=/.git format-patch -k -1 --stdout | git am -3 -k -``` - -## 페치 레퍼런스 지정하기 -```sh -git fetch origin master:refs/remotes/origin/mymaster -``` - -## 두 브랜치의 공통 조상 커밋 찾기 -```sh -diff -u <(git rev-list --first-parent BranchA) <(git rev-list --first-parent BranchB) | sed -ne 's/^ //p' | head -1 -``` - -## 푸시되지 않은 커밋들 나열하기 -```sh -git log --branches --not --remotes -``` - - -__다른 방법:__ -```sh -git log @{u}.. -``` - - -```sh -git cherry -v -``` - -## 공백 변경사항을 제외한 모든 변경사항 추가하기 -```sh -git diff --ignore-all-space | git apply --cached -``` - -## 깃 설정 [로컬/글로벌] 수정하기 -```sh -git config [--global] --edit -``` - -## 특정 구간에서 blame 정보 보기 -```sh -git blame -L , -``` - -## Git의 논리적 변수 보기 -```sh -git var -l | -``` - -## 패치 파일 미리 포맷팅하기 -```sh -git format-patch -M upstream..topic -``` - -## 저장소명 가져오기 -```sh -git rev-parse --show-toplevel -``` - -## 특정 날짜 구간 사이의 커밋 로그 출력하기 -```sh -git log --since='FEB 1 2017' --until='FEB 14 2017' -``` - -## 로그에서 author 제외하기 -```sh -git log --perl-regexp --author='^((?!excluded-author-regex).*) - -``` - -## 브랜치의 수정사항 요약하기 -```sh -git request-pull v1.0 https://git.ko.xz/project master:for-linus -``` - -## 원격 저장소의 모든 레퍼런스 나열하기 -```sh -git ls-remote git://git.kernel.org/pub/scm/git/git.git -``` - -## 트래킹되지 않은 파일들 백업하기 -```sh -git ls-files --others -i --exclude-standard | xargs zip untracked.zip -``` - -## 모든 git 명령어 별칭 나열하기 -```sh -git config -l | grep alias | sed 's/^alias\.//g' -``` - - -__다른 방법:__ -```sh -git config -l | grep alias | cut -d '.' -f 2 -``` - -## git 상태 간략하게 보기 -```sh -git status --short --branch -``` - -## 하루 전의 커밋으로 체크아웃하기 -```sh -git checkout master@{yesterday} -``` - -## 새로운 로컬 브랜치를 원격 저장소에 푸시하고 트래킹하기 -```sh -git push -u origin -``` - -## 브랜치 베이스 변경하기 -```sh -git rebase --onto -``` - -## 원격 저장소에 HTTPs 대신 SSH 사용하기 -```sh -git config --global url.'git@github.com:'.insteadOf 'https://github.com/' -``` - -## 최신 커밋에 서브모듈 업데이트하기 -```sh -cd -git pull origin -cd -git add -git commit -m "submodule updated" -``` - -## LF에서 CRLF로의 자동 변환 막기 -```sh -git config --global core.autocrlf false -``` \ No newline at end of file