Git 12

Git 사용법 메모

참고 : http://rogerdudler.github.io/git-guide/index.ko.html 새 저장소 만들기 1. 폴더 생성 2. 폴더 내에서 아래 명령 실행 git init 저장소 받아오기 (clone) git clone 경로 ※ 작업의 흐름 Working directory : 실제 파일들 Index : Staging area (준비 영역) HEAD : 최종 확정본 (commit한 것들) Staging area에 추가 git add 파일명 모두 추가 git add * git add --all Commit (HEAD에 반영) git commit -m "커밋 메시지" Push (발행, 원격 저장소에 올리기) git push origin master git push origin 브랜치명 ※ 작업..

tag

태그 커밋을 참조하기 쉽도록 별명 붙이는 것 가장 최근 커밋에 태그 붙이기git tag [태그명] 특정 커밋에 태그 붙이기1) git log -숫자 ----> 이전 커밋들을 최신것부터 숫자만큼 보여줌2) 태그를 붙일 커밋의 SHA-1 체크섬 값 앞 4자리 확인3) git tag [태그명] [체크섬 4자리] 태그가 붙여졌는지 확인git log --decorate -1 현재 저장소의 태그 리스트 조회git tag -lorgit tag 태그 정보, 커밋 정보 확인git show 태그 검색ex) git tag -l 'v1.8.5*' 태그에 한 줄 메시지 추가git tag -a [태그명] -m '메시지' 태그 삭제git tage -d [태그명] ※ 태그는 따로 원격저장소에 push 해줘야 한다.git push o..

카테고리 없음 2017.07.20

stashing (임시저장)

stashing 커밋하긴 좀 그렇고 잠깐 저장해놓고 싶을 때 사용워킹 디렉토리에서 수정 파일들만 저장 (modified 이면서 tracked 상태인 파일 & staging area에 있는 파일들) git stashor git stash save 저장한 stash 목록 확인git stash list stash 불러오기git stash apply stash 선택해서 불러오기git stash apply [stash 이름] stash 하기 전으로 복귀git stash apply --index 사용한 stash 삭제git stash drop [stash 이름]

카테고리 없음 2017.07.20

status vs diff

git status 단순히 파일이 변경됐다는 사실을 알려줌 git diff 어떤 내용이 변경되었는지 알려줌즉, 어떤 라인을 추가했고 삭제했는지 궁금할 때 사용 자세히..Working directory에 있는 것(수정했지만 아직 unstaged 상태)과 staging area에 있는 것을 비교.즉, 수정한 파일을 모두 staging area에 넣었다면 git diff 명령은 아무것도 출력하지 않음! 커밋하려고 staging are에 넣은 파일의 변경 부분을 보고 싶다면?git diff –staged ( = git diff –cached )저장소에 커밋한 것과 staging area에 있는 것을 비교함 뭉쳐 잇는 공백을 하나로 취급해서 비교git diff -b

카테고리 없음 2017.07.20

rebase (또다른 병합)

rebase merge와 최종 결과는 똑같은데, 커밋 히스토리가 깔끔하게 남게 하는 기법. (push 하기 전에 사용해야함) 사용 예)1) git checkout experiment2) git rebase master // master의 수정사항을 c4에 붙여 c4'를 만들어낸다.3) rebase 충돌 해결 (mergetool, ours...)-> git add-> git rebase --continue // 충돌 상태 해결 후, 계속 작업을 진행할 수 있게 함git checkout master // 다시 master로 돌아온다.git merge experiment // c3과 c4'의 최종병합을 실시한다. 그 외 옵션 강제 병합git rebase --skip 리베이스 명령 실행 취소git rebase ..

카테고리 없음 2017.07.20

파일 삭제(rm, mv), 수정 취소(checkout)

파일 삭제 Tracked 상태의 파일( = Staging area에 있는 파일 ) 삭제1) git rm [파일명] 2) commit-> 실제 파일도 삭제 됨※ 그냥 삭제하면 unstaged 상태가 됨 이미 파일을 수정했거나, 수정하고 Staging area에 추가한 파일 삭제git rm -f [파일명] Staging area에서만 제거 (add만 취소)git rm --cached [파일명] 여러 파일, 디렉토리 한번에 삭제디렉토리: git rm [디렉토리명]/\*.log파일: git rm \*~ 파일 이름 변경git mv [변경전 이름] [변경할 이름] 수정한 파일 되돌리기 (수정 취소)git checkout --[파일명]hard랑 비슷. 워킹 디렉토리에서 변경된 내용을 되돌린다.※ 역시 쓰는데 주의 필..

카테고리 없음 2017.07.20

commit 합치기, commit 취소(reset)

커밋 합치기 커밋했는데 뭐 빼먹었을 때.. 사소한건데 다시 커밋해야 하는 경우-> 여러 커밋 합쳐주기 git commit --amend 커밋 취소 (reset) 특정 커밋을 사용하지 않게 되어 다시 되돌릴 때 이전 커밋을 남기지 않고 새로운 커밋을 남김.명령으로 되돌린 다음, 필요한 부분만 수정작업을 하고 다시 커밋 커밋 취소 옵션^, ~ : 표시한 수 만큼 커밋을 되돌림 (하나면 최종커밋 내역)ex) git reset --soft HEAD~~-> 전 전 커밋으로 되돌림 커밋 취소 모드hard: 모두 되돌림 (파일의 수정된 내용까지 되돌리거나 삭제. 사용시 주의)mixed(default): commit + add 도 취소(staged -> unstaged)soft: commit 만 취소ex) git re..

카테고리 없음 2017.07.20

merge 관련, merge 취소(checkout)

merge 브랜치 병합git merge [브랜치 이름] 원격 브랜치 병합 (fetch 후)ex)git fetch origin master -> FETCH_HEAD 브랜치 생성됨git merge FETCH_HEAD 충돌 해결 (mergetool 사용)git mergetool 공백 무시git merge -Xignore-space-change [브랜치 이름]-Xignore-space-change: 뭉쳐있는 공백을 하나로 취급-Xignore-all-space: 모든 공백 무시 merge 의 3가지 상황 1. Fast-ForwardA - A+B수정 후 코드가 전의 코드를 모두 포함하여 그냥 병합하면 되는 경우 2. 3-way MergeA - A+B - A+C서로 다른 갈래로 나뉘어진 경우 (그러나 서로 충돌하는 ..

카테고리 없음 2017.07.20