1) 현재 directory를 Git Repository로 초기화
2) Git으로 version 관리를 하려면 repository를 초기화해야 한다.
3) 실제로 directory를 생성하고 repository를 초기화하면 된다.
$ git init
4) 초기화가 성공적으로 완료되면 git init 명령어를 실행한 directory에 .git 이라는 이름 의 directory가 만들어진다.
5) .git directory에는 현재 directory와 관련한 repository 관리 정보가 저장된다.
6) Git에는 이 directory 이하의 내용을 해당 repository와 관련된 ‘working tree’라고 부른다.
1) Git repository의 상태를 표시하는 명령이다.
2) Working tree 또는 repository에 대응되는 조작을 하면 상태가 차례대로 변경된다.
3) git status 명령어로 현재 상태를 확인하면서 git의 명령어를 하나 하나 입력하는 것이 기 본이다.
4) 현재 master라는 이름을 가진 branch에 있는 것이 표시된다.
5) 또한 출력 결과를 보면 commit이 아직 없다는 것도 표시된다.
6) 간단하게 README.md file을 작성해 보자.(touch : 내용이 비어있는 파일을 만들때 사용하는 명령어)
7) README.md file이 Untracked files에 표시되는 것을 확인할 수 있다.
8) Git의 입장에서 보면, 한번도 관리된 적이 없는 파일이라는 뜻.
9) 즉 Git의 Working tree 또는 repository에 명령이나 특별한 작업을 하면, git status 명령어의 출력이 변경되는 것이다.
10) 자주 사용되는 명령이기 때문에 꼭 기억해야 한다.
1) Working directory에 있는 file을 Stage Area로 추가하는 명령이다.
2) Git repository의 working tree file을 생성하는 것만으로는 Git repository의 version 관리에 등록되지 않는다.
3) 여전히 git status로 확인해 보면 위에 생성했던 README.md file은 ‘Untracked files’로 표시된다.
4) File을 Git repository에서 관리하도록 하려면 git add 명령어를 Stage Area(Index라 고 부르기도 한다)라고 불리는 장소에 등록해야 한다.
5) Stage Area이란 commit하기 전의 임시 영역이다.
6) git status로 확인해 보면, ‘Changes to be committed’에 README.md file이 포시되 는 것을 확인할 수 있다.
7) Staging Area에 옮겨진 file을 다시 Working Directory로 옮기는 명령어는 다음과 같 다.
<file name>
$ touch index.html
$ touch about.html
$ git status
$ git add index.html
$ git status
$ git rm --cached index.html
$ git status
$ git add . : 현재 위치에 있는 파일 등을 한꺼번에 Staging Area에 올리는 명령어
$ git rm -r --cached . : staging area에 올린 파일 모두를 다시 working directory에 내릴 때 사용하는 명령어
-r : recursive의 약자로 순회하다의 의미, 하위 디렉터리를 포함하여 모든 내용을 삭제
$ git status
$ git add -i : 유저와 숫자 또는 영문자의 첫글자로 대화를 주고 받으면서 명령을 실행한다.
What now> q
Bye.
$ git status
1) Staging Area에 있는 file을 Repository에 저장하는 명령어
2) Staging Area에 기록된 시점의 file들을 실제 repository이 변경 내역에 반영하는 것
3) 이러한 기록을 기반으로 file을 Working tree에 복원하는 것이 가능한 것이다.
4) $ git commit -m “Message”
5) $ git commit
#
기호는 comment 처리된다.6) $ git commit -a -m “Message”
“<html></html>”
> index.html1) Repository에 있는 commit 이력을 조회하는 명령어
2) 누가 언제 commit 또는 merge를 했는지, 어떤 변경이 발생했는지 등을 확인할 수 있다.
3) $ git log
4) $ git log --oneline
5) $ git log --oneline --decorate --graph --all
7) 이제까지의 commit 이력을 확인해 보자.
$ git log
8) 이번에는 commit message의 첫 번째 줄만 출력해보자.
$ git log --pretty=short
9) 아직 Branch를 학습하지는 않았지만, 모든 Branch의 commit 이력을 조회하는 명령도 해 보자.
$ git log --oneline --decorate --graph --all
10) 선택한 folder 또는 file의 log를 출력하는 방법
<file name>
11) File의 변경된 내용을 출력하는 방법
<file name>
12) 이렇게 git log 명령어는 과거의 commit 내용을 파악하고자 다양한 option을 제공한다.
13) 한 번에 모든 option을 기억하는 것을 어렵기 때문에 필요할 때마다 자주 사용하도록 한다.
1) Working Directory, Staging Area, Repository에 올린 내용은 어떻게 취소할 수 있는가?
2) git reset 설명
3) Option : 어디까지 되돌릴 수 있는가?
4) HEAD : 현재 작업 중인 branch/commit 중 가장 최근 commit을 가리킨다.
5) HEAD^ : 가장 최근 버전에서(HEAD)에서 ^(하나 되돌리자)
6) 실습을 위해 test.txt 파일을 만들고 “This is first commit”의 문자열을 저장한다.
7) 지금의 git 상태를 확인한다.
8) 현재 Working Directory에 있는 test.txt를 Staging Area에 올린다.
9) Repository에 Commit을 하고 log를 확인해 본다.
10) 상태도 확인해 본다. 잘 commit됐음을 확인할 수 있다.
11) test.txt 파일의 내용을 수정하고 add 한다.
12) 다음과 같이 commit도 수행하고 log로 확인한다.
13) 다시 test.txt를 다음과 같이 수정하고 add했다.
14) 이제까지 한 것을 정리하면, I’m here Staging Area 문자열을 갖고 있는 test.txt는 Staging Area에 있고, I’m here Repository 문자열이 저장되어 있는 test.txt는 Repository에 있다.
15) 마지막으로 다음과 같이 This is fourth commit 문자열을 test.txt에 수정했다.
16) 지금까지의 내용을 확인해보자.
17) 먼저 status를 보면, test.txt 파일이 수정되었고, 아직 Staging Area에 올리지 않은 내 용의 파일이 있으며, log를 보면, 2번의 commit이 있었음을 알 수 있다.
18) 다시말하면, I’m here Resository의 문자열을 갖고 있는 test.txt는 이미 commit되어 Repository에 위치하고 있고, I’m here Staging Area문자열을 갖고 있는 test.txt는 Staging Area에 있으며, I’m here Working Directory문자열을 갖고 있는 test.txt는 Working Area에 위치하고 있다.
19) 현재의 HEAD는 Repository commit을 한 곳에 맞춰져 있다.
20) 다음의 명령을 수행해 보자.
21) 현재의 HEAD가 First Commit을 가리키고 있다. 그리고 test.txt 파일의 내용을 확인해 보자.
22) 즉 모든 commit이 취소되고, add한 것도 취소된 것을 알 수 있다.
23) 현재 HEAD가 Repository commit한 것을 가리키고 있었기 때문에 Repository Commit을 취소한 것을 알 수 있다.
24) 연쇄적으로 Staging Area에 add한 것도 취소하고, 마지막으로 test.txt를 수정하고 아직 add하지 않은 내용도 취소한 것을 알 수 있다.
25) 시간을 되돌려서 reset 되기 전으로 이동해 보자.
26) 현재 상태를 확인해 보자.
27) 아직 Staging Area에 add하지 않은 파일(I’m here Working Directory)이 있고, Staging Area에 있는 파일(I’m here Staging Area)도 있다.
28) Mixed mode로 reset 해보자.
29) Log를 확인해보자.
30) 당연히 첫번째 Commit만 남겨져 있고, 두번째 Commit은 사라졌다. 상태를 확인해보자.
31) Staging Area에 있던 내용도 사라졌음을 확인할 수 있다. 그럼, 파일의 내용을 확인해보자.
32) 아직 마지막으로 수정한 파일의 내용은 변경되지 않았음을 알 수 있다. 즉, hard mode로 reset 하는 것과 mixed mode로 reset 하는 것의 차이가 여기에 있다. Mixed mode로 reset하는 것은 commit과 add는 취소하고 Working Directory에 있는 파일은 변경하지 않은 것이다.
33) 마지막으로 soft mode로 reset을 연습하기 위해 다시 reset 되지 전으로 되돌린다.
34) Soft reset을 해보자.
35) Log를 보면 commit이 취소된 것을 알 수 있다.
36) 상태를 확인해보면, Staging Area는 취소되지 않았다.
37) 파일의 내용도 확인해보면 변경되지 않았다.
38) 즉 Soft reset은 commit만 취소됨을 알 수 있다.
Git 기본적인 사용 방법