티스토리 뷰

파일을 추가 및 삭제한 것이나 파일의 내용을 수정 한 것Git에 반영하려면

먼저 변경된 사항(파일)을 스테이지(add 명령)에 먼저 올린다음에 commit을 수행해야 한다.

 

먼저 기존의 main 브랜치에서 새로운 브랜치로 작업하기 위해 subBranch만들고 현재 작업 브랜치를 subBranch로 하겠다.

git branch subBranch

git switch subBranch

 

임의로 Music파일을 만들고 해당파일을 add명령 사용해서 스테이지에 올린다. 

//Music파일을 스테이지에 올린다
git add Music

//현재 디렉토리의 변경된 모든파일을 스테이지에 올린다
git add .

 

git status 명령을 해보면

On branch subBranch
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   Music

위 처럼 나오는데 

현재 Branch가 subBranch고

새로 생성된 Music이라는 파일이 commit준비가 된 상태 (stage에 올라간 상태)라고 표시하고 있다.

 

Music이라는 파일이 stage에 올라 갔다. 이제 commit 명령을 하면 Music이라는 파일이 생성된 시점을 저장하는 버전이 만들어진다.

git commit -m "내용없는 Music파일 추가" 

-m 옵션은 메세지 적는 것이고 오른쪽에 문자열로 남길것을 적으면된다.

 

 

이런식으로 다음과 같이 4개 변경사항을 각각 스테이지(add명령)에 올리고 commit하였다.

Music파일 생성 add후 commit  -  Music파일 내용추가 add후 commit  - 

Singer파일 생성 add후 commit  -  Singer파일 내용 추가 add후 commit

 

 

지금까지 명령행에 Command Line Interface방식으로 명령어를 쳤는데

GUI프로그램인 소스트리에서 commit한 내용을 보면

Source Tree 화면

다음과 같이 commit시점을 저장한 상태의 버전들을 볼 수 있다.

 

 

add와 commit을 하다가 어떤 이유(수정된 시점이 필요 없어진다거나 할때)로 이전 상태의 시점으로 돌아가야 할때 revert와 reset을 사용한다.

  

revert명령은

1. 필요가 없어진 시점의 commit하기전의 상태를 가져와서 새로운 버전상태를 추가한다.

2. 기존 commit버전은 남아있다.

 

Music파일은 필요한데 파일의 내용이 필요없어졌다.

다른 commit버전들은 필요하다.

라고 가정할때 아래 처럼 revert를 사용하면

git revert c306444151b99337fba5d95a7030fe7

Music파일의 내용은 삭제된 상태로 새로운 버전을 생성한다.

revert사용 후 다음과 같이 SourceTree프로그램을 보면 새로운 버전이 생성된 것을 볼 수 있다.

revert명령 후 source tree 화면

git revert 오른쪽의 코드는 해당 commit버전의 고유한 값이다.

CLI에서 git log명령으로 볼 수 있고, GUI소스트리 에서는 해당 commit을 선택하면 커밋 : ca4s0-------과 같이 보인다.

 

 

이제 이 상황에서 또 다음과 같이 가정했을때

1. Singer파일의 존재가 아예 필요 없어졌다.

2. Music파일의 내용은 필요하다.

라고 한다면 "Music파일에 내용추가 했음." 메세지가 있는 commit버전에 

reset명령을 사용하면 된다.

git reset --hard c306444151b99337fba5d95a7

reset 뒤에 대쉬 사용하는 옵션3가지가 있다.

 --soft : commit만 취소, 파일은 그대로
 --mixed : (기본값) commit과 add 취소, 파일은 그대로
 --hard : commit도, 파일 변경 add도 완전히 되돌림 (파일 내용도 덮어씀!)

 

Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday