이틀 날에는 github 사용법하고 실습을 진행했다.
Git. 히스토리 관리
- 소스코드관리툴
- CUI
- SVN 과 유사
보통 add -> commit -> push 로 구성
차례로 add는 커밋할 목록에 추가하는 거고, commit는 커밋을 만드는거구(커밋은 히스토리의 한단위.), push는 해당 사항을 밀어 넣는 거다.
명령어 관련
-- 로 시작하면 보통 long name 옵션, -로 시작하면 short name
- config --global ...--unset
-> 계정 관련 얽힐 수가 있어서 계정 정보를 삭제시킴. 깃은 캐싱해서 자동으로 계정에 접속됨
$git init : 특정 폴더로 부터 프로젝트를 시작하겠다를 지정. git 작업을 하겠다.
$git status : 현재 상태. 맨날맨날맨날 쳐야한다. 실제 실습때 맨날 쳤다. 내가 지금 어떤 상태이고 뭘 했는지 다 알려주기 때문이다.
$git shortlog : 짧게 로그 출력. 내가 몇개의 커밋을 날렸는지 알 수 있다.
$git diff 변한 부분 -sm 하면 서명 할 수있다. 시그니쳐!!
$git reset 커밋 목록 올린 것 취소
push하면 깃헙에 등록이됨
$git ammend 로 로그 내용 수정 가능
add 취소 -> git reset
commit 취소 -> git reset HEAD ~1: 가장 최근 commt 삭제
; 로 명령어 연결 가능
$git remote add upstream(그냥 이름명임. 내가 접근할 톨더의 URL 주소 명명)
- pull-request: commit를 브랜치 단위로 제출, 내가 만든 커밋을 제출하고 싶을 때
fork를 해서 clone을 받으면 내 로컬 저장소에 만들 수 있음. 이후 내 꺼에 커밋 추가후 다시 pull request버튼 누르면 제출 됨
-> 내가 만든 커밋을 다른 사람에게 제출함.
- git rebase : merge는 말 그대로 브런치 합치는 거고 rebase는 base를 갱신하는 것이므로 서로 비교 X
-> 내가 처음 개발시 받았던 base, 근데 다른 사람도 base 받아서 수정하면서 서로 달라서 혼란이 생기는데 이때 base를 갱신하고 나서 commit(내것)을 위에 얹는 것. 이후 continue로 풀어헤침
- base. origin(내 커밋) upstream(다른 사람).
- rebase -i 는 되감기의 의미 rewind!! 감고싶은 만큼 감고 최신 커밋 수정
- git rebase abolt(조인 것 풀기) :
목표: 2 번째 커밋 내용을 바꾸고 파!(근데 ammend는 rebase해서 pick을 edit로 수정하면 최상위 밖에 못고쳐 ㅠㅠ)
그래서 rebase로 되감기하는 거임. 그 부분까지 commit 한걸로 돌아가서 ammend로 최상위 commit을 고치고 다시 continue해서
돌아가면 완료!!