git , 깃 , 지트
- git
- 소스 버전 관리 시스템
-
SVN과 비슷하지만 파일 관리하는 것이 다르다고한다.
- 웹서비스
- https://github.com/
-
공개 무료
비공개 유료 - https://bitbucket.org/
-
비공개 무료
- https://about.gitlab.com/
-
비공개 무료
- 클라이언트 (GUI)
- https://www.sourcetreeapp.com/
- 소스트리. 비트버킷에서 제공
-
깃허브 데스크탑 보다 좀더 상세 설정 가능
- https://desktop.github.com/
- 깃허브 데스크탑. 깃허브에서 제공
-
단순
- https://tortoisegit.org/
- 거북이깃. 아주 상세 설정 가능.
-
비밀번호 저장이 힘든 문제점이 있음.
-
참고로 어느 클라이언트를 쓰던지 다른 곳의 깃리파지토리에 접근이 가능함(서비스 종속이 아님!)
- 메뉴얼 또는 설명
- git - 간편 안내서 : http://rogerdudler.github.io/git-guide/index.ko.html
- Pro Git (book)
- http://git-scm.com/book/ko/v1 (한글 번역)(100% 번역)
-
http://git-scm.com/book/ko/v2 (한글 번역)(6장까지 번역)
- http://backlogtool.com/git-guide/kr/
-
한글 , 이미지 등등 잘 되어있다.
- 특징
- GIT로 reomte를 받아오면 history까지 받아온다.
- commit 할 때 코멘트를 꼭 넣어야한다.(안 넣으니 commit 안됨)
-
현재 쓸만한 GUI툴이 잘 안보인다.
커맨드 창을 사용하는 편이 속 시원하다. - 툴
- tortoisegit : http://download.tortoisegit.org/tgit/
- https://msysgit.github.io/ 필수(설치시 컨텍스트 메뉴 확장은 할 필요 없다. tortoisegit 가 그 역활을 함)
- 주요 명령어
- 로컬관련
- git init // “.git” 폴더가 만들어진다. git를 사용할 최소 상태가 되었다.
- git add . //현재 폴더의 새로운,수정된 파일들은 Staging Area에 추가시킨다. (저장소에 저장된 상태는 아니다.)
- git commit //저장소로 반영한다.
- git status //현재 상태
- git reset //작업 내용을 초기화할 때(잘 모르겠다. 좀더 알아보고 쓰자.)
- git reset –soft HEAD^ //예제에 있던데 자세히는 모르겠다. Staging Area 내용이 되돌려진다.
-
git reset HEAD^ //자세히는 모르겠다. commit 한 내용이 되돌려진다.
- git tag //현재의 태그 목록
- git tag -l ‘xxx*’ //xxx로 시작하는 태그 목록
- git tag -a v1.4 -m “comment” //Annotated tag : 기본적 태그
-
git tag -a v1.2 9fceb02 // 체크섬 시작이 9fceb02 인 부분에 태그를 붙인다.
- 그외는 알아서 찾아서 써라… 디따 많네.
- git show v1.4 // v1.4의 태그내용을 보여준다.
-
git push origin v1.4 // 태그공유 , 태그는 자동으로 공유되지 않는다. 버전되신 –tags로 여러개의 태그를 전송할 수 있다.
- git branch //현재 브랜치 목록, 기본으로 master를 하나가 출력될것이다. (현재 브랜치는 *가 표시됨)
- git branch [브랜치이름] //브랜치를 추가
-
git checkout [브랜치이름] //해당 브랜치로 변경, 로컬 파일 내용도 변경됨.
- git merge [브랜치이름] //현재 브랜치에서 지정된 브랜치쪽의 파일을 merge한다.
-
충돌난다면 문서를 수정 후 git add, git commit 해줘야한다.
- Remote관련
- git clone https://github.com/schacon/ticgit //리모트 저장소를 로컬위치에 복제한다.
- origin이라는 별칭을 가지게된다.
-
SVN의 checkout과 비슷하다.
- git remote add pb https://github.com/paulboone/ticgit // pb라는 별칭으로 리모트 저장소를 추가한다.
- git remote -v //리모트 저장소 목럭
- git push {remote} {branch} //리모드 저장소에 반영한다.
- git push origin master
-
여러사람이 동시 PUSH할 때는, 다음 사람은 merge 후 PUSH해야한다.
- git checkout -b {local branch} {remote branch}
- git checkout -b product_list origin/product_list
-
리모트 브랜치를 로컬에 만들어준다.
- git checkout -t {remote branch}
- 리모트 브래치 이름을 기준으로 로컬에 브랜치를 만들어 준다.
-
-b 와의 차이점은 로컬 이름 수동 지정이냐? 자동 지정이냐? 차이
-
[pinspot@localhost public_html]$ git checkout -t origin/201606_coocha
Branch 201606_coocha set up to track remote branch 201606_coocha from origin.
Switched to a new branch ‘201606_coocha’ - 파일 복구 / commit 취소 (참고 http://ecogeo.tistory.com/276 )
- git reset
- git reset HEAD <file> : unstage 상태로 되돌림
-
gir reset – <file> : 상동
- git reset HEAD^ : 최종 커밋 취소. 워킹 트리의 파일 보존
-
파일은 수정된 내용이므로 add 해서 다시 커밋하면 됨.
- git reset HEAD~2 : 최신의 2개의 커밋을 취소. 워킹 트리의 파일 보존
- git reset –hard HEAD~2 : 최신의 2개의 커밋을 취소. 워킹 트리의 파일도 되돌림
- git reset –hard HEAD : 현재 워킹트리 파일을 최신 커밋 내용으로 변경함
- 옵션
- –soft : 워킹트리 보존 , index보존
-
즉, commit 전 add 상태가 됨.
- –mixed : 워킹트리 보존 , index 취소
- –hard : 워킹트리 취소 , index 취소
- HEAD : 최신 커밋 버전으로
- HEAD^ : 최신 커밋을 취소
- HEAD~1 : 1단계 취소.
-
HEAD~2 : 2단계 취소.
- git reset –hard origin/master
-
워킹 폴더가 너무 이상하게 바뀌였고, 소스를 버려도 된다면.
위 명령어로 마스터와 똑같이 맞춰버리도로고 할 수 있다. - git checkout (index와 commit에 영향없이)
- git checkout <branch> : 워킹트리를 해당 브랜치의 내용으로 변경
- git checkout master~2 <file> : 해당 브랜치 커밋 2단계 전에서 워킹트리 파일로 복구
- git checkout <file> : index -> 워킹 트리
- gir checkout – ‘<filepattern>’ : index -> 워킹 트리
- 사용 플로우
- 로컬에서
- git init
- 파일 추가 및 수정 및 삭제.
- git add .
-
git commit
- 리모트에 반영
- git push {remote} {branch}
- 리모트와 다른 내역에 대해서 전부 반영함.
git 속에 다른 git을 추가할 때
$ git submodule add https://github.com/mins01/ui_SelectArea.git SelectArea Cloning into ‘D:/work/mins01/html/WC2/etcmodule/SelectArea’… remote: Enumerating objects: 81, done. remote: Counting objects: 100% (81/81), done. remote: Compressing objects: 100% (49/49), done. remote: Total 81 (delta 46), reused 53 (delta 29), pack-reused 0 Unpacking objects: 100% (81/81), done. warning: LF will be replaced by CRLF in .gitmodules. The file will have its original line endings in your working directory.
서브모듈 갱신 $ git submodule update –recursive –remote이렇게 안하면 갱신을 안하는 경우가 많네….