Git으로 작업시 로컬저장소에서 작업후 리모트저장소에 push/올리기 전까지는 어떻게든 수정이 가능하다.
하지만, 리모트저장소에 올라간 순간부터는 문제가 복잡해진다.
1) 1인 프로젝트 - 예외사항 혹은 연습
#하나의 커밋만 수정할 경우
1.로컬 저장소의 마지막 커밋을 덮어써 수정.
2.리모트저장소에 강제로 저장.
#둘 이상의 커밋을 수정할 경우
1.이전의 커밋으로 되돌아간다.
2.코드를 수정후 커밋.
3.리모트저장소에 강제로 저장.
*이 방법은 해결책이라기 보다는 커밋과 히스토리가 깨끗이 유지하는 것이다. 커밋은 항상 새로 생성된다. 그러기에 이전 커밋을 삭제시, 커밋 ID가 달라 혼선을 일으킨다. 하지만, 1인 프로젝트의 경우 다른 사람과 커밋 ID를 공유하지 않기에 해당 방법을 사용하여 로그를 깨끗이 유지할 수 있다. push는 항상 신중하게 하자.
2) 프로젝트
1.잘못된 커밋 이전의 문제없는 커밋을 역순으로 최신의 커밋으로 순서를 올린다. revert 사용
2.코드를 수정후 커밋한다.
3.리모트 저장소에 저장.
#예시
1) 1인 프로젝트
#하나의 커밋만 수정할 경우
# 1.코드를 수정한 후, 마지막 커밋을 덮어써 수정한다.
git add .
git commit --amend
*코드 수정 내용이 다르다면, 커밋 메세지도 같이 수정하도록 하자.
# 2.리모트저장소에 강제로 저장
git push origin +master
#둘 이상의 커밋을 수정할 경우
# 1.이전의 커밋을 삭제한다. / 이전의 커밋으로 이동한다.
git reset --hard HEAD~2
git reset --hard HEAD^^
*참조
명령어 HEAD 위치 인덱스 작업 트리
soft 변경함 변경 안 함 변경 안 함
mixed 변경함 변경함 변경 안 함
hard 변경함 변경함 변경함
- default는 mixed
*HEAD 뒤의 숫자 및 ^ 갯수 만큼 이동한다.
*예
commit C1
commit B2
commit B1
commit A1
- git reset --hard HEAD~1
-> commit B2 로 이동
- git reset --hard HEAD~2
-> commit B1 으로 이동
# 2.코드를 수정한 후, 커밋을 한다.
git add .
git commit
*코드 수정 내용이 다르다면, 커밋 메세지도 같이 수정하도록 하자.
# 3.리모트저장소에 강제로 저장
git push origin +master
...작성중...
#참고
'기록 > Git' 카테고리의 다른 글
Git fork 후에도 원본의 최신 버전 유지하기 (0) | 2016.08.03 |
---|---|
Git 기본 에디터 설정하기 (0) | 2016.08.02 |
Git ignore 적용하기 untracked files -이미 등록된 파일 제거하기 (0) | 2016.07.27 |
GIT ignore 적용 (0) | 2016.03.21 |
Git stash 사용법 (0) | 2016.02.12 |