# Install git
설치 후 최초 실행 시, home 디렉토리는 '내 문서'
C:\users\(사용자ID)
# git Bash
리눅스의 bash shell을 사용하듯이 사용하면 된다.
- mkdir : 디렉토리 생성
- cd (dir name) : 해당 이름을 가진 디렉토리로 이동
- ls : 해당 디렉토리 내의 목록
# git init
git 저장소를 만드는 과정으로, .git 이라는 폴더가 생성되고, 그 안에 뼈대 파일이 생성된다. 이 때, .git 폴더는 숨김상태로 생성된다. .git폴더 내에는 hooks, info, objects, refs 라는 폴더와 함께 config, description, HEAD 파일이 생성된다. git init을 수행한 후, (master) 상태가 되었다.
# git status
현재 git의 상태를 확인하는 명령어. git init을 한 후 명령어를 실행하니 다음과 같이 출력되었다.
- On branch master :
- No commits yet :
- Untracked files :
# default Setting
name, email 등록하는 과정.
기본 설정을 하면 .gitconfig라는 파일이 생성된다. 아래 화면은 생성된 .gitconfig 파일을 확인하는 과정이다. (.gitconfig 파일은 home 디렉토리에 생성된다.)
.gitconfig 파일이 홈 디렉토리에 생성된 것을 확인했다. vi 편집기를 이용하여 해당 파일을 열어보면 name, email이 setting 된 것을 확인할 수 있다.
vi 편집기에서 편집을 하려면 [i], [a] 키를 이용하여 편집이 가능하다. vi 편집기를 통해 추가로 설정해야 할 내용은 [core]의 editor, [merge]의 tool, [color]의 status, branch, interactive, diff가 있다.
* 참고 링크 : http://nalam.tistory.com/entry/Git-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%B4%88%EA%B8%B0%EC%84%A4%EC%A0%95
* 참고 링크 : https://blog.naver.com/codeflow_dev/60199030339
# 홈 디렉토리 변경
홈 디렉토리를 변경하는 방법에는 여러가지가 있다.
그 중 가장 간단한 방법은 속성에서 시작위치를 수정해주는 것이다. Git Bash를 열고, 대상(T): 의 제일 뒷부분인 '--cd-to-home'를 지우고 아래의 시작 위치(S): 칸에 원하는 경로를 쓰면 된다.
그 외에도 Bash 창에서 명령어를 통해 바꾸는 법, $HOME 환경변수 변경하는 법 등이 있다. 나중에 찾아서 추가하도록 하겠다. (쉬운게 좋은거지.)
# 버전 관리
$ git commit
vim 편집기가 실행된다. git status로 나오는 정보가 주석으로 입력된다. 버전 메세지, 일명 커밋 메세지는 왜 파일이 변경되었는지에 대한 이유를 적는 것으로 바뀐 내용에 대해서 설명해 주는 것을 권장한다.
$ git log
누가 작성했는지, 언제 작성했는지에 대한 정보를 보여준다. 수정하고 나서 status 명령어를 실행하면 수정된 파일에 modified 표시를 해준다. 이 때 수정을 하고 나서 바로 commit하는 것이 아니라 add를 실행한 후에 commit 해주어야 한다. 최초 추적, 수정 후 버전 생성 전에 add 한 다음 commit해서 commit message를 쓰고 저장해주면 된다.
*
수정 후 commit 전 add 하는 이유 : 선택적으로 파일을 버전에 포함시키기 위해서. 수정하고 add를 하지 않으면 commit 할 때 저장되지 않는다. 여러 파일 중에서 commit 할 것만 선택적으로 add 하면 된다. add 하지 않은것은 modified 상태로 남아있다. 이것이 바로 선택적 버전관리! 즉, add 하면 commit 대기 상태가 되는 것이다. 이때 stage area로 간다고 생각하면 된다.
*
git의 두 가지 영역 개념 : stage - repository
- stage : commit 될 후보들이 대기하는 곳.
- repository : commit 된 파일들이 저장되는 곳.
$ cp (file A) (file B)
A의 내용을 복사한 B 생성, 카피
# 변경사항 확인하기
$ git log -p
버전간의 차이점 출력할 때.
-source : 수정되기 전 내용
+f1.txt : 수정된 내용
--- : 이전 버전
+++ : 신규 버전
$ git diff '버전 ID' ..'버전ID2'
: 버전 간의 차이점을 비교할 때
commit ID : 버전의 고유 주소. (노란글씨로 된 부분)
$ git diff (commitID)..(commitID)
* 주의 : commit ID 사이에 '..' 필요
$ git diff
뒤에 버전 ID 없이 diff만 쓰면 add하기 전과 후의 파일 내용 비교가 가능하다. commit 하기 전 마지막으로 review 할 수 있는 기회를 제공하는 것(?)이다. 즉, 코드의 차이를 통해서 실수한 부분을 확인할 수 있도록 제공하는 기능이다. 몇 시간은 기억날 수 있지만, 몇 일동안 작업한 경우에는 실수해도 기억이 안날 수 있으니까 유용한 기능이라고 할 수 있다.
# 이전 버전으로 돌아가기
commit을 취소하는 것. 함부로 사용하지는 말 것. 상당히 난이도 있음. reset / revert 두 가지 방법이 있음.
*
reset : reset 해도 실제로 사라지는 것은 아니다. 사라진 것처럼 보이는 것 뿐. 복구시키려면 git의 원리를 알아야한다. 원격 레파지토리를 이용ㅎ면 협업이 가능한데, 협업을 하는 경우에는 절대 reset 금지. -> 왜? 이미 push 한 경우에는 내 로컬 git만 reset되고, 원격 레파지토리는 안되기때문에. reset에는 여러가지 옵션이 있다. --hard를 일단 쓰고, 위험하다는 것만 알아두기. 기타 옵션에 대해서는 세부적으로 공부할 필요가 있음.
*
revert : 취소하면서 새로운 버전을 생성하는 것. (뭔 개솔) 나중에 다시 공부.
# github에 업로드하기
$ git remote add origin (원격 저장소 주소)
$ git push origin master
댓글
댓글 쓰기