git 명령어(Rename, Undo, Edit, Reset, Revert)

2785 단어 gitgit

Rename

존재하는 파일 이름을 변경

$ git mv {변경할 파일} {변경할 이름}
  • 주의: 명령 앞에 git을 붙이지 않으면 deleted, new file이 된다.
  • 파일의 history를 남기기 위해서는 삭제 후 생성이 아닌 이름 바꾸기로 추적한다.
  • 이름 변경 한 것을 다시 되돌리고 싶으면 원래 이름으로 다시 되돌려 놓으면 된다.

Undoing

복구 - 되돌리기

$ git restore {파일명} 
$ git restore . // 현재 위치 아래에 있는 모든 파일 복구
  • working directory에서 일어난 변경사항을 되돌리기
    • 참고) git work flow:
      working directory 작업 -> stage로 add -> add된 blob에 대해서 commit 메시지를 작성해서 commit 완료 -> local repository에서 push를 하여 remote repository로 넘기는 과정

Edit

방금 commit 메시지 수정하기(오타, 내용 첨부 등..)

$ git commit --amend	
  • --amend 플래그를 사용하면 직전의 커밋을 열려서 메시지 수정 가능
  • 특정 commit 수정 x, 되돌려야 함(rebase)

    • Rebase 방법은 비추천. 가능은 하지만 이전 커밋도 수정할 수 있다는 것을 알면 commit 메시지 작성할 때 대충할 가능성이 커짐(git은 문서화, history 가 중요하니, 할 때 긴장감 갖고 신경써서 입력하는 것이 좋다.)

Unstaging

Reset

git add 을 함으로써 스테이지에 올려진 것을 내리는 명령어

$ git reset HEAD {내릴 파일명}
  • HEAD: 현재 브랜치를 가리키는 포인터

  • git reset HEAD 는 최신의 commit 또는 branch를 지움

  • reset 할 때, --hard 옵션은 reset 명령을 위험하게 만드는 유일한 옵션이다. 매우 매우 중요하니 사용에 유의

  • reset 명령어는 협업 시 주의

  • Unstaging and Remove

    	 $ git rm -f {파일명}

협업 Best case: Revert

협업 시 Best case는 Reset(취소)이 아닌, Revert(되돌리기)다.

👍🏻 Best case: Revert

  • $ git revert 명령어를 사용한다면 특정 커밋을 되돌리는 작업도 하나의 커밋으로 간주하여 커밋 히스토리에 추가하는 것이므로, 모든 팀원에게 이 사항을 공유할 수 있음.

    	$ git revert --no-commit HEAD~3..
  • 되돌리고 싶은 커밋의 범위를 인수로 입력해주면 복수개의 커밋에 revert 한다.

  • commit을 따로 안할땐 --no-edit

  • merge commit을 되돌릴 땐 -m

    $ git revert -m {1 or 2} {merge commit id} ) // git show에서 보여지는 Merge: 번호)

👎🏻 Worst case: Reset

  • 다른 cloned repo에 존재하던 commit log로 인해 pull 받으면 파일이 다시 살아남
  • 과거 이력이 사라져 commit log tracking이 힘들어짐
  • 혼자 하는 프로젝트에는 괜찮음

Reference

[Git - Reset 명확히 알고 가기]
[원격 저장소에 올라간 커밋 되돌리기]

좋은 웹페이지 즐겨찾기