-
지옥에서 온 GIT:: 버전관리의 본질Study/Git 2018. 8. 11. 16:54
:: GIT 들어가기
-GIT : 버전관리 시스템의 분류에 속하는 구체적인 프로그램으로 파일을 여러개의 버전으로 보관하는 행위
예) 레포트.xls, 레포트_최종.xls, 레포트_진짜_최종.xls
-버전 관리 시스템: 여러가지 역할과 의미를 가지며, 위의 예와 같이 파일의 이름을 더럽히지 않을 수 있는 버전 관리를 할 수 있다. + 소스코드를 백업해서 만약의 사태에 대비하고 이전상태로 쉽게 되돌아감, 여러 사람들과 함께 협업 시스템
-버전 관리 시스템에는 cvs, svn, git 등이 있다.
-본질적인 요소는 변경사항을 관리하는 것
-혁신적인 요소는 이전 프로그램들의 아성을 뛰어넘는 차이점에 대해서
-GIT은 믿어지지 않을 만큼 어렵고 복잡하다..
(기능이 덮어지고 보태지는 과정에서.. 깃을 처음 사용하는 사람들의 고충이 될 수 있다. //Dropbox처럼 쉬운 툴로 일단 소스코드를 백업하고 변경사항을 기록하는 습관를 지니자.)
-GIT을 사용하는 이유는 ?-?
: 현실은 깃보다 훨씬 더 지옥같다.
코드의 복잡성 = () 이고,
깃을 배우는 것의 어려움 = (((((((())))))) 이라면,
=>(((((((((((((((((((((()))))))))))))))))))))))
깃을 공부하는 것이 오히려 방해가 될 수 있다.
-그러나 복잡한 형태의 코드일 경우 깃은 상황을 더 나아지게 도와줄 수 있다. //적절하게 지혜를 사용해서 공부하자!!!
:: 설치 및 실습방법
-공식 홈페이지
-윈도우를 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