<commit_before>---
layout: post
title: 자주쓰는 GIT 명령어 정리
description: 자주쓰는 GIT 명령어 정리
date:   2019-06-13 13:00:00 +0900
author: <NAME>
categories: git
tags:	git
---
## 가져오기
* 리모트에 있는 브랜치를 Local로 가져오면서 브랜치 만들기
```plain
git checkout -b <생성할Local브랜치이름> <원격브랜치이름>
```
* 다른 브랜치에서 일부 파일만 가져오기
```plain
git checkout -patch <가져올브랜치이름> <가져올 파일이름>
```
>y-stage

>n-no stage

>a-stage all hunk

## 합치기
* merge 시작
```plain
git mergetool
```
* Rebase 계속
```plain
git rebase --continue
```
* 선택한 커밋만 합치기. -n 옵션 stage 상태로. 없으면 commit됨
```plain
git cherry-pick -n <커밋id>
```

## 파일 삭제
* Untracked file 과 디렉토리 한번에 삭제. `--dry-run` 옵션 넣어서 지울 파일 한번 확인해보고 하자
```plain
git clean -fd
```

## 되돌리기
* 커밋id로 되돌림. 작업 했던 것은 안 날라감. 최종 수정 했던 상태로 남음
```plain
git reset <커밋id>
```
* 커밋id로 되돌림. 작업했던 것 모두 없어짐
```plain
git reset --hard <커밋id>
```
* 마지막 커밋 취소. 작업했던 것 모두 없어짐
```plain
git reset --hard HEAD
```
* Untracked로 만들기. 변경한것 남음
```plain
git rm --cached <file>
```
* 선택한 파일의 수정사항을 원래대로 되돌림. Stage된것과 새파일은 그대로 있음
```plain
git checkout -- <file>
```
* 수정된 모든 파일을 원래대로 되돌림
```plain
git checkout -- .
```
* untracked로 만들기
```plain
git rm --cached <file>
```

## 브랜치 삭제
* 리모트 브랜치 삭제
```plain
git push origin --delete <branch>
```
* 로컬 브랜치 삭제
```plain
git branch -d <branch>
```

## 현재 작업중인 것 임시 저장
* 현재 변경 사항 저장
```plain
git stash
```
* 저장했던 것 복원
```plain
git stash pop
```

## 브랜치 조회
* 로컬과 리모트에 있는 모든 브랜치 조회
```plain
git branch -a
```


## 리모트 히스토리 정리(브랜치를 삭제했는데 남아 있을 때)
* 이미 리모트에서 삭제된 브랜치를 정리한다
```plain
git remote prune origin
```


## 최초 설정
* 히스토리 조회를 그래프로 표시
```plain
git config --global alias.lt "log --oneline --decorate --graph --all"
```
* 머지툴 설정
```plain
git config --global merge.tool winmerge
```

## 참고사항
### HEAD
마지막 커밋 스냅샷, 다음 커밋의 부모 커밋, 현재 브랜치 마지막 커밋의 스냅샷
### Index
다음에 커밋할 스냅샷
### 워킹 디렉토리
샌드박스
### reset
HEAD를 옮긴다
커밋만 옮김 => git commit 을 취소
```plain
git reset --soft HEAD~
```<commit_msg>비교하기 추가<commit_after>---
layout: post
title: 자주쓰는 GIT 명령어 정리
description: 자주쓰는 GIT 명령어 정리
date:   2019-06-13 13:00:00 +0900
author: <NAME>
categories: git
tags:	git
---
## 가져오기
* 리모트에 있는 브랜치를 Local로 가져오면서 브랜치 만들기
```plain
git checkout -b <생성할Local브랜치이름> <원격브랜치이름>
```
* 다른 브랜치에서 일부 파일만 가져오기
```plain
git checkout -patch <가져올브랜치이름> <가져올 파일이름>
```
>y-stage

>n-no stage

>a-stage all hunk

## 합치기
* merge 시작
```plain
git mergetool
```
* Rebase 계속
```plain
git rebase --continue
```
* 선택한 커밋만 합치기. -n 옵션 stage 상태로. 없으면 commit됨
```plain
git cherry-pick -n <커밋id>
```

## 파일 삭제
* Untracked file 과 디렉토리 한번에 삭제. `--dry-run` 옵션 넣어서 지울 파일 한번 확인해보고 하자
```plain
git clean -fd
```

## 되돌리기
* 커밋id로 되돌림. 작업 했던 것은 안 날라감. 최종 수정 했던 상태로 남음
```plain
git reset <커밋id>
```
* 커밋id로 되돌림. 작업했던 것 모두 없어짐
```plain
git reset --hard <커밋id>
```
* 마지막 커밋 취소. 작업했던 것 모두 없어짐
```plain
git reset --hard HEAD
```
* Untracked로 만들기. 변경한것 남음
```plain
git rm --cached <file>
```
* 선택한 파일의 수정사항을 원래대로 되돌림. Stage된것과 새파일은 그대로 있음
```plain
git checkout -- <file>
```
* 수정된 모든 파일을 원래대로 되돌림
```plain
git checkout -- .
```
* untracked로 만들기
```plain
git rm --cached <file>
```

## 브랜치 삭제
* 리모트 브랜치 삭제
```plain
git push origin --delete <branch>
```
* 로컬 브랜치 삭제
```plain
git branch -d <branch>
```

## 현재 작업중인 것 임시 저장
* 현재 변경 사항 저장
```plain
git stash
```
* 저장했던 것 복원
```plain
git stash pop
```

## 브랜치 조회
* 로컬과 리모트에 있는 모든 브랜치 조회
```plain
git branch -a
```


## 리모트 히스토리 정리(브랜치를 삭제했는데 남아 있을 때)
* 이미 리모트에서 삭제된 브랜치를 정리한다
```plain
git remote prune origin
```

## 비교하기
* difftool을 이용해서 현재 branch와 다른 브랜치 비교
```plain
git difftool <branch>
git difftool <branch> *.jsp
```
* difftool을 이용해서 커밋 간 비교
```plain
git difftool <commit1> <commit2>
```


## 최초 설정
* 히스토리 조회를 그래프로 표시
```plain
git config --global alias.lt "log --oneline --decorate --graph --all"
```
* 머지툴 설정
```plain
git config --global merge.tool winmerge
```

## 참고사항
### HEAD
마지막 커밋 스냅샷, 다음 커밋의 부모 커밋, 현재 브랜치 마지막 커밋의 스냅샷
### Index
다음에 커밋할 스냅샷
### 워킹 디렉토리
샌드박스
### reset
HEAD를 옮긴다
커밋만 옮김 => git commit 을 취소
```plain
git reset --soft HEAD~
```
{'fraction_non_alphanumeric': 0.16091954022988506, 'fraction_numerical': 0.009706257982120051, 'mean_word_length': 3.2426868905742143, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 41, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5431350', 'n_tokens_mistral': 2605, 'n_tokens_neox': 3306, 'n_words': 635}