문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
git:cheatsheet [2020/10/27 23:14] kwon37xi [Git Cheatsheet] |
git:cheatsheet [2023/05/26 11:15] kwon37xi [파일 보기 view / show] |
||
---|---|---|---|
줄 3: | 줄 3: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
===== 설정 보기 ===== | ===== 설정 보기 ===== | ||
<code sh> | <code sh> | ||
줄 14: | 줄 14: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | |||
+ | ===== commit template ===== | ||
+ | * 기본적으로 '' | ||
+ | * '' | ||
+ | * ''#'' | ||
+ | |||
===== 받기 ===== | ===== 받기 ===== | ||
줄 25: | 줄 31: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
줄 30: | 줄 38: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * [[https:// | ||
+ | * 차이나는 Jira 이슈 번호만 뽑기< | ||
+ | git log --oneline --no-merges --no-decorate 브랜치1..브랜치2 \ | ||
+ | | grep -o " | ||
+ | </ | ||
+ | |||
+ | ===== 파일 보기 view / show ===== | ||
+ | * '' | ||
+ | |||
===== Log ===== | ===== Log ===== | ||
* '' | * '' | ||
줄 104: | 줄 124: | ||
# 맨 처음 커밋로그(합쳐진 결과가 될 커밋)을 제외하고 " | # 맨 처음 커밋로그(합쳐진 결과가 될 커밋)을 제외하고 " | ||
</ | </ | ||
+ | * 절대 이미 push 해버린 커밋들을 합치지 말 것. | ||
+ | |||
+ | ===== 마지막 커밋에 신규 변경사항 추가로 넣기 (Push 전) ===== | ||
+ | * 아지 **Push하기 전**이라면 마지막 커밋후 추가 변경사항을 마지막 커밋에 더 추가할 수 있다. | ||
+ | * [[https:// | ||
+ | <code sh> | ||
+ | # 변경을 추가하고 | ||
+ | git add changelog.md | ||
+ | # 마지막 커밋에 넣는다. commit message를 신규로 작성해야 한다. | ||
+ | git commit --amend | ||
+ | |||
+ | # commit message는 그대로 두고 싶다면 | ||
+ | git commit --amend --no-edit | ||
+ | </ | ||
+ | |||
===== 변경 파일 취소 (Revert) ===== | ===== 변경 파일 취소 (Revert) ===== | ||
* [[http:// | * [[http:// | ||
- | * **'' | + | * **'' |
* push 되지 않은 commit들 취소할 때 커밋되지 않은 변경사항들 유지하기< | * push 되지 않은 commit들 취소할 때 커밋되지 않은 변경사항들 유지하기< | ||
# 커밋 외의 변경사항이 있을 때 변경 사항들을 stash 해 두어야 한다. | # 커밋 외의 변경사항이 있을 때 변경 사항들을 stash 해 두어야 한다. | ||
줄 118: | 줄 153: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
* [[http:// | * [[http:// | ||
줄 129: | 줄 164: | ||
* '' | * '' | ||
* 여기에 '' | * 여기에 '' | ||
+ | * upstream 과 동일하게 변경(push 안된 commit 까지 모두 취소)< | ||
+ | # 현재 develop 브랜치일 때 | ||
+ | git fetch origin develop | ||
+ | git reset --hard origin/ | ||
+ | git clean -d --force | ||
+ | </ | ||
+ | |||
===== 신규 프로젝트 올리기 ===== | ===== 신규 프로젝트 올리기 ===== | ||
이미 파일이 많은 신규 프로젝트를 Git 리포지토리로 올리는 작업이 필요한 경우. [[http:// | 이미 파일이 많은 신규 프로젝트를 Git 리포지토리로 올리는 작업이 필요한 경우. [[http:// | ||
줄 154: | 줄 196: | ||
===== Branch ===== | ===== Branch ===== | ||
* '' | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
- | * '' | + | * local 브랜치가 존재할 경우에는 |
+ | * local 브랜치가 존재하지 않고 remote 에 일치하는 이름의 브랜치가 딱 하나 존재하면 local 브랜치를 생성하고 remote 브랜치를 tracking 한다. 즉, '' | ||
+ | * '' | ||
+ | * local 브랜치가 존재할 경우 해당 브랜치로 스위치 | ||
+ | * local 브랜치가 존재하지 않고 remote 에 일치하는 이름의 브랜치가 딱 하나 존재하면 local 브랜치를 생성하고 remote 브랜치를 tracking 한다. 즉, '' | ||
* '' | * '' | ||
* '' | * '' | ||
줄 167: | 줄 214: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
+ | |||
+ | ===== master to main 변경 ===== | ||
+ | * [[https:// | ||
+ | * local master -> main 변경하기. | ||
+ | <code sh> | ||
+ | 아래 명령을 실행하면 master 브랜치의 모든 커밋등이 main으로 넘어간다. | ||
+ | git branch -m master main | ||
+ | |||
+ | # 올리기 | ||
+ | git push -u origin main | ||
+ | |||
+ | # HEAD를 main으로 변경 | ||
+ | git symbolic-ref refs/ | ||
+ | |||
+ | # github/ | ||
+ | # master 브랜치 | ||
+ | git push origin --delete master | ||
+ | |||
+ | # 확인 | ||
+ | git branch -a | ||
+ | </ | ||
+ | |||
+ | |||
===== Remote Branch ===== | ===== Remote Branch ===== | ||
* 로컬 브랜치를 만들어 작업하고 나서 다음과 같이 작업한다. '' | * 로컬 브랜치를 만들어 작업하고 나서 다음과 같이 작업한다. '' | ||
- | * **'' | + | * **'' |
* **'' | * **'' | ||
- | * **'' | + | * '' |
+ | * **'' | ||
* '' | * '' | ||
* '' | * '' | ||
줄 217: | 줄 289: | ||
* [[https:// | * [[https:// | ||
===== Rebase ===== | ===== Rebase ===== | ||
+ | * [[https:// | ||
+ | |||
+ | > **이미 공개 저장소에 Push 한 커밋을 Rebase 하지 마라** | ||
+ | > 이 지침만 지키면 Rebase를 하는 데 문제 될 게 없다. 하지만, 이 주의사항을 지키지 않으면 사람들에게 욕을 먹을 것이다. | ||
+ | > 일반적인 해답을 굳이 드리자면 로컬 브랜치에서 작업할 때는 히스토리를 정리하기 위해서 Rebase 할 수도 있지만, 리모트 등 어딘가에 **Push로 내보낸 커밋에 대해서는 절대 Rebase 하지 말아야 한다.** | ||
+ | |||
* [[http:// | * [[http:// | ||
* **rebase라는 것은 현재 브랜치의 base가 되는 뿌리 커밋을 바꿔친다는 뜻이다.** | * **rebase라는 것은 현재 브랜치의 base가 되는 뿌리 커밋을 바꿔친다는 뜻이다.** | ||
줄 233: | 줄 311: | ||
* '' | * '' | ||
===== Tag ===== | ===== Tag ===== | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
줄 241: | 줄 321: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * https:// | ||
+ | |||
===== Merge ===== | ===== Merge ===== | ||
* '' | * '' | ||
줄 247: | 줄 331: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
===== Stash ===== | ===== Stash ===== | ||
* [[http:// | * [[http:// | ||
줄 310: | 줄 396: | ||
git config --global alias.visual ' | git config --global alias.visual ' | ||
</ | </ | ||
+ | |||
+ | ===== ignore ===== | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | <code sh> | ||
+ | git config --global core.excludesfile ~/ | ||
+ | </ | ||
+ | ===== 참조 ===== | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |