ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 지옥에서 온 GIT:: 버전관리의 본질
    Study/Git 2018. 8. 11. 16:54

    :: GIT 들어가기


    -GIT : 버전관리 시스템의 분류에 속하는 구체적인 프로그램으로 파일을 여러개의 버전으로 보관하는 행위

    예) 레포트.xls, 레포트_최종.xls, 레포트_진짜_최종.xls


    -버전 관리 시스템: 여러가지 역할과 의미를 가지며, 위의 예와 같이 파일의 이름을 더럽히지 않을 수 있는 버전 관리를 할 수 있다. + 소스코드를 백업해서 만약의 사태에 대비하고 이전상태로 쉽게 되돌아감, 여러 사람들과 함께 협업 시스템


    -버전 관리 시스템에는 cvs, svn, git 등이 있다.


    -본질적인 요소는 변경사항을 관리하는 것

    -혁신적인 요소는 이전 프로그램들의 아성을 뛰어넘는 차이점에 대해서


    -GIT은 믿어지지 않을 만큼 어렵고 복잡하다..

     (기능이 덮어지고 보태지는 과정에서.. 깃을 처음 사용하는 사람들의 고충이 될 수 있다. //Dropbox처럼 쉬운 툴로 일단 소스코드를 백업하고 변경사항을 기록하는 습관를 지니자.)


    -GIT을 사용하는 이유는 ?-?

     : 현실은 깃보다 훨씬 더 지옥같다.

      코드의 복잡성 = () 이고,

      깃을 배우는 것의 어려움 = (((((((())))))) 이라면,

      =>(((((((((((((((((((((()))))))))))))))))))))))

      깃을 공부하는 것이 오히려 방해가 될 수 있다.


    -그러나 복잡한 형태의 코드일 경우 깃은 상황을 더 나아지게 도와줄 수 있다. //적절하게 지혜를 사용해서 공부하자!!!


    :: 설치 및 실습방법


    -공식 홈페이지

    https://git-scm.com/


    -윈도우를 unix/linux의 명령어를 통해서 제어할 수 있도록 하는 프로그램이 git에 내장되어있다.


    -git 시작하기

    : Git Bash 실행


    :: 저장소 만들기


    -프로젝트 파일 만들기

    mkdir gitfth

    -프로젝트 디렉토리로 들어가기

    cd gitfth

    -버전관리를 하려는 프로젝트를 깃에 알려주기

    : 프로젝트를 진행할 폴더로 이동한 다음 명령어 입력

    git init

    *git :  사용할 수 있는 명령어를 알려준다

    *init : 현재 위치의 디렉토리에서 작업을 진행하겠다 라고 알려주는 명령어





    -.git에 깃의 저장소 초기화

    : .git에는 생성된 버전정보가 저장된다 //중요한 디렉토리


    :: git이 관리할 대상으로 파일 등록


    -지금까지 한 것 : 우리가 프로젝트 폴더를 버전관리 하겠다!라고 git에게 알려줌


    -간단한 파일로 버전관리하기

    : f1.txt라는 파일을 만들고 숫자 '1' 쓰기


    -vim이라는 프로그램으로 파일을 생성(편집)하겠다.

    vim f1.txt

    :아무것도 입력되지 않는 상태가 된다.

    *i를  누르면 insert 상태(입력모드)가 된다.

    *esc : 입력 ㄴㄴ, 명령어를 입력하는 모드로 넘어간다.

    *:wq 저장하고 나가기


    -파일 내용 확인하는 명령어

    cat f1.txt


    -파일의 버전관리를 위해 익혀야할 명령어 status, 저장소의 상태를 확인한다.

    git status




    -untracked files (추적 되고있지 않다.)

    : f1.txt라는 파일이 gitfth라는 디렉터리에 있지만 명령어는 무시한다. 



    -add 명령어를 통해서 git에게 파일을 추적할 수 있도록 명확하게 지시해야한다.

    git add f1.txt


    why? 프로젝트의 핵심이 되는 파일이 아닌 임시로 필요한 파일은 버전관리를 해서는 안되기 때문에 관리를 해야하는 파일을 git에 명확하게 알려줘야한다 => 따라서 git은 정확하다.




    :: 버전 만들기(commit)


    -버전의 의미 : 단위가 있는 의미있는 변화, 작업의 완결된 상태


    -자신이 만든 버전임을 알리기위해 이름 작성

    git config --global user.name "자신의 닉네임"
    git config --global user.email "자신의 이메일"


    -버전 메시지 : 이 변화가 어떤 변화를 담고 있는지 파일이 변경된 이유를 나타낸다.


    git commit  // vim 실행
    git log // 버전 정보를 보여준다.



    (실습)

    -f1.txt를 vim으로 수정한 뒤 git status 명령을 실행하면 빨간색으로 modified: f1.txt라는 메시지로 바뀐다.

    =>git add f1.txt : 파일을 최초로 추적할 때 + 수정된 파일의 버전을 만들 때 사용하는 명령어


    :: Stage area 너무 중요행 !


    -파일 2개를 동시에 수정하기

    git add f1.txt f2.txt


    -왜 git이 add라는 과정을 포함하고 있는가?

    : commit은 하나의 작업을 가지고 있는 것이 가장 이상적이다. commit의 시기를 놓쳤을 때 commit하고 싶은 작업만 commit 할 수 있다. =>선택적으로 파일을 commit할 수 있다.


    *add: commit 대기상태로 만들고, commit : commit 대기 상태에 있는 파일만을 commit 한다


    -stage area : commit 대기상태의 파일이 있는 곳

    -stage repository : commit이 된 결과가된 파일이 가는 곳, 저장소


    :: 변경사항 확인하기


    -버전을 만들었을 때의 효용:차이점 확인, 과거로 돌아갈 수 있다.

    -git log 옵션 : git log가 동작하는 방법을 바꿀 수 있다.

    -로그에서 출력되는 버전 간의 차이점을 출력하는 git log 옵션

    git log -p

    *--- : 버전 3의 내용

    *+++ : 버전 4의 내용

    *+&&&& : 그 버전의 내용



    -commit에는 각자 고유한 값(주소)가 있다.

    - 해당 주소 이전의 log만 확인할 수 있다.

    git log "commitID"


    -버전 간의 차이점을 비교할 때

    git diff "commitID".."commitID"

    -log상에서 ---는 앞에 언급한 commit +++은 뒤에 언급한 commit


    :: 과거의 버전으로 돌아가기


    -버전관리에서의 또 다른 효용, 과거로 돌아가기

    -5와4에 해당되는 commit 삭제하고 hi로 돌아가기 

    git reset "commitID" --hard






    -실제로는 git에서 어떠한 정보도 삭제하지 않는다. 실제로는 남아있기 때문에 복구할 수 있다.

    -원격저장소를 통해 협업을 할 때 자신의 버전을 다른 곳에 공유를 할 수 있다.

    **공유한 commit은 reset해서는 안된다.**


    git revert "버전ID": 커밋을 취소하면서 새로운 버전을 생성

    git revert "commitID"


    :: 명령의 빈도와 메뉴얼 보는 방법


    -어떻게 정보를 찾아서 스스로 문제를 해결할 수 있는가?

    -파일을 수정할 때 마다 add하고 editor로 commit하는 것 => 귀찮은 일

     : 이런 경우에는 매뉴얼을 찾아서 해결한다.

    git commit --help


    -수정하거나 삭제한 파일을 자동으로 add하는 명령어 : 파일을 수정한 후에 사용한다.

    git commit -a


    -에디터를 띄우지 않고 메시지를 바로 작성하는 방법

    git commit -am "11"



    -메뉴얼을 보는 연습해서 익숙해질 필요가 있다.



    'Study > Git' 카테고리의 다른 글

    [Git] .gitignore 작성하기  (0) 2020.09.14
      (0) 2019.01.21

    댓글

Designed by Tistory.