commit 영어 네이밍 https://blog.ull.im/engineering/2019/03/10/logs-on-git.html
깃 저장소 결합하기
[Git] 어떻게 Git 전문가가 되는가? (amend, rebase)
Git은 프로그래머 만을 위한 것은 아님
버전 관리 / 백업 / 콜라보
GIT2 - CLI 버전관리 - 1. 수업소개
CLI 는 한번에 여러 명령을 내릴 수 있음
git init !{dir}
working tree (수정 ,처음 만듬)/ staging Area / Repository
L) cat으로 내용보기
git status . 깃은 최초에 한번은 트랙킹 하라고 지시해야함
git log —stat / —all —graph —oneline
git log -p
git diff
git reset —hard (안 적으면 최신 커밋, 또는 커밋 ID적음, push하기전 까지의 커밋만)
git check out
git add . (루트 폴더)
git commit -am ” ” (트래킹되지 않은 파일은 안 됨) —amend 멧세지 수정
git tag {tag_name}
git revert 특정 커밋의 실행은 되돌림, 특정 커밋으로 가고 싶으면 순차적으로 revert해야함
diff / .gitignore / tag / backup
git3 - CLI branch & conflict 2. 실습준비
git branch > 목록보기
git branch {Name}
git checkout {branch}
base merge → merge commit
중심이 될 브랜치에 체크아웃 , 합칠 부품 브랜치를 merge
같은 파일 , 다른 부분 → 그냥 합쳐짐 base를 기준으로 잡는 3 way merge
git mergetool p4Merge
checkout은 Head를 변경 / commit 자체를 가리키면 defached
reset은 브랜치가 가리키는 commit을 바꿈
Git hosting
HTTP SSH git remote add {name} URL
git remote → 리스트 -v URL 까지
git push —set-upstream {name} {master}
= git push -u
git clone URL !Dir
SSH 자동 로그인 / Issue (투두리스트) /
pull을 하지 않고 수정하면 push 전에 반드시 pull을 하고 coflict를 수정 해줘야함
pull을 하면 최신 커밋으로 가고, fetch를 하면 업데이트는 되지만 head이동은 없음 pull을 다시 해주던가, merge시킨다.
.git/FETCH_HEAD에 원격 저장소의 HEAD 저장됨 git fetch: git merge FETCH_HEAD
git format-patch {commit id } git am -3 -i *.patch (3way방식) (상호작용으로 패치마다 물어봐줌) (알아서 순서대로 적용해줌)
pull request compare → fork의 오리지널 저장소와 비교 code review - Gerrit
GIT4 - Reset & Revert 1. 수업소개
checkout 헤드의 커밋 ID를 바꿈, 커밋 ID 또는 브랜치 이름을 지정, 커밋은 살아있음 (log —all)
reset 브랜치의 커밋 ID를 바꿈 , 커밋 데이터는 남아있음.
브랜치 없이 커밋을 가리키면 detached head 상태가됨
git reflog 로 하면 내렸던 명령 로그
git reset —hard {Branch, default = head} 아무것도 안 적으면 현재 최근 커밋으로 초기화 옵션 기본은 mixied
git4 - cherry-pick & rebase : 2. cherry-pick의 개념과 기본사용법
특정 커밋을 커밋할때의 변화만을 가져옴
git cherry-pick {commit ID}
충돌이 나면 3way 방법으로 수정 후
git cherry-pick —continue 로 진행
rebase할려는 브랜치로 체크아웃 후 (m2) 체크아웃중인 브랜치는 사라짐
git rebase {branch_name} , rebase할려는 브랜치의 커밋 하나 마다 Apply 개별 실행됨
git rebase —continue
m 브랜치(push 미실행 브랜치)가 원격 저장소로 push 되고 나서는 rebase 하면 안됨
merge와 rebase의 결과 물은 같음
git log를 깔끔하게 해주는 효과
git —show-current-patch 충돌 사항 보기
git log -p

master → 언제나 실행 가능한 버전 release branch에서 master로 merge할때는 git merge —no-ff release/0.N 으로 의도적으로 커밋도 나겨야함 그 이후 git brance -d relase/0.N 으로 브랜치 삭제 , but 커밋으로 존재했던 것을 남김 그리고 git tag 0.N해줌
브랜치는 삭제해도 commit은 남음
git flow 앱을 사용하면 좀 더 쉽게 할 수 있음
