티스토리 뷰
Commit 한 메시지를 바꾸고 싶으면?
git commit --amend -m "new message"
git log --oneline
=> 변경된 메시지가 보임
같은 커밋에 몇 가지 파일을 더 추가하고 싶은면?
git add -A
git commit --amend -m "new message"
staging에 add했는데 원하지 않을때? (이부분은 git command에서 알려줌)
- "Use
git reset HEAD <file>...
to unstage" 메시지 rm <file>
git status
push전에 커밋을 지우고 싶을 때? (꼭 푸시전에, 안그러면 다른 사람들은 영향을 받음)
git reset <hash>
Reset --hard, --soft, --mixed 차이?
git reset --soft HEAD~1
- 헤드를 바로 뒤로 (~1) 보낸다.
- 현재 커밋을 staging 상태로 보냄
git reset --mixed HEAD~1
- 헤드를 바로 뒤로 + 현재 커밋을 unstaging 상태로 보냄
git reset --hard HEAD~1
- 헤드를 바로 뒤로 + 변경 사항을 다 지워버림
Reset --hard로 지워진 내용을 살리고 싶으면?
git reflog
에서 복구하고 싶은 커밋 해시값을 찾아git reset --hard <hash>
이미 푸시한 커밋을 undo 하고 싶으면?
git revert <hash>
- 히스토리는 남아있으나 최근 커밋은 사라짐
- 히스토리가 있다는 것은 커밋을 되돌리면 사라진 내용을 되살릴 수 있다는 것
한 브랜치에서 커밋을 다른 브랜치로 복사하려면?
git cherry-pick <hash>
- 가져오지만 해시값은 달라짐 (복사가 된다는 이야기)
잘못된 브랜치에서 커밋된 걸 옮기는 방법
- 옮길 브랜치에서 체리픽을 먼저 함
- 잘못된 브랜치로 가서
git reset <hash>
git checkout <file>
=> reset --hard와 같은 효과이지만 수동으로 직접 리셋할 파일을 지정할 수 있다는 점에서 이런 방식을 선호
로컬에서 수정중에 (커밋전) pulling을 하고 싶을때?
- 스태시를 하거나 현재 수정중인걸 커밋하거나
- 스태시하는 법
git stash
git stash list
- 가져오기
git stash pop
=> merge conflict => 파일을 수정하면됨- 머지 충돌이 일어나면 pop을 해도 스태시에 남아있다
git stash drop stash@{0}
스태시 삭제
이전 커밋으로 가서 수정하는 방법?
git checkout <hash>
를 하면 그 상태로 이동하는데 HEAD가 브랜치에서 떨어진 상태가 된다. => 이 말은 HEAD가 가리키는 브랜치가 없다는 말이다.- 우리가 이 상태에 있는 것을 저장하려면 브랜치가 필요하다.
- 브랜치 생성
git checkout -b my-new-branch
git branch -vv
=>전체 브랜치 상태를 볼 수 있다.
머지 충돌이 있는 pull request 고치는 법
- 여러 방법이 있는데, 일단 깃헙에서 pull request를 할 때 conflict가 있다고 뜬다면 pull request를 삭제하거나 진행하지 말고
git merge master
를 현재 브랜치에서 먼저 해 충돌을 없앤 뒤 다시 pull request를 한다. (merge conflict를 로컬에서 관리한다)
pull request를 한 뒤 브랜치 삭제하기
git remote prune origin --dry-run
브랜치에 원격 브랜치가 연결되어 있다면 (dry-run으로 일단 테스트 한뒤 prune하면 사라진다)- 여전히 로컬에서 브랜치가 남아있다
git branch -d <branchname>
하면 브랜치 삭제git reflog
를 보면 브랜치를 삭제한 해시 상태가 있어서 브랜치를 다시 복구시킬수도 있다.
이전 커밋의 메시지를 변경하고 싶으면?
git rebase -i HEAD~3
(위치는 수정하고자 하는 해시의 이전까지)- 해당 커밋을 기본 선택된
pick
대신reword
로 변경 후 저장 - 메시지를 변경하면 변경되었다고 알려줌
이미 커밋하고 푸시된 파일 무시하기
- gitignore에 파일 추가 후 우선 커밋 & 푸시
- 그래도 푸시한 파일은 보임
git rm -r --cached .
git add -A
- 커밋 후 푸시
- 여전히 히스토리에서는 보이긴하지만 최신 레파지토리에서는삭제됨
이전 커밋에 파일 추가
git rebase -i HEAD~1
edit
git status
를 보면 현재 리베이스 진행중이라 뜸git add <file>
git commit --amend --no-edit
git rebase --continue
리베이스 완료- 변경한 커밋의 해시값이 바뀜
리베이스를 하다가 충돌이나는경우
- 머지를 완료한 뒤 리베이스를 완료할 수 있다.
리베이스 squash
- 이전 커밋들을 한꺼번에 묶을 수 있다.
- 리베이스 한 뒤 묶을 커밋들만
squash
로 바꾸고 저장 - 변경된 커밋 메시지를 볼 수 있음 => 수정후 저장하면 커밋은 변경되어 있다.
깃 히스토리에 푸시된 파일 완전히 삭제하기
- BFG라는 도구가 있다 ( BFG 설명)
- BFG jar 파일 다운
git clone --mirror [repo url]
java -jar ~/Downloads/bfg-1.13.0.jar --delete-files .env my-repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
'거인의 어깨위에 서려는 > 트렌디한 개발자를 위한' 카테고리의 다른 글
간단한 분석 HTML 페이지 생성 & PDF로 변환하는 방법 (0) | 2020.11.15 |
---|---|
ZSH 설정 팁 (for Mac) (1) | 2020.06.26 |
Angular8 : 새로운 기능 요약 (0) | 2019.06.08 |
저는 React Native가 처음인데요 - 2 (0) | 2019.01.26 |
저는 React Native가 처음인데요 (0) | 2019.01.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 공존이 필요해요
- 소름돋는필력
- 스크럼
- git ssh 연동
- 최은영작가님
- iterms
- multiDex issue
- 이미지 여백주기
- MVP
- 소프트웨어 공학
- 아키텍처
- 좋은 습관이란
- 애드 캣멀
- patch-packages
- 이미지 일괄 변경
- node.js
- retrofit
- React Native
- Android
- git 실수
- gradle
- 구독료 계산기
- 시간 관리
- go
- 그리고 상상력
- release build issue
- 안드로이드
- 창의성을 지휘하라
- egghead
- 쉽게 말하는법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함