ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • commit / log / diff / reset
    git 2019. 12. 2. 16:11

    버전 만들기 (commit)

    버전: 의미있는 변화

    ** commit 전에 셋팅이 필요함

    1)  git config --global user.name 본인닉네임

    2)  git config --global user.email 본인이메일

     

    git commit 을 치면 vim이 실행되며 메세지(버전메세지/commit message)를 적을 수 있다

    commit message를 작성 후 vim을 종료

    f1.txt가 새로운 버전이 되었다

     

    git log : 버전의 정보를 알 수 있다

    누가, 언제, commit message를 확인할 수 있다

     

    f1.txt를 수정 후 git status를 치면

    f1.txt가 수정되었다고 표시해준다

    *** 버전관리를 하고있는 파일을 수정한 후 다시 commit을 할 때도 git add 후 git commit 해야한다

    commit 후 git log를 치면 commit log를 볼 수 있다

     

    =**과제 f2.txt를 만들고 commit 해보기**=

     

    git stage area

    cp : 파일 복사 (cp 복사 대상파일 복사되서 생상되는 파일)

    f1.txt 파일을 복사하여 f3.txt파일을 생성하였다

    f3.txt를 생성 후 commit 함.

    f1.txt와 f3.txt를 수 정 후 git status를 실행

    두개 파일이 수정되었음을 확인할 수 있다

    **commit 하기전에 왜 git add를 해야하는가?!

    하나 작업이 완성된 후 commit하는게 이상적이지만 시기를 놓치면 commit 하나에 여러작업이 포함될 수 있다.

    이 때 git은 git add를 통해서 commit하고자하는 파일만 commit할 수 있다

    즉 git add를 하면 그 파일은 commit 대기상태가 된다 

    ** commit 대기상태 = stage area라고 한다

    ** stage: commit 대기하는 파일들이 가는 곳 /  repository : commit된 결과가 저장되는 곳

     

    git add f1.txt 실행 후 

    두개 파일 다 수정되었다고 뜨지만 f1.txt는 commit 될 것이고 f3.txt는 commit 대상이 아니라고 뜬다

     

    이 상태에서 commit을 하면 f1.txt만 commit 대상에 포함된다

    f3.txt는 계속 수정되었다고 뜬다

     

    변경 사항 확인하기(log & diff)

    버전 관리의 효용 : 1) 버전의 차이점을 알 수 있다 2) 과거로 돌아갈 수 있다

     

    (1) git log -p

    가장 나중에 commit 된 ver 4와 그 전에 commit된 cp ver1 사이에 변한것이 어떤 부분인지 보여준다

    +++ b/f1.txt ::이 부분이 ver4에 해당하는 것이고

    --- a/f1.txt :: 이 부분이 cp ver1에 해당하는 것이다

     

    +f1.txt : 2 :: ver 4 때 f1.txt의 내용은 

    -source : 2  ::cp ver1 때 f1.txt의 내용

     

     

    commitID : git log 했을 때 commit 뒤에 붙어있는 것, commit message가 가르키는 버전의 고유한 주소

    (2) git log commitID하면 그 버전을 기준으로 이전 log만 보여준다

    (3) ver 4 commit과 HW ver1 commit 사이의 차이점을 보고싶을 땐 git diff를 사용한다 =>

    git diff commitID..commitID

    (4) git diff로 현재 내가 수정한 작업을 확인할 수 있다 

    f1.txt를 수정 후 git diff를 실행하면

    f1.txt의 내용이 수정 전에는 f1.txt : 2였는데 5로 수정된것을 확인할 수 있다.

    --> commit을 하기전에 수정한 내용에 문제가 없는지 review를 할 수 있다!!!

    f3.txt는 아직 commit을 안해서 계속 뜨는 것 같다

     

    f1.txt와 f3.txt모두 add 후 git diff를 실행하면 아무것도 안뜨는것을 확인할 수 있다

     

    과거로 돌아가기(reset)

    과거 버전으로 돌아가는 방법 1) reset 2) revert

     

    (1) reset

    ver 5와 ver 4에 해당하는 commit들을 삭제하고 cp ver1 commit을 최신상태로 하고싶을 때

    git reset commitID --hard 를 실행하면 (--hard는 하나의 옵션이고 이외에도 여러가지가 있다)

    ver 4 와 ver 5가 사라졌다

    => commit이 취소되며 cp ver1의 소스코드 상태로 돌아감

    두 파일의 내용도 이전버전으로 돌아간것을 확인할 수 있다

    ==> 하지만 사실 눈에만 안보이는것이지 ver 4 와 ver 5는 git에 남아있음.

    따라서 추후에 필요하다면 복구할 수 있다

    **!!나중에 협업을 하게되면 인터넷에 소스코드를 공유할 수 있다. 이 때 소스코드를 올린 후에는 절대 reset을 하면 안된다. 공유하기 전 아직 local에서 작업할 때만 reset을 해야한다

     

    (2) revert 

    commit을 취소하면서 새로운 버전을 만들 때

     

    git menual 확인하기

    git commit --help : commit에대한 도움말을 볼 수 있다

     

    -a --all

    Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected

    : 수정하거나 삭제한 파일을 자동으로 스테이지로 올린다

    파일을 바로 stage로 올리고 commit message작성이 실행된다 (vim 실행)

     

    -m <msg> --message=<msg>

    Use the given <msg> as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs. The -m option is mutually exclusive with -c, -C, and -F.

    : -m 뒤에 붙어있는 메세지를 commit massage로 사용하겠다

    파일을 바로 stage로 올리고 commit message도 바로 작성하겠다

     

    출처: 생활코딩

    'git' 카테고리의 다른 글

    merge/conflict  (0) 2019.12.05
    stash  (0) 2019.12.05
    branch  (0) 2019.12.02
    index / object  (0) 2019.12.02
    git init / add  (0) 2019.12.02

    댓글

Designed by Tistory.