2019.08.14 Git 튜토리얼 보며 따라하기 - commit, reset, remote에 이미 push 한 것 없애기
Commit
1) amend
git commit --amend : 이 전의 commit을 수정한다. commit을 바꾸고 싶을 때 (빼먹은 파일이 있거나 등) 빼먹은 작업을 하고 (git add file) git commit --amend < 를 하면 새로 커밋을 하는게 아니라 이 전에 올린 커밋을 수정할 수 있다.
2) reset (unstage)
stage 하지 않을 파일을 잘못하고 stage할 경우 이를 다시 unstage하는 것이 reset 명령어다.
예를 들어 readme.md를 add해서는 안되는데 add할 경우, 이를 git reset readme.md < 를 통해 unstaged할 수 있다.
주의할 것은 여기에 hard 옵션이 추가된다면, checkout을 한 것과 마찬가지의 효과가 되어버리므로 (마지막 커밋의 상태로) --hard 옵션은 유의해서 사용해야 한다.
여기서 –hard 옵션을 사용하지 않으면 변경내역이 있는 파일들은 working directory에 modified 상태로 유지 Soft : 워킹 디렉토리와 index는 그대로 두고 브랜치만 전으로 되돌린다.(파일들은 그대로 남아있다는 뜻) Mixed : 워킹 디렉토리는 그대로 두지만 인덱스를 포함해서 브랜치까지 전으로 되돌린다.(git commit과 git add명령까지 되돌린다는 뜻) Hard : 실제 데이터까지 지워버릴 수 있어 위험하지만 워킹 디렉토리까지 이전으로 되돌릴 수 있다.(복구는 불가능하지만 되돌리고 다음 commit이 남아있다면 reflog로 복원 가능) 출처 : https://dydtjr1128.github.io/git/2019/07/28/Git-Reset.html git hard reset을 하니 파일이 없어져서 당황했었는데, 완전히 파일들을 날릴 게 아니면 soft와 mixed를 적절히 활용해야한다. add된 상태로 되돌리고 싶으면 soft, file add까지 뺀 상태로 되돌리고 싶으면 mixed. hard는 갑자기 삘받아서 엄청 휘갈겨썼는데 파일들을 지우고 싶거나 할 때 쓰면 될듯. git reset --option(soft, hard, mixed) COMMIT ID
3) Remote에 Push한 것 없애기
remote에 올라간 commit 중 되돌리고 싶은 commit hash를 확인. (git log --oneline)
1) git push -f [REMOTE_NAME] [COMMIT_HASH_TO_GO_BACK]:[BRANCH_NAME] 을 하면 remote의 커밋이 COMMIT_HASH_TO_GO_BACK으로 되돌아간다.
2) 하지만 로컬은 그대로인 상태.
3) 로컬에서 변경내용을 유지한채 이전 커밋으로 돌아가고 싶다면
git reset --soft [로컬의 COMMIT_HASH_TO_GO_BACK]
그게 아니라 그냥 변경한 내용 다 없애겠다 싶으면
git reset --hard [로컬의 COMMIT_HASH_TO_GO_BACK]
1) amend
git commit --amend : 이 전의 commit을 수정한다. commit을 바꾸고 싶을 때 (빼먹은 파일이 있거나 등) 빼먹은 작업을 하고 (git add file) git commit --amend < 를 하면 새로 커밋을 하는게 아니라 이 전에 올린 커밋을 수정할 수 있다.
2) reset (unstage)
stage 하지 않을 파일을 잘못하고 stage할 경우 이를 다시 unstage하는 것이 reset 명령어다.
예를 들어 readme.md를 add해서는 안되는데 add할 경우, 이를 git reset readme.md < 를 통해 unstaged할 수 있다.
주의할 것은 여기에 hard 옵션이 추가된다면, checkout을 한 것과 마찬가지의 효과가 되어버리므로 (마지막 커밋의 상태로) --hard 옵션은 유의해서 사용해야 한다.
여기서 –hard 옵션을 사용하지 않으면 변경내역이 있는 파일들은 working directory에 modified 상태로 유지 Soft : 워킹 디렉토리와 index는 그대로 두고 브랜치만 전으로 되돌린다.(파일들은 그대로 남아있다는 뜻) Mixed : 워킹 디렉토리는 그대로 두지만 인덱스를 포함해서 브랜치까지 전으로 되돌린다.(git commit과 git add명령까지 되돌린다는 뜻) Hard : 실제 데이터까지 지워버릴 수 있어 위험하지만 워킹 디렉토리까지 이전으로 되돌릴 수 있다.(복구는 불가능하지만 되돌리고 다음 commit이 남아있다면 reflog로 복원 가능) 출처 : https://dydtjr1128.github.io/git/2019/07/28/Git-Reset.html git hard reset을 하니 파일이 없어져서 당황했었는데, 완전히 파일들을 날릴 게 아니면 soft와 mixed를 적절히 활용해야한다. add된 상태로 되돌리고 싶으면 soft, file add까지 뺀 상태로 되돌리고 싶으면 mixed. hard는 갑자기 삘받아서 엄청 휘갈겨썼는데 파일들을 지우고 싶거나 할 때 쓰면 될듯. git reset --option(soft, hard, mixed) COMMIT ID
3) Remote에 Push한 것 없애기
remote에 올라간 commit 중 되돌리고 싶은 commit hash를 확인. (git log --oneline)
1) git push -f [REMOTE_NAME] [COMMIT_HASH_TO_GO_BACK]:[BRANCH_NAME] 을 하면 remote의 커밋이 COMMIT_HASH_TO_GO_BACK으로 되돌아간다.
2) 하지만 로컬은 그대로인 상태.
3) 로컬에서 변경내용을 유지한채 이전 커밋으로 돌아가고 싶다면
git reset --soft [로컬의 COMMIT_HASH_TO_GO_BACK]
그게 아니라 그냥 변경한 내용 다 없애겠다 싶으면
git reset --hard [로컬의 COMMIT_HASH_TO_GO_BACK]
댓글
댓글 쓰기