(4)-4.GIT - 1.+개념잡기+실습
1. 개념잡기 실습
- 가장 먼저 할 것 - 내가 누구냐? 를 git에게 알려 주는 것
- 혹시나 해서 - linux cmd & 초간단 vi
- 가지고 놀기 1 - git init , 파일 생성, add(스테이징), Commit , 여러번 커밋, 스테이징 취소
- 가지고 놀기 2 - git의 가장 중요한 특징 → 무한 롤백이 가능하다는 점입니다.
- 가지고 놀기 3 - COMMIT 수정
가장 먼저 할 것 - 내가 누구냐? 를 git에게 알려 주는 것
$ git config --global user.name "<사용자명>"
$ git config --global user.email "<메일 주소>"
잘 만들었는 지 확인
$ git config --list
헷갈려서 user만 보고 싶다면
$ git config --list | grep user
혹시나 해서 - linux cmd & 초간단 vi
- 혹시나 이런 명령어 불편하신 분은 여기 (리눅스 명령어 정리) 가서 조금 놀고 오세요.
- 혹시 vi 불편하신 분은 이 것만 아시면 됩니다.
- 명령어모드와 편집 모드가 있다.
- 편집 → 명령어 모드 : esc
- 명령어 → 편집 모드 : o (이것 외에도 많지만... 나중에 찾아보시고, o)
- 저장하고 나가기 : 명령어 모드에서 wq (write & quit)
- 오늘 당장 익숙해지지 않는 분은 파일 생성은 touch (원하는 파일명) 으로 만들고 수정은 탐색기로 가서 노트 패드로 하시는 것을 추천드립니다.
- 혹시 오늘 편집기를 메모장(notepad)로 하고 싶다면 otesto
- git config --global core.editor notepad
- notepad <파일명> 편집 후 저장
가지고 놀기 1 - git init , 파일 생성, add(스테이징), Commit , 여러번 커밋, 스테이징 취소
$ git init
$ vi test.txt
$ git add test.txt : 스테이징 해봐요
$ git commit -m "commit 1" : 여러 번 커밋해볼 것 (15번 정도)
$ git log : 커밋된 로그를 커밋 ID보면서 확인해요.
$ gitk : gitlog 내용을 그림으로 보고, 둘이 일치 하는 지 계속 확인해 봐요.
-------------------------------------------------------------------
1. Local Repository 만들기
작업하실 디렉토리를 정하세요. 익숙하지 않으시면
절대경로를 추천드립니다.
$ cd c:
$ mkdir workdir
$ cd workdir
$ git init
2. 로컬에 파일 추가
$ vi(notepad) test.txt (파일 생성)
$ git status
$ git add test.txt
$ git status
$ git commit (메시지 입력)
또는 git commit -m "메시지"
또는 git commit -a -m "메시지" (git add와 commit을 한꺼번에)
$ git status
$ git log
가지고 놀기 2 - git의 가장 중요한 특징 → 무한 롤백이 가능하다는 점입니다.
$git checkout HEAD~1
이렇게 하면 working directory와 staging area를 모두 1단계 전 커밋으로 돌려줍니다.
그럼 10단계 전 commit은
$git checkout HEAD~10
이외,
$git checkout "commit-id"(5~7자리 정도만 쓰시면 됩니다.)
$git reset (--soft / --mixed / --hard) commit-id
- 각 단계는 git log를 보면서 해보셔요. 전형적인 C적인 접근이죠.
- *git checkout은 가고자 하는 HEAD가 가르키는 커밋으로 별도의 브랜치를 만들어 이동시킵니다.
- 바로 HEAD를 이동시키고 싶을 땐 git reset (--soft / --mixed / --hard) 커밋아이디 로 가능합니다. reset은 HEAD를 바로 이동시키고, checkout은 별도의 브랜치를 만들어 이동한다는 점이 다릅니다
- 이를 확인하기 위해 git branch 명령으로 확인할 수 있습니다. 브랜치의 이름은 < HEAD detached from (commit-id) > 입니다.
- 중간에서 다시 히스토리 관리가 필요할 때, 중간 커밋으로 이동하여 거기서 다시 브랜치를 만들어서 개발을 진행하면 됩니다.
$git add * - 스테이징
$git log
- 언스테이징은 git status의 "Changes to be committed :" 뒤에 나옴,
(git checkout 또는 git reset HEAD)- server에서 fetch 해온 것이 있을 때. 여길 보는 명령은 git fetch <URL>
다시 돌아오는 방법은
$git checkout master : master branch 로 돌아옴, 다른 브랜치 명을 적으면 해당 브랜치로 복귀
놀아봅시다. 이래서 git을 쓴데요.
local repository 가지고 놀기
15번 정도 commit하고 이렇게 저렇게 가지고 놀아보셔요.
1.txt 2.txt ~~~ 15.txt 파일 등을 만들어서 제대로 롤백이 되는 지 해보세요.
gitk로 해당 커밋으로 잘 돌아가는 지 gitlog와 비교해서 보세요.가지고 놀기 3 - COMMIT 수정
히스토리 단장하기 (from pro git)
$git commit --amend : 커밋 메시지를 수정
- server에서 fetch 해온 것이 있을 때. 여길 보는 명령은 git fetch <URL>
- 정확한 뜻은 커밋 아이디를 새로 만들지 않고, 현재 스테이징 된 내요을 다시 커밋한다는 내용입니다.
- 잘못 올렸을 경우, 현재 커밋의 내용을 변경시켜 다시 커밋할 수 있습니다. (Commit id는 변경됨, 기존 최종 Commit은 폐기)
현재 커밋된 내용을 추가하거나 수정하거나 삭제할 수도 있음
$git add <filename> / $git rm <filename> 수행하고
$git commit --amend 로 커밋하게 되면 commit id는 바뀌자만, 기존 커밋을 대신 하게 됩니다.