git , 깃 , 지트

3 minute read


  • 주요 명령어
  • 로컬관련
  • 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 -> 워킹 트리

  1. 사용 플로우
  2. 로컬에서
  3. git init
  4. 파일 추가 및 수정 및 삭제.
  5. git add .
  6. git commit

  7. 리모트에 반영
  8. git push {remote} {branch}
  9. 리모트와 다른 내역에 대해서 전부 반영함.

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이렇게 안하면 갱신을 안하는 경우가 많네….


🔗original-link

Updated: