infinity : 무한한 성장가능성

지옥에서 온 관리자 Git 11~21 본문

카테고리 없음

지옥에서 온 관리자 Git 11~21

인피니 2022. 1. 10. 02:57

Git 11강 -  Git 복구왕 Reflog

git reflog 

-> 한번이라도 커밋한 내용들이 다 남아있다. 

-> 내용들로 커밋 내용을 확인한 후 git reset --hard 변경을 원하는 시점 입력

 

git commit --amend -m "변경하고 싶은 로그"

-> 만약 변경하고 싶은 로그를 제외한 로그 히스토리가 없을때 , git commit --amend -m 을 사용하면 최종 로그를 변경할 수 있다.

git reset --soft

->로그를 변경하고 싶다면 로그변경하고 싶은 시점의 이전 로그로 돌아가 다시 커밋한다.

 

Git 13강 - Git Branch기본개념

 -> 기본적으로 main브랜치가 존재한다. 

->idea 브랜치를 만들어 아이디 중복체크 기능에 대한 것을 구현한 후 

-> main 브랜치에 합치고 싶다면...

(idea 브랜치에는 로그인 &회원가입에 대한 히스토리가 있고 로그인이 main브랜치와 idea브랜치의 공통조상이라 한다.)

(공통조상인 이유? 로그인 이후 분기가 나눠졌기 때문)

-> main브랜치와 idea브랜치의 형상이 다르다 

-> main 브랜치는 회원가입->로그인 ->글쓰기 

->idea 브랜치는 회원가입 ->로그인 -> 아이디 중복체크 API-> 아이디 중복체크 js ->아이디 중복체크 완료 임

->두개의 형상이 다를때 합치기 위해서는 ???

-> 공통조상과 각 브랜치의 끝점 2개를 합치는 경우를 3-way -merge라 한다.

(형상이 다를때 사용하는 것이 3-way-merge)

->위의 경우와 다른경우 

-> 로그인이라는 main브랜치의 끝점과 아이디 중복체크완료라는 idea 브랜치 끝점을 합치는 경우는 fast-forward merge라 함

(즉 형상이 동일할 때 사용하는 것이 fast forward merge)

Git 14강 -브랜치 fast forward 이해하기 

fast forward merge 이해 사진

->중요한 것은 대부분 긴 선을 브랜치라 이해하지만 실질적으로는 큰 브랜치 선이 생기는 것이 아닌 브랜치 포인터들이 각 브랜치 끝점을 가리키고 있는 구조다 

-> main 브랜치포인터가 로그인에 있고 t라는 브랜치의 포인터가 아이디 중복체크완료라는 점에 있을때 main브랜치를 t브랜치포인터가 가리키고 있는 점으로 이동시키는 것을 fast forward merge 라 한다.

 

->main브랜치포인터가 로그인을 가리키고 있다 , t브랜치 포인터가 아이디 중복완료를 커밋하고 main브랜치가 글쓰기를 만들때 이때 실제 브랜치가 생성된다.

->Main브랜치포인터가 글쓰기에 있고 t브랜치포인터가 아이디 중복체크완료에 있을때 main브랜치가 아이디 중복완료를 main브랜치에 포함시키고 싶을때 합친다면 3-way -merge가 발생하고 main브랜치포인터는 아이디중복완료를 가리키고 t브랜치포인터는 아이디 중복완료에 있다.

 

Git 15강 -fast forward 실습 

 touch 는 파일을 만드는 명령어  

-> 사용 예) touch 회원가입.txt 라 하면 회원가입.txt파일이 생성됨 

git branch 지금까지 존재하는 브랜치 확인및 지금 사용하고있는 브랜치 확인 

git branch 만들고 싶은 브랜치 이름 적기

git checkout 이동하고 싶은 브랜치이름 

->브랜치가 이동됨 

HEAD는 현재 사용하고 있는 브랜치로 이동된다 (checkout t라 할경우 HEAD는 t브랜치로 이동됨)

Main브랜치에서 아이디 중복체크를 합치고 싶다면 

브랜치를 Main으로 이동시키고 git merge t (합치고 싶은 브랜치이름) 을 하면된다.

 

Git 16강 - three way merge 실습 

git checkout -b 만들고싶은브랜치이름 

-> 브랜치를 만들면서 해당브랜치로 이동까지 해주는 명령어임

3 way merge 도 동일하게 합칠 기준이 될 브랜치에 HEAD가 위치하게 만들고 

git merge (합칠 브랜치) 할 경우 자동으로 merge됨 

git merge t 이런식으로 입력하면

위의 창이 뜬다. 

-> 노란색 부분이 로그를 어떻게 남길지 물어봄 

-> i를 입력하면 해당 로그 변경가능

-> 남기고 싶은 로그로 확정후 esc -> :wq 하면 변경된 상태로 로그가 남겨짐 

(q 는 그냥 나감 ,wq는 저장후 나감 )

 

->합친후 log를 확인해보면 아이디 중복체크 로그가 메인 브랜치에 포함되어있고 

->위의 사진에서 확정한 로그 메시지가 최근 커밋 로그로 등록된것을 볼수있음

Git 17강 -merge 충돌해결 

-> 위의그림을 설명하자면 로그인에서 마스터 브랜치와 T브랜치가 위치하다가, 마스터 브랜치에서 로그인파일을 수정하고 , T브랜치에서도 깉은 파일을 수정후, 마스터 브랜치로 merge할 경우, 같은 파일을 수정했기 때문에 충돌이 발생할 수 있다. (이때 merge 는 3way merge)

->충돌 발생원인은 같은파일의 같은 부분을 건들인다면 merge 할때 충돌이 발생 

git merge t 하면 

-> 자동 merge가 error이라고 알려주고 

->오류난 파일을 열어보면 

->위처럼 3줄이 생겨있다.

=====을 기준으로 위에것을 사용할 것이니 밑의것을 사용할 것이니 물어봄

-> 깔끔하게 남기고 싶은 내용만 남기고 지운다.

이후 git add . ,git commit  즉 직접 수정해 커밋한다.

->웬만하면 같은파일을 건들이지 않는 것이 중요하다.

 

Git 18강 -rebaase로 로그관리 

rebase -> 로그를 다시 정리한다. 

->노란색으로 칠해진 로그를 rebase명령어를 통해 정리한다.

->위의 3가지 로그를 변경하고 싶다.

rebase를 사용하기 위해서는 squash를 이해해야 한다.

->squash는 찌그러트리다. ,압축하다라는 뜻을 가진다.

-> 항상 압축할때는 과거로 찌그러트려야 함 

->파란색 화살표 방향 , 즉 과거방향 

->과거방향이 아닌 로그인완료 방향으로 찌그러트리면 과거 로그가 없어지며 붕뜬다.

->즉 과거방향으로 모든 코드를 모은다.

-> squash는 로그인아폼, 로그인완료를 함 , 로그인퇴근으로 압축 

-> git rebase -i HEAD~3 

->위의 git rebase -i HEAD~3 명령어를 입력하면 위의 사진이 뜬다.

해당 사진에서 

->밑의 그림처럼 수정하여 , 즉 과거를 기준으로 합친다.

-> pick 와 s 할 커밋들을 지정후 나가면 , 위의 화면이 뜬다.

-> 해당화면에서 #은 주석이기때문에 신경쓰지 않고 

->위의 사진처럼 남기고 싶은 로그로 수정후 저장 및 나간다 (:wq)

->위의 사진에서 총 3가지의 커밋메시지 부분중에 위치 관계없이 남기고 싶은 곳에 메시지를 수정후 저장하면 된다.

-> 만약 3개의 메시지를 모두 남긴다면 

->하나의 커밋메시지로 총 3개의 부분들이 줄바꿈을 통해 남겨진다.

Git 19강 - github push 해보기 

gitHub : 클라우드 저장소 (분산 버전관리가 가능한)

깃헙 클라우드 저장소를 부르는 키워드는 origin 

git remote add  origin ~(파일 저장소 주소 https주소 ) (즉 클라우드 저장소와 로컬 저장소를 연결해준다)

git remote -v 하면 연결된 orgin저장소가 뜬다.

git ls-remote ( git remote -v 와 동일하게 연결된 저장소가 뜬다.)

git push origin master (orgin에 있는 master라는 브랜치에 올릴게 )

push 는 병합과 파일업로드를 동시에 해준다.

Git 20강 -github pull해보기 

git remote rm origin -> remote 연결을 잘못했을 경우 연결을 끊는 방법 

git pull origin master -> origin 에 있는 master 브랜치를 다운받는다. 

pull은 파일 다운로드와 병합을 동시에 해준다.

 

Git 21강 -github clone 해보기

1)git init 

2)git remote 

3)git pull

->위의 3가지 명령어를 모두 합친 명령어가 clone이다. 

git clone clone해올저장소 주소(https~~~~~)