문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
git:cheatsheet [2019/11/06 14:11] kwon37xi [Remote Branch] |
git:cheatsheet [2023/10/31 07:56] kwon37xi [Branch] |
||
---|---|---|---|
줄 3: | 줄 3: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
===== 설정 보기 ===== | ===== 설정 보기 ===== | ||
<code sh> | <code sh> | ||
줄 14: | 줄 14: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | |||
+ | ===== commit template ===== | ||
+ | * 기본적으로 '' | ||
+ | * '' | ||
+ | * ''#'' | ||
+ | |||
===== 받기 ===== | ===== 받기 ===== | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * hitory 없이 최소한으로 clone 하고 '' | ||
+ | git clone --depth=1 git:// | ||
+ | rm -rf !$/.git # !$ 는 직전 명령의 마지막 인자(dirformynewrepo) 를 뜻한다. | ||
+ | </ | ||
===== 비교 ===== | ===== 비교 ===== | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
줄 27: | 줄 38: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * [[https:// | ||
+ | * 차이나는 Jira 이슈 번호만 뽑기< | ||
+ | git log --oneline --no-merges --no-decorate 브랜치1..브랜치2 \ | ||
+ | | grep -o " | ||
+ | </ | ||
+ | |||
+ | ===== 파일 보기 view / show ===== | ||
+ | * '' | ||
+ | |||
===== Log ===== | ===== Log ===== | ||
* '' | * '' | ||
줄 74: | 줄 97: | ||
* [[http:// | * [[http:// | ||
* 여러개의 커밋에 대한 변경 <code sh> | * 여러개의 커밋에 대한 변경 <code sh> | ||
+ | # 특정 commit 지정할 경우 | ||
+ | git rebase -i -p 원하는커밋바로앞커밋hash ## 바로 앞!!! ## | ||
+ | |||
# 특정 갯수 지정할 경우 | # 특정 갯수 지정할 경우 | ||
git rebase -i HEAD~갯수 | git rebase -i HEAD~갯수 | ||
줄 79: | 줄 105: | ||
git rebase -i $parent_of_flawed_commit | git rebase -i $parent_of_flawed_commit | ||
# 여기서 나온 편집기 화면에서 고치고자 하는 커밋을 pick 대신 edit로 수정한다. | # 여기서 나온 편집기 화면에서 고치고자 하는 커밋을 pick 대신 edit로 수정한다. | ||
+ | # ------------------------------ | ||
# 이제 작성자 변경작업 | # 이제 작성자 변경작업 | ||
git commit --amend --author "New Author Name < | git commit --amend --author "New Author Name < | ||
git rebase --continue | git rebase --continue | ||
+ | |||
+ | # 이미 push 된 상황이면 --force 로 push 해야만 함. | ||
+ | git push --force | ||
</ | </ | ||
* 가장 최근 한 개만 변경< | * 가장 최근 한 개만 변경< | ||
줄 95: | 줄 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 해 두어야 한다. | ||
줄 109: | 줄 153: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
* [[http:// | * [[http:// | ||
줄 120: | 줄 164: | ||
* '' | * '' | ||
* 여기에 '' | * 여기에 '' | ||
+ | * upstream 과 동일하게 변경(push 안된 commit 까지 모두 취소)< | ||
+ | # 현재 develop 브랜치일 때 | ||
+ | git fetch origin develop | ||
+ | git reset --hard origin/ | ||
+ | git clean -d --force | ||
+ | </ | ||
+ | |||
===== 신규 프로젝트 올리기 ===== | ===== 신규 프로젝트 올리기 ===== | ||
이미 파일이 많은 신규 프로젝트를 Git 리포지토리로 올리는 작업이 필요한 경우. [[http:// | 이미 파일이 많은 신규 프로젝트를 Git 리포지토리로 올리는 작업이 필요한 경우. [[http:// | ||
줄 144: | 줄 195: | ||
===== Branch ===== | ===== Branch ===== | ||
+ | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
- | * '' | + | * local 브랜치가 존재할 경우에는 해당 |
+ | * local 브랜치가 존재하지 않고 remote 에 일치하는 이름의 브랜치가 딱 하나 존재하면 local 브랜치를 생성하고 remote 브랜치를 tracking 한다. 즉, '' | ||
+ | * '' | ||
+ | * local 브랜치가 존재할 경우 해당 브랜치로 스위치 | ||
+ | * local 브랜치가 존재하지 않고 remote 에 일치하는 이름의 브랜치가 딱 하나 존재하면 local 브랜치를 | ||
+ | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
줄 155: | 줄 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 ===== | ||
* 로컬 브랜치를 만들어 작업하고 나서 다음과 같이 작업한다. '' | * 로컬 브랜치를 만들어 작업하고 나서 다음과 같이 작업한다. '' | ||
- | * **'' | + | * **'' |
- | * **'' | + | * **'' |
+ | * '' | ||
+ | * **'' | ||
* '' | * '' | ||
* '' | * '' | ||
줄 166: | 줄 251: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
===== 2개 이상의 Remote 사용 ===== | ===== 2개 이상의 Remote 사용 ===== | ||
줄 204: | 줄 289: | ||
* [[https:// | * [[https:// | ||
===== Rebase ===== | ===== Rebase ===== | ||
+ | * [[https:// | ||
+ | |||
+ | > **이미 공개 저장소에 Push 한 커밋을 Rebase 하지 마라** | ||
+ | > 이 지침만 지키면 Rebase를 하는 데 문제 될 게 없다. 하지만, 이 주의사항을 지키지 않으면 사람들에게 욕을 먹을 것이다. | ||
+ | > 일반적인 해답을 굳이 드리자면 로컬 브랜치에서 작업할 때는 히스토리를 정리하기 위해서 Rebase 할 수도 있지만, 리모트 등 어딘가에 **Push로 내보낸 커밋에 대해서는 절대 Rebase 하지 말아야 한다.** | ||
+ | |||
* [[http:// | * [[http:// | ||
* **rebase라는 것은 현재 브랜치의 base가 되는 뿌리 커밋을 바꿔친다는 뜻이다.** | * **rebase라는 것은 현재 브랜치의 base가 되는 뿌리 커밋을 바꿔친다는 뜻이다.** | ||
줄 220: | 줄 311: | ||
* '' | * '' | ||
===== Tag ===== | ===== Tag ===== | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
줄 228: | 줄 321: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * https:// | ||
+ | |||
===== Merge ===== | ===== Merge ===== | ||
* '' | * '' | ||
줄 234: | 줄 331: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
===== Stash ===== | ===== Stash ===== | ||
* [[http:// | * [[http:// | ||
줄 297: | 줄 396: | ||
git config --global alias.visual ' | git config --global alias.visual ' | ||
</ | </ | ||
+ | |||
+ | ===== ignore ===== | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | <code sh> | ||
+ | git config --global core.excludesfile ~/ | ||
+ | </ | ||
+ | ===== 참조 ===== | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |