GIT/[do it] 깃허브 입문 (완)

[ Do it ] 깃&깃허브 입문 _02. 깃으로 버전 관리하기

web_seul 2021. 3. 24. 12:57
반응형

 02-1. 깃 저장소 만들기 

 

깃 초기화하기 - git init

1. hello-git 디렉터리 만들기

$ mkdir hello-git
$ cd hello-git

2. hello-git 내부 살펴보기

$ ls-la

3. 깃을 사용할수 있도록 디렉터리 초기화 : Initialized empty Git repository..

$ git init

4. 내부 살펴보기 : .git 생성(버전이 저장될 저장소)

$ ls-la

 

+

보여지지않는 디렉터리 .git

window : [보기] + 숨긴항목

mac : [Shift] + [Command] + [ . ]

 

 02-2. 깃 저장소 만들기 

 

깃에서 버전이란

문서를 수정, 저장할 때 마다 생기는 것

 

스테이지와 커밋 이해하기

작업트리 (working tree) : 파일 수정, 저장 등의 작업을 하는 디렉터리 (hello-git)

스테이지 (stage) : 버전으로 만들 파일이 대기하는 곳

저장소 (repository) : 스테이지에 대기하던 파일들을 버전으로 만들어 저장하는 곳

 

작업 트리에서 빔으로 문서 수정하기

1. 터미널 창에서 hello-git디렉터리로 이동

$ git status

2. git의 상태메시지

- On branch master : 현재 master브랜치에 있음

- No commits yet : 아직 commit한 파일이 없음

- nothing to commit : 현재 commit할 파일이 없음

3. hello.txt파일 생성

$ vim hello.txt

4.  [ I ] or [ A ] :입력모드

      파일 내용 입력

    [Esc] : ex모드로 돌아가기

    :wq +[ENTER] : 수정한 문서 저장, 편집기 종료

5. 터미널에서 확인하기 

$ la -la

6. 깃 상태확인 : hello.txt라는 untracked files(한번도 버전 관리를 하지않은 파일) 확인

$ git status

 

수정한 파일을 스테이징하기 - git add

스테이징 : 깃에게 버전 만들 준비를 하라고 알려주는 것

1. git add

$ git add hello.txt

2. 깃 상태 확인

git status

3. untracked files -> changes to be committed

  new file: hello.txt   '새파일 hello.txt를 커밋할 것이다'

 

+

스테이지에 올릴 때 경고 메시지가 나타나는 이유

윈도우와 리눅스의 줄바꿈 문자가 달라서

'warining: LF will be replaced by CRLF in hello.txt'

메시지의 뜻만 이해하기

 

스테이지에 올라온 파일 커밋하기 - git commit

1. git commit _ -m : 커밋과 함께 저장할 메시지

$ git commit -m "message1"

2. file changed, 1 insertion 파일내용 추가 확인

3. 현재 깃 상태

$ git status

4. nothing to commit / working tree clean

5. 버전 확인

$ git log

6. 커밋한 버전에 대한 설명 _ 사람, 시간, 메시지

 

스테이징과 커밋 한번에 처리하기 - git commit -am

한번이라도 커밋한 파일을 다시 커밋할 때만 사용가능

1. 빔에서 hello.txt파일 열기

$ vim hello.txt

2. [ I ] : 입력모드로 변경

   파일 수정

   [Esc] : 문서 저장

   :wq : 편집기 종료

3. 스테이징과 커밋 한번에 처리(이전 수정, 커밋 내역이 있어야함)

$ git commit -am "message2"

4. 버전 정보 확인

$ git log

5. 정보확인

 

 02-3. 커밋 내용 확인하기 

 

커밋기록 자세히 살펴보기 - git log

commit hash (git hash) : commit 옆 영문과 숫자로 된 긴 문자열, git을 구별하는 아이디

  (HEAD -> master) : 가장 최신버전 표시

Author : 작성자

Date : 작성일자

작성시 메시지

 

변경사항 확인하기 - git diff

작업트리에 있는 파일과 스테이지의 파일을 비교, 스테이지의 파일과 저장소 최신 커밋을 비교하여 검토

1. 현재 저장소

2. txt 파일 수정하기 _ [ I ] or [ A ], [Esc], :wq, [ENTER]

$ vim hello.txt

3. hello.txt 파일 수정상태, 스테이징x

$ git status

4. 파일 비교하기

$ git diff

5. -abc : abc가 삭제되었다 /  +abc : abc가 추가되었다

수정내용 버리기 : git checkout

 

 02-4. 버전 만드는 단계마다 파일 상태 알아보기 

 

tracked파일과 untracked파일

1. hello.txt 파일 수정

vim hello.txt

2. 새로운 파일 생성

vim hello2.txt

3. hello2.txt 파일 수정

4. hello.txt와 hello2.txt 상태 확인

$ git status

5.  hello.txt : tracked 파일 _ modified:수정됨, 파일의 수정여부 계속 추적

    hello2.txt : untracked 파일 _ 한번도 버전관리를 하지 않은 파일

6. 스테이지에 올리기

$ git add hello.txt
$ git add hello2.txt

7.  hello.txt : tracked 파일

    hello2.txt : tracked 파일

8. 커밋하기 ( Q. 둘중 하나만 커밋하려면??)

$ git commit -m "message3"
$ git log

9. message3 메시지 확인 가능

10. 커밋에 관련된 파일 함께 보기

$ git log --stat

11. 가장 최근부터 순서대로 보여짐

[ENTER] : 다음 로그화면

[Q] : 로그화면 나와서 깃 명령 입력 가능

+

.gitignore파일로 버전 관리에서 제외하기

버전관리를 하지않을 디렉터리 이름, 파일 확장자 입력

주로 개인 메모파일, 자동생성 swp파일, 백업 파일 등

 

unmodified, modified, staged 상태

1. 현재 디렉터리 상태

$ ls -la

2. 깃, 파일의 상태

$ git status

3. working tree clean = modified = 수정되지않은 상태

4. hello2.txt 파일 수정

$ vim hello2.txt

5. Changes not stage for commit = modified = 수정만 된 상태

6. Changes to be committed = staged = 커밋 직전 단계

7. 커밋 후 다시 unmodified 상태

 

+

방금 커밋한 메시지 수정하기

$ git commit --amend

기존 메시지가 나타남

[ I ] : 수정

 

 02-5. 작업 되돌리기 

 

작업트리에서 수정한 파일 되돌리기 - git checkout

1. 소스 수정

2. use "git checkout --<file>.. "to discard changes in working directory

3. git checkout

$ git checkout --hello.txt

4. 수정 전 내용 확인가능

 

스테이징 되돌리기 - git reset HEAD 파일 이름

1. 소스 수정

$ vim hello2.txt

2. 스테이지 올리기

$ git add hello2.txt
$ git status

3. use "git reset HEAD <file>.." to unstage

4. git reset

$ git reset HEAD hello2.txt

5. unstaged changes after reset

6. Changes not staged for commit 상태

 

최신 커밋 되돌리기 - git reset HEAD^

1. hello2.txt 수정

$ vim hello2.txt

2. 스테이징, 커밋 실행

$ git commit -am "message4"

3.  커밋 상태 확인

$ git log

4. 최신 커밋 되돌리기

$ git reset HEAD^

5. unstaged changes after reset:

6. git log로  커밋 취소 확인

 

+

git reset 명령의 옵션 살펴보기

--soft HEAD^  : 최근 커밋 전 상태로 작업트리를 되돌림

--mixed HEAD^  : 최근 커밋, 스테이징 전 상태로 작업트리를 되돌림, 옵션이 없을 경우 기본 실행

--hard HEAD^  : 최근 커밋, 스테이징, 파일 수정 전 상태로 작업트리를 되돌림, 복구 불가

 

특정 커밋으로 되돌리기 - git reset 커밋 해시

1. rev.txt 생성

$ vim rev.txt

2. 메시지와 함께 커밋

$ git add rev.txt
$ git commit -m "R1"

3. rev.txt 수정, 재 커밋

$ vim rev.txt
$ git commit -a -m "R2"

4. rev.txt 수정, 재 커밋

$ vim rev.txt
$ git commit -a -m "R3"

5. rev.txt 수정, 재 커밋

$ vim rev.txt
$ git commit -a -m "R4"

6. R2 커밋의 커밋해지 복사

7. 붙여넣기

$ git reset --hard 복사한 커밋해시

8. R2가 가장 최신 커밋이 됨

9. 메시지와 내용 모두 수정됨

 

커밋 삭제하지않고 되돌리기 - git revert

취소한 커밋 남겨두기

1. rev.txt 수정

$ vim rev.txt

2.  R5 메시지와 커밋

$ git commit -am "R5"

3. git log로 버전확인

4. revert할 R5커밋 해시 복사

5. 붙여넣기

$ git revert 복사한 R5 커밋해시

6. 추가 내용 저장

7. git log로 확인하기

8. 변경된 R5 확인

9. 문서 반영 확인

$ cat rev.txt

10. 변경된 rev.txt 확인

 

test)

git config u______ : 깃 환경에서 이름을 'easys'로 지정

git config u______ : 깃 환경에서 메일을 'doit@easys.co.kr'로 지정

git i______ : 현재 위치에 지역 저장소 생성

git s______ : 깃 상태 확인

git a______ : ch01.txt 파일을 스테이지에 올림

git co_____ : 'ch01' 커밋 메시지를 붙여 커밋

git co_____ : 메시지 'ch02'를 붙여 스테이징, 커밋 동시에

git l______ : 커밋 정보 확인

git d______ : 최근 버전과 작업 폴더의 수정파일의 차이를 보여줌

git ch_____ : 지정한 커밋해시로 이동

git r______ : 가장 최근 커밋 취소

git r______ : 지정한 커밋해시로 이동, 이후 커밋 취소

git re_____ : 지정한 커밋해시의 변경이력 취소

반응형