본문 바로가기

부트캠프/멋쟁이사자처럼 프론트엔드스쿨 9기

GIT 특강#2

git reset --hard <해시코드> : 돌아가고 싶은 해시코드 상태로 돌아간다. 
git log --oneline : 해시코드를 포함한 깃 로그 조

 

VSCODE 에서 백틱 (ctrl + ~) 누르면 터미널 노출/숨기기

 

git .ignore : git에서 관리하지 않도록 하겠다. 

ㄴ txt, html 확장자 파일

ㄴ docs 디렉토리

무시하겠다!

 

 

cp <파일> 파일 복사
cp -r <디렉토리명> <복사하여 생성할 디렉토리명> 디렉토리 레벨 복사

 


패키지 추가 & 삭제하는 법

npmjs.com -> 패키지 다운받기 -> add-gitignore

-설치하고 싶다 : npm i add-gitignore 

-실행만 1회성으로 실행 : npx add-gitignore node,windows,osx,visualstudiocode

ㄴ ex) osx 를 지정했다면, mac os 에 관련된 파일 (DS 파일 등등) 관리하지 않도록 자동으로 축해준다. 

 

패키지 삭제

npm un add-gitignore 

 


워킹 디렉토리 -> 스테이지 -> 레포지토리 -> 리모트

 

 


Branch 개념

레포지토리(헤드) 

헤드 : 현재 어떤 위치인지를 가르키고 있다. 

 

git branch docs 

ㄴ docs 라는 브랜치를 만든다. 

git branch

ㄴ 브랜치 확인

 

git switch docs : branch를 docs로 바꾼다. 

 

git checkout <브랜치명> : 브랜치를 변경한다. 

 

git log --oneline --graph

그래프호하여 보기 

git branch -D <브랜치명> : 브랜치 삭제하기

ㄴ 브랜치를 삭제하면 그 아래에 있던 커밋들 모두 삭제 됨

 

 

헷갈리는 브랜치 명령어 총 정리

#브랜치

- git branch : 브랜치 목록 조회하는 것
- git branch <브랜치명> : 브랜치 만들기
- git switch <브랜치명> : 브랜치 이동 (2.23버전 이후 추가된 명령어)
- git checkout <브랜치명> : 브랜치 이동
- git switch -c <브랜치명> : 브랜치를 만들고 이동하기
- git checkout -b <브랜치명> : 브랜치를 만들고 이동하기 (기존)

 

git log --oneine --graph --all :가지치기 형식으로 확인하기

 

git branch -m <바꿀대상> <바꿀이름> : 브랜치 이름 변경하기 

 

 

git merge <브랜치이름> 

 

[이해를 위한 시나리오 - fast forward] 

main 에서만 커밋한 자료들이 수두룩,

test 브랜치만들면서 이동 , test브랜치에서 commit 진행

현재 head , test브랜치인데

(merge를 하면 main의 작업들을 test브랜치에 연결해주는 것이다)

이후 main으로 switch 하여 이동

main으로 이동한 상태에서 git merge test 해주면 main과 연결된다.

ㄴ test파일이 main에 연결 

* b951811 (HEAD -> main, test) 테스트브랜치-ff

 

 

[이해를 위한 시나리오 - fast forward] 

main 에서만 커밋한 자료들이 수두룩,

docs브랜치만들면서 이동 , docs브랜치에서 commit 진행

main 브랜치로 가서 docs의 상태 확인 

 

* 455c0d1 (docs) 병합스타일 -3way
* 46fe409 (HEAD -> main) Git의 세가지 형태
* 2a6f766 모든 요소에 기본 박스 사이징 설정
* 81e8b91 DTD선언
* 83708e0 분산형 버전관리 시스템 Git

 

git merge --no-ff docs -> docs라는 브랜치와 fast forward 방식으로 병합 안할거야

= 3way merge 하게 되었을 거임

 

 

main에서 새로운것 커밋

 

git checkout <해시>  : 과거 그 시점으로 잠깐 갔다올거야! (아예 돌아가는건 아냐) 

HEAD~3 : head 이전 3번째로 이동


 

git reset head~n : 다시 이전으로 리셋시킨다. 이전 작업으로 돌아가버림
gir reset --hard : 파일의 내용들 다 취소하고 이 시점으로 다시 돌아갈거야

 

 

[시나리오]

똑같은 file을 수정하고 병합하니 충돌이 발생한다. 

되돌리기의 -> README.md 를 수정했다.

그리고 한단계 전으로 checkout HEAD~1 해서 새로운 readme 브랜치 생성

readme 브랜치에서 -> README.md 오버라이딩 >> 여기서 확인하면 수정되어있는점 확인됨

 

이후 main에서 merge 수정하면 충돌 발생

 

 

자동으로 병합한 메시지를 입력해준다. 

 

 

제역할을 다 했기 때문에 삭제해주고 

 

 

git branch -d markup : 한번이라도 커밋한 브랜치 삭제
git branch -D markup : 커밋 안한 브랜치 삭제 

 

 

 


 

git remote add origin <주소> : 레파지토리 연결하

ㄴ origin 은 별칭이다. ex) 슬비썜

 

git remote origin -v : 깃허브 주소를 알려줘~ 

 

git remodte update : 업데이트
git push --set-upstream origin main
ㄴ git push -u origin main

git pull --set-upstream orgin(별칭) main(브랜치이름) : git을 이용해서 원격 브랜치에 있는 내용을 당겨다 pull
>> 약자로는 git pull -u origin main

 

 

 

git clone <깃헙주소> <넣을폴더이름> : clone하여 분신 만들기 (영혼까지 복사)

 

git clone 이후 커밋 업데이트가 있을 경우

이미 push를 기억하고 있기 때문에 단순 push 만 하면된다.

 

remote 저장소(깃헙)에 들어가보면 기록 확인이 가능하다.

 

 

 

[충돌시나리오]

한쪽 디렉토리에서 html 파일 바꿔서 push

다른 디렉토리에서 html 파일을 pull 하지 않고 바꿔서 push

ㄴ 충돌 일어남!!  => 충돌은 모두 vscode 에서 해결한다. 

 

pull = fetch(임시로 가져옴) + merge 

 

 

vscode 에서 바로 레파지토리 생성하기

 

모바일에서도 바로 볼 수 있도록 설정하기 ~
완성된나의 페이지 주소

 

 

 

git stash : 수정을 진행하고 commit을 진행하지 않고 싶다 ! 할떄 잠시 숨기는 것 (삭제된 것은 아니다.)
working tree가 깨끗한 것처럼 해준다! 다른 브랜치로 스위칭 가능

git stash apply : 마지막에 숨겨놓은 것을 꺼내온다. 
git stash list : 숨겨놓은 목록 리스트 볼 수 있다. 
ㄴ 이력을 통해 확인한 것 apply하기 git stash apply stash@{2}
pop == apply + drop
git stash pop stash@{n} => 지우면서 가져오기
git stash drop stash@{n} => 지워버리기만 하기 

 

 

 

branch를 push 하기

git push -u origin ui : ui 브랜치를 넣는다! 

ui 브랜치의 작업을 볼 수 있다. 상단 초록색 박스를 누르면 병합도 할 수 있다.

 

 

 

협업 시 코드 리뷰 요청

 

 

 

 

git reset --soft () : 같은 reset이지만 soft reset은 사라지지 않는다. 
ㄴ 커밋하기 이전인 staging 상태로 되돌려놓는다.  > status로 확인가능
git reset --mixed () : ( default 값이기 때문에 git reset 해도 된다. )
ㄴ 커밋하기 이전인 working directory로 되돌려놓는다.

 

 

git revert (해시값) : 이전 상태를 뺀다. : 충돌일어남

ㄴ 해결 후 다시 git commit