일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 자바스크립트
- 티스토리챌린지
- 앱개발부트캠프
- 내일배움캠프
- 코드잇강의추천
- DB드림리더장학생
- 코딩공부
- 르탄즈5기
- 코드잇TIL
- 르탄즈
- 혼공단
- 코드잇
- 오블완
- DB마이저널
- 알고리즘
- 독서활동
- DB김준기문화재단
- js
- GIT
- 스파르타코딩클럽
- 환경교육봉사
- 혼공컴운
- 내일배움캠프사전캠프
- 리액트네이티브
- 앱개발강의
- c++헤더
- 코드잇앰배서더
- 오늘도코드잇
- ReactNative
- 혼공단JS
- Today
- Total
axnuo
[Git/코드잇] Git 전반적인 이해 - 오늘도 코드잇 : 1주차 본문
이 글은 코드잇의 Git 강의를 수강하며 정리한 내용입니다.
코드잇 도전 30일 캠프에 참여하며 매주 공부기록을 진행하려 한다.
첫 주에는 Git 강의 총 85개의 레슨을 들었다!
강의를 통해 막무가내로 썼던 git 명령어들을 명확하게 파악할 수 있었고 작업 영역, 브랜치, HEAD의 역할 등에 대해 자세히 알 수 있었다. 강의를 들으며 정리한 내용을 기록한다!!
repository와 commit
- git init : repository 생성
- git config user.name “이름” ⇒ 커밋에 이름 같이 저장
- git config user.email “asds@asd.com” ⇒ 얘도 마찬가지
- git add (파일명)
- git commit -m “Create commit zz”
- commit은 사용자 이름 + 이메일 주소 + 커밋메세지 설정
git의 3가지 작업 영역
- working directory : 작업 디렉토리
- staging area : add한 파일들이 존재하는 영역
- repository : 변경 이력들이 저장되어 있는 영역
모든 파일을 넣으려면…
- git status : 상태 확인
- git add . : 모든 걸 추가하겠다
staging에서 취소하려면
- git reset
마크다운(README) 작성 방법
커밋 히스토리
- git log
⇒ 깔끔하게 볼려면 git log -- pretty=oneline
- git show (커밋 아이디 중 4자리만 해도 됨)
- ⇒ 해당 커밋에서 바뀐 점을 구분할 수 있음
- git commit
- 커밋 메세지 입력 가능
- 커밋 자체를 수정하는 방법
- git commit --amend
- 가장 최근 커밋을 수정하는 명령어이다
커밋 주의사항 + 옵션
- 커밋 제목과 내용 사이에는 한 줄을 비울 것
- git log --pretty=oneline을 git history라는 별명으로 aliasing
- git config alias.history ‘log --pretty=oneline’
커밋 사이의 차이 확인
- git diff (이전 커밋 ID) (이후 커밋 ID)
HEAD의 의미
가장 최근에 한 커밋을 의미
이전 커밋으로 git reset
- git reset --hard
- HEAD가 가리키는 커밋에 따라 working directory 내부가 달라진다.
- git reset → HEAD가 과거의 커밋을 가리키게 할 수 있음
- 특정 커밋 이후부터 맘에 안드는 게 있으면 예전 커밋부터 다시 나아가게 할 수 있음
git reset의 3가지 옵션
작업을 가져오려면은 git pull 하면 되겠져?
HEAD^는 HEAD가 가리키고 있는 이전의 커밋을 나타냄
바로 이전 말고 더 예전 걸 불러오고싶다면 HEAD~2 이런 식으로 사용하면 된다
- git tag (태그이름) 으로 태그 설정도 가능
브랜치
master = 기본 브랜치
- git branch (브랜치명)
- 브랜치 생성
- git checkout (브랜치명)
- 브랜치 이동
- git branch
- 브랜치 확인
- git branch -d test
- -d option : 삭제
- 브랜치를 만들면서 이동
- git checkout -b test
다른 브랜치에 저장되어있는 걸 그대로 가져오고 싶을 때
⇒ branch merge
- git merge master
- 현재 있는 브랜치에 master 브랜치를 합치고 싶다
merge conflict
⇒ 충돌 발생
⇒ 그냥 파일 열어서 코드 수정하고 커밋해주면 됩니다
⇒ 근데 사실 그냥 머지 자체를 삭제해도 되긴 함 ㅎㅎ
- git merge --abort
git remote add origin https://github.com/kyuri-dev/Math_Box.git
git push -u origin master
이건 꼭 해주는 것이 좋겠죠?
로컬 → 리모트
set upstream 옵션을 줘야한다 ⇒ -u
- git push --set-upstream origin premium
git reset은 이전과 이후 커밋을 자유자재로 넘나들 수 있음
detached HEAD ⇒ HEAD가 브랜치와 관계 없이 특정 커밋을 가리키는 것
참고로 checkout 은 HEAD가 브랜치를 가리키게 할 수도, 커밋을 가리키게 할 수도 있음
머지 방식에는 앞에 있는 애로 옮겨가는 fast forward 머지하고 3-way 머지가 있음
Git 협업
remote에 있는 내용이 수정됐는데 로컬도 수정되었다면 push를 못함
⇒ pull을 해서 타인이 젖아한 걸 받아온다
- git fetch
- merge가 아니라 일단 가져오는 것… 가져와서 살펴본 후 머지하고 싶을 때 사용
- git diff ⇒ 리모트랑 로컬의 차이도 확인할 수 있음
- git blame
- 특정 파일의 코드를 누가 작성했는지 찾아낼 수 있음
- git show (커밋아이디)를 써도 된다
- git revert
- 작업을 되돌리고 싶을 때 사용
- 이전에 커밋한 내용을 없애는 느낌…
- reset이랑 다른 이유는 remote에도 적용되기 때문이다. reset은 이전 커밋에 들어가는 것이고 revert는 새로운 커밋을 생성하는 것이기 때문이다
- ⇒ 즉 내용은 같지만 커밋 자체는 다른 것!
- git revert 시작~끝 커밋번호
- 여러개의 커밋을 revert 할 수 있다. 대신 끝번은 해당 X 약간 배열 st
- 처음 순서와 거꾸로 revert됨
Git 자유자재로 다루기
git reset을 하고 돌아오면…
reset을 해도 커밋들이 삭제되는 것은 아님.
reset을 했는데 돌아가고 싶은 커밋 아이디를 모를 때
- git reflog
- HEAD가 가리키던 커밋을 알려줌
커밋 히스토리를 보는 다양한 방법!
- git log --pretty=oneline --all
- 다른 브랜치의 커밋 히스토리도 확인하기 위함
- 근데 어느 브랜치에 있는지 파악하기 어려움
- git log --pretty=oneline --all --graph
- 각 브랜치를 확인할 수 있음 커밋과 브랜치의 관계를 그래프 형식으로 확인할 수 있다.
- git rebase --continue
- rebase가 contlict 나서 안됐을 경우에 다시 실행해주라는 의미!
- rebase는 샤로운 커밋을 만들지 않음
- 히스토리가 머지의 경우보다 좀 더 깔끔하긴 하당…
- 결과물은 항상 같음!
작업 내용 임시 저장
- git stash
- 최근 커밋 이후의 작업 내용이 스택으로 옮겨지고 워킹 디렉토리는 최근 커밋으로 초기화
- git stash list
- 스택에 잘 넣어졌는지 확인하는 커맨드
⇒ 즉 스택에 작업한 내용이 임시 저장된당
- git stash apply
- 스택에 있는 내용을 다시 가져오겠다!
잘못된 브랜치에서 작업할 경우
- git stash
- 원하는 브랜치로 이동
- git stash list
- git stash apply (가장 최근 거)
- 혹은 작업 내용 ID
- conflict 해결해주면 된다잉
- git stash drop (아이디)
- list에 있는 내용 제거
- git stash pop (아이디)
- 작업 내용 적용하면서 동시에 스택에서 제거
필요한 커밋만 가져오기
- git cherry-pick (커밋 ID)
- 원하는 커밋만 가져온당
여러 커밋을 하나의 커밋으로 만들기
- git reset 에서 soft나 mix를 써라…
- .gitignore 파일 : git이 무시하는 파일의 이름 git에 의해 버전관리 될 필요가 없는 파일이 무시된다!