Git으로 버전을 관리하기 위해 필수적 사용하는 명령어가 git add
와 git commit
이다.
이들은 각각 무엇인지, 그리고 왜 두 단계로 나누어져있는지를 알아보겠다.
첫 번째 단계는 파일을 Git의 스테이징 영역에 추가하는 것이다. 이 작업은 git add 명령어로 수행된다. 스테이징 영역에 추가된 파일은 이후 버전 생성에 포함될 파일들로 선택된다.
두 번째 단계는 스테이징 영역에 추가된 파일들을 하나의 버전으로 묶어 Git의 데이터베이스에 저장하는 것이다. 이 작업은 git commit 명령어로 수행된다. 커밋 메시지와 함께 커밋을 생성하면, 해당 커밋은 고유한 해시 값으로 식별된다. 이후에는 이 커밋을 기반으로 원하는 시점으로 되돌아갈 수 있다.
이럴 식으로 작성한 파일을 스테이징 하고 기록하는 것을 "버전생성"
이라고 한다.
이러한 두 단계로 나뉘어져 있는 이유는 Git의 유연성과 안정성 때문
이다. git add
명령어는 개발자가 어떤 파일들을 포함시킬지 선택할 수 있게 해주고
, 스테이징 영역을 거쳐 커밋을 생성하면 개발자가 정확히 어떤 변경 사항을 포함시켰는지 알 수 있다
. 이렇게 나뉘어져 있는 단계는 실수를 방지
하고, 효과적인 협업을 가능
하게 한다.
git restore 파일명 // 최근 commit 된 상태로 현재 파일의 수정내역을 되돌림
git restore --source 커밋아이디 파일명 // 특정 커밋하이디 시점으로 복구
git restore--staged 파일명 // 스테이징 취소
git revert 커밋아이디 // 그 커밋 아이디만 취소한 커밋을 하나 생성해줌 (파일 여러개 가능)
git reset —hard 커밋아이디 // 과거로 모든 걸 되돌리기 (협업시에 크면 큰일남)
git reset —soft 커밋아이디 // 변경사항을 다 삭제해버리진 않고, 커밋아이디 이후 변경사항은
//staging area에 남김. 그 다음 커밋하거나 할 수 있음
git reset mixed // 변경사항이 스테이징 되지 않은 상태로 나와있음 그다음 에드랑 커밋 할수 있음.
merge commit도 취소 가능하다.
git reset —hard 커밋아이디 - 과거로 오든 걸 되돌리기
협업시에 쓰면 위험하므로 잘 사용하지 않는다.
프로젝트 망하거나, 짧은 거리 되돌아갈 때는 유용할 수 있다.
soft쓰면 변경사항을 싸그리 삭제해버리진 않고 이거 이후의 변경사항은 스테이징 에어이러에 남김 그래서 그다음 커밋 다시하거나 할 수 있다.
참고문헌 : 코딩애플