git CLI 로간단하게조작하기! by 윤선지
CLI? 명령어인터페이스 Command Line interface 텍스트터미널을통해사용자와컴퓨터가상호작용하는방식
편한 GUI 프로그램대신사용하는이유? 1. GUI프로그램보다가볍다. CJO경우보안프로그램이설치되어있어소스트리 GUI 실행을버거워한다. 2. CLI를사용할수있으면 GUI를사용하는것은쉽지만그반대는힘들다. 3. 멋있어보인다. 찡긋 ~
CLI 프로그램을사용하면서불편한점 1. 로그확인시불편하다. 2. diff 확인시불편하다. 3. 체리픽, 머지시불편하다.
CLI 를더편하게사용하기 다양한포터블콘솔애뮬레이터프로그램 conemu, cmder 이있습니다. conemu를사용하면기본 cmd창에서제공하지않는기능 탭, 디자인세팅, 단어하이라이팅등.. 을설정할수있습니다. 참고페이지설치 http://conemu.github.io/ 에디터꾸미기 http://programmingsummaries.tistory.com/352 단축키세팅 http://commin.tistory.com/37
CLI 간단하게조작하기 1. git clone 2. git status 4. git add. 5. git commit 3. git pull 6. git push 7. git branch 8. git checkout 9. 작업하면서겪었던 conflict 사례와해결방법
참고이미지 아래이미지를참고하시면서 내용을확인하시면도움이됩니다 ~
1. git clone 리모트저장소복사하기 저장소복사시다음페이지의소스를순서대로 cli 에입력해주시면됩니다
git init (.git 이라는하위디렉토리를만든다.git 디렉토리에는저장소에필요한뼈대파일이들어있다.) git config --global user.name " 이름 " git config --global user.email " 이메일주소 " (--global 설정은한번만설정하면된다 ) git config --global pack.windowmemory "100m" git config --global pack.sizelimit "100m" git config --global pack.threads "1" (ex. 맥북프로 8 thread. 개인컴터사양에맞게설정을해주면됩니다.) git remote add origin http://git.cjmall.com/cjos-markup git remote add [ 단축이름 ] [url] git clone http://git.cjmall.com/cjos-markup
2. git status 현재위치한브랜치, 파일의상태를확인하기위해사용한다.
파일상태 1. Untracked files ( 신규추가된파일 ) 2. Changes to be committed ( 스테이징상태의수정된파일 ) 3. Changes not staged for commit ( 스테이징상태가아닌수정된파일 )
3. git add 새롭게생성한파일, 수정한파일, 삭제된파일스냅샷을커밋하기 위해스테이징상태로변경해주는작업
git add. ( 수정, 신규, 삭제된모든변경점스테이징하는작업 ) git add 파일경로 ( 원하는파일만스테이징하는작업 ) (ex. git add module/tvshop_program/md_171222_program.html)
스테이징파일을언스테이징 (unstage) 으로변경하기 git reset HEAD 파일경로 modified 파일을수정이전으로되돌리기 git checkout -- 파일경로 git checkout 파일경로
4. git commit 신규생성, 수정, 삭제한파일스냅샷을커밋하는작업
git commit -m " 커밋메시지 " git commit -a -m " 커밋메시지 " ("git add"+"git commit") git commit --amend ( 이전커밋수정하기!)
5. git pull 새로운정보가있으면모두내려받고 받은데이터를로컬저장소에업데이트한다.
fetch, pull 차이점 fetch : 중앙저장소의소스를로컬저장소로가져온다. 현재작업중인소스를변경하는 merge 작업을하지않는다. pull : 중앙저장소의소스를로컬저장소로가져온다. 현재작업중인소스를변경하는 merge 작업도한다. (pull = fetch + merge)
6. git push 개인환경에서작업한내용을리모트저장소에올리는작업
7. git branch 브랜치관련작업
git branch ( 브랜치목록으로보여준다 ) git branch issue1 (issue 1 브랜치생성 )
8. git checkout
git checkout branch (HEAD 가가르키는브랜치를바꿀때 ) git checkout -b issue1 ( 브랜치만들고 checkout 도한번에할때 )
checkout, reset 의차이점 reset ( 커밋초기화 ) reset --soft ( 옵션최근에한 commit 을이전으로돌린다. git commit --amend 명령하고기능이같다 ) reset --mixed ( 최근으로커밋돌리고, 스테이징상태비우기 ) reset --hard ( 수정하고있던파일을삭제한다. 위험한요소!!!!)
checkout head는움직이지않고 index의내용이해당커밋버전으로변경워킹디렉토리의파일도해당커밋버전으로변경된다. git reset --hard명령의동작이랑같다.
9. 경험했던 conflict 사례와해결방법
1. master 브랜치에서 develop 브랜치 pull 받는경우 2. 체리픽하는경우순서가꼬인경우 3. conflict 날때
1. master 브랜치에서 develop 브랜치 pull 받는경우 해결방법 : conflict 난저장소는삭제하고다시 clone 받는다. git clone 저장소 가장깔끔하고안전한방법인것같습니다.
2. 체리픽하는경우순서가꼬여서 conflict 나는경우 해결방법 : conflict 나는파일을열어서 conflict 수정후 커밋하여 push 합니다.
3. conflict 나면서내가수정하지않은파일도같이묶이는경우 해결방법 : 이전커밋으로돌아가는 "reset mixed" 명령어를사용합 니다. 개인작업환경에자신이수정한파일만존재하는지확인후다시스 테이징 git add 하고이후과정을진행합니다.
기타유용한팁 CLI 단축키사용 http://blog.jeonghwan.net/2016/08/16/git alias.html ex. pl = pull, ps = push cli 설정확인 git config list ( 처음세팅한옵션값, 에디터설정을확인할수있다 ) 확인하고싶은설정만확인하기 git config user.name 편집기설정 git config global core.editor 에디터 diff 도구
참고사이트 git 에대해서깊게공부하고싶으시다면!! https://git scm.com/book/ko/