* 학습 내용
- 아직 푸쉬되지 않은 커밋 메세지 고치기
- 이미 작성한 커밋에 파일 추가하기
- 스테이지에 올린 파일 취소하기
- 푸쉬하기 전에 커밋 취소하기
- reset --hard로 지워진 커밋 복구하기
- 이미 푸시한 커밋 취소하기
- 다른 브랜치의 커밋 복사하기(가져오기)
- 과거 커밋에서 다시 시작하기
- 이미 push된 파일 git ignore하기
1. 아직 푸쉬되지 않은 커밋 메세지 고치기
# 기존 커밋 메세지 내역 확인 git log --oneline # 커밋된 파일은 하나도 바꾸지 않고 커밋 메세지만 바꾸기 git commit --amend -m "새로운 메세지"
2. 이미 작성한 커밋에 파일 추가하기
이미 커밋을 해버린 상태에서 이 커밋에 포함하면 좋을 것 같은 작업이 추가된 경우
수정사항을 스테이지에 올린 후 커밋 메세지를 수정하면 기존 커밋에 새로운 작업이 포함된다
# 일단 수정사항을 스테이지에 올린다 git add -A # 메세지를 고치는 것과 동일한 커맨드 작성 git commit --amend -m "새로운 작업을 포함한 커밋 메세지"
3. 스테이지에 올린 파일 취소하기
스테이지에 파일을 잘못 포함시킨 경우
스테이지에 올린 파일을 빼고 싶은 경우
git reset HEAD "빼고 싶은 파일명"
4. 푸쉬하기 전에 커밋 취소하기
커밋한 작업에 실수가 들어있던 경우 커밋 취소하기
git reset HEAD~1 # 또는 git reset "커밋 해시"
숫자는 HEAD로부터 초기화시키고 싶은 커밋 간의 거리를 의미함. 예로 들어 최신 커밋은1, 3번 전의 커밋은 3이다.
커밋 해시 조회 방법은 아래의 커맨드를 입력한다.
git log --oneline
1) 커밋 취소 방식: --hard, --soft, --mixed
① --hard
: 제일 위험한 옵션. 마치 그런 변화가 없었던 것처럼 파일의 변동사항 자체를 지워버리는 것. 공들인 작업물이 날라갈 수 있는 제일 위험한 방식이니 가급적이면 하지 말자. 물론 그럼에도 불구하고 구제방법은 있다. 해당 방법은 주제 5번에서 확인.
git reset --hard
② --soft
: 커밋한 이력이 없어지고 스테이지에 올라간 상태가 된다.
로컬에는 수정사항이 남아있고 작성했던 커밋은 더이상 기억되지 않음. 수정사항은 스테이지에 남아있기 때문에 커 밋하면 바로 포함시킬 수 있음
git reset --soft
③ --mixed
: 커밋한 이력도 없어지고 스테이지에서도 내려가지만 untracked로 변동사항만은 남아있다. 다시 커밋하고 싶으면 git add를 통해 해당 파일을 스테이지에 올려 놓아야 한다. 아무런 옵션을 넣지 않는 경우 --mixed가 기본동작.
git reset --mixed # 또는 git reset
5. reset --hard로 지워진 커밋 복구하기
garbage collection이 되지 않았다면 커밋 복구 가능하다.
git reflog를 쓰면 그동안의 커밋들을 볼 수 있다. 여기서 맨왼쪽의 커밋 해시를 확인한 후
아래 커맨드를 입력해주면 해당 커밋이 살아난다.
git reset --hard "살리고 싶은 커밋 해시"
6. 이미 푸시한 커밋 취소하기
잘못 푸시한 경우 reset을 해도 내 로컬에서만 취소된다. 따라서 이미 푸시한 커밋을 취소할 때는 아래 커맨드를 사용.
git revert
7. 다른 브랜치의 커밋 복사하기(가져오기)
다른 브랜치의 커밋을 사용하고 싶은 경우.
동일한 내용이 다른 브랜치에 필요한 경우나 그냥 커밋을 잘못한 경우 등등.
다른 브랜치의 커밋을 복사해와 적용하고 싶은 경우, 가져오고 싶은 커밋이 있는 브랜치의 커밋 해시를 알아낸 후 해당 커밋을 적용하고 싶은 브랜치로 이동한 뒤 아래의 커맨드를 입력한다.
# 가져오고 싶은 커밋이 있는 브랜치로 이동해서 해당 커밋 해시 조회 git log --oneline # 해당 커밋을 적용하고 싶은 브랜치로 이동한 뒤 아래 커맨드 입력 git cherry-pick "복사하고 싶은 커밋 해시"
8. 과거 커밋에서 다시 시작하기
git checkout "돌아가고 싶은 커밋 해시" # 해당 커밋에서 새로운 브랜치 만들어서 작업 시작할 경우 아래 커맨드 입력 git checkout -b "새로운 브랜치 이름"
9. 이미 push된 파일 git ignore하기
git ignore해야 하는 파일인데 실수로 이미 push가 되어버린 경우
.gitignore 파일을 올바르게 고친 뒤 아래 커맨드 입력
git rm -r --cached .
그 후 git add -A, 커밋 후 push 해주면 된다. 단 이미 올라간 과거 커밋 이력에는 해당 파일의 내용이 남아 있다.
'Edu > 02. Git_N_Github' 카테고리의 다른 글
.gitignore를 추가해 github에 쓸데없는 파일 업로드 방지하자 (0) | 2024.01.17 |
---|---|
git bash에서 한글명 표기가 숫자로 나타날 때 (2) | 2024.01.14 |
커밋 라인의 타임머신인 HEAD (0) | 2021.07.18 |
두 커밋 간의 차이 보기 (0) | 2021.07.18 |
git 명령어 alias 사용하기 (0) | 2021.07.18 |