Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[Git & Gerrit Home으로 돌아가기]

3. Training Set B

  • TrainB Working Directory 생성
  • Staging (Index에 올리기)
  • Commit
  • Push (Local Repository의 Commit 내용을 Remote Repository로 전송)
  • 새로운 작업 디렉토리 생성
  • 신규 파일 추가 및 Push
  • TrainB Working Directory에서 fetch 와 pull의 차이 확인

이번 Training Set B는 Staging, Commit, Push / Clone, Fetch, Pull 을 다시 한 번 복습해보는 과정입니다.

TrainB Working Directory 생성

  • Training Set A에서 생성한 가상 Remote Repository를 Clone 해서 Working Directory를 생성합니다.

$ git clone file://c:/opt/repository/test.git TrainB : 원격 저장소에서 프로젝트를 가져와서 TrainB 란 Working Directory를 생성합니다.
$ cd TrainB : Working Directory로 이동합니다.
$ git remote -v : 원격 저장소가 제대로 세팅되었는 지 확인합니다.

$ vi test1.txt : 파일 생성
$ git status : 생성된 파일이 Untracked 되고 있는 상태를 확인합니다.

Staging (Index에 올리기)

  • Tracking 할 의미있는 파일을 staging합니다.
  • Tracking 하지 않을 파일로 notrack 이란 파일을 만듭니다.
  • .gitignore 파일을 생성하여, notrack 을 써둡니다.
  • 전체 폴더 내용을 Staging하여 .gitignore 가 작동하는 것을 확인합니다.

$ touch notrack : notrack 이란 파일을 만듭니다.
$ git status : notrack이 untracked되고 있음을 확인합니다.
Untracked files:
(use "git add <file>..." to include in what will be committed)
notrack
test1.txt
nothing added to commit but untracked files present (use "git add" to track)
$ vi .gitignore : .gitignore 파일을 생성하고 notrack을 추가합니다.
$ cat .gitignore
notrack
$ git status
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
test1.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add * : 현재 폴더의 모든 파일을 스테이징합니다. 결과 notrack이 .gitignore에 있어서 스테이징 되지 않음을 확인합니다.

Commit

  • commit message는 필수 이므로 commit  -m "메시지명" 으로 Local Repository에 commit 을 추가합니다.

$ git commit -m "init"
$ git log : commit ID 가 생성되고, 현재 HEAD가 master를 가르키고 있음을 확인합니다.
$ gitk -a : 같이 배포되는 비주얼 툴인 gitk을 활용하여, 현재 커밋 상황을 확인합니다.

Push (Local Repository의 Commit 내용을 Remote Repository로 전송)

  • 현재 커밋 내용을 Remote Repository로 전송.
  • 여러 번의 커밋이 있으면 모두 전송
  • 몇 번의 커밋을 수행한 후, 다시 Remote Repository로 전송.

$ git push origin master
$ vi test1.txt : test1 변경 (2번째)
$ git commit -a -m "2nd" : 한 번 스테이징한 파일은 -a 옵션을 추가하여 한꺼번에 스테이징과 커밋 수행 가능
$ vi test1.txt : test1 변경 (3번째)
$ git commit -a -m "3rd"
$ vi test1.txt : test1 변경 (4번째)
$ git commit -a -m "4th"
$ vi test1.txt : test1 변경 (5번째)
$ git commit -a -m "5th"

$ git push origin master : 추가한 commit들을 원격 저장소로 전송

새로운 작업 디렉토리 생성

  • 다른 개발자라 가정하고, TrainB2 란 Working Directory 를 Clone명령을 활용하여 생성
  • TrainB2 폴더로 이동 git remote -v 로 원격 저장소 설정 확인

$ git clone file://c:/opt/repository/test.git TrainB2 : 원격 저장소에서 프로젝트를 가져와서 TrainB2 란 Working Directory를 생성합니다.
$ cd TrainB2 : Working Directory로 이동합니다.
$ git remote -v : 원격 저장소가 제대로 세팅되었는 지 확인합니다.
$ git log : 앞에서 생성한 5개의 commit이 모두 전송되었는 지 확인.

신규 파일 추가 및 Push

  • 신규로 test2.txt파일 생성하고, 차례로 staging, commit  , push 수행

$ vi test2.txt : 신규 파일 생성
$ git add * : 스테이징
$ git commit -m "another folder" : commit
$ git push origin master : (가상) 원격 저장소에 Push 수행
$ cd ../TrainB : 처음 만들었던 작업 폴더로 이동

TrainB Working Directory에서 fetch 와 pull의 차이 확인

  • fetch 와 pull 의 차이를 명확히 이해할 것

...