❗git에서 파일을 이동하고 싶을때는 mv
를 이용하면 되는데 여기서 주의해야한다!
위에 이미지들 처럼 git을 붙이지 않고 mv로 파일을 이동하면 파일이 삭제 됐다가 다시 생성되는걸로 나온다.
그러니 git을 붙여주자!
다음은 로컬에서 변화된 부분을 최소하는 방법이다.
git restore 변화된 파일
을 입력하면 된다.
예시)
기존에 helloworld.py파일 마지막에 #add를 추가해줬다.
이게 restore 해보자
추가해줬던 #add
가 사라졌다.
다음은 add
한걸 내리고 싶을 때 쓰는 방법이다.
❗리셋은 다른 repo에 그 파일이 남아있어서 pull을 받으면 다시 살아서 돌아온다.
그리고 중간에 history가 없어져서 tracking이 힘들어짐
즉 reset은 하지 않는다.
ex) 직전 3개의 commit을 삭제한 후, remote에 강제 push$ git reset --hard HEAD~3 $ git push -f origin <branch>
- 협업 시 다른 cloned repo에 존재하던 commit log로 인해 파일이 살아나거나, 과거 이력이 깜끔히 사라져 commit log tracking이 힘들어짐.
- solution: 잘못된 이력도 commit으로 박제하고 수정한 이력을 남기자!
ex) 현재 HEAD에서 직저의 3개의 commit을 순서대로 거슬러 오라가 해당 내역에 대해 commit, push 수행
$ git revert --no-commit HEAD~3.. $ git commit $ git push origin <branch>
- 잘못하기 전 과거로 돌아가 최신을 유지하면서 되돌렸다는 이력을 commit으로 남겨 모든 팀원이 이 사항을 고유하ㅗ 주지시킬 수 있음.
- commit을 따로 안할 땐
--no-edit
- merge commit을 되돌릴 땐
-m($git revert -m {1 or 2} {merge commit id}
예시)
3개의 파일을 각각 만들고 add
하고 push
까지 해줬다.
마지막 3개로부터 순차적으로 revert진행 (--no-commit은 커밋은 한번에 진행한다는 의미이다.)
아래와 같은 코드로 커밋을 수정한다.
git commit --amend
위와 같이 커밋 메시지를 작성했는데 수정이 하고 싶다면
git commit --amend
를 입력하고 커밋 메시지를 수정해준다.