내 로컬저장소를 원격저장소를 반영하여 최신 베이스만들기
내 로컬저장소를 원격저장소를 반영하여 최신 베이스만들기
세가지 방법이 있다.
| 명령어 | 결과 | 특징 | 
|---|---|---|
| Git pull | 내 로컬머신이 remote저장소베이스 그대로 갱신(브랜치까지 싹 다) | 로컬과 remote변경사항 확인불가 | 
| Git merge after git fetch | fetch후 충돌/차이점 확인 후 내 로컬머신에 갱신, 머지커밋생성됨 | 로컬과 remote변경사항 확인가능 | 
| Git rebase after git fetch | 내 커밋아래에 remote의 커밋이 쌓이고 그 위에 내 커밋이 얹음 | master브랜치에 사용하지말것 | 


공통 설정 두가지
git remote -v
- origin 저장소만 있다면 최신레포를 가져올 upstream저장소를 연결해줘야한다.
- origin과 upstream 두개가 있어야하며 - origin: 내 아이디가 있는 내fork한 레포주소.
- upstream: 최신레포를 가져 올 공식레포주소.
 
- origin 저장소 주소 변경하고싶다면?
| 1 | gir remote -v | 
git remote add 최신반영하고싶은_저장소이름 최신반영하고싶은_레포주소
| 1 | git remote add upstream 공식레포주소 | 
최신베이스만들기 첫번째 방법 : pull
- fetch + merge = pull
| 1 | git pull upstream master | 
최신베이스만들기 두번째 방법 : fetch + rebase
- git fetch 최신반영하고싶은_저장소이름 가져올브랜치명- fetch는 임시 저장해놓은 것이라서 fetch했다고 내 로컬의 브랜치에 반영되지 않는다 -> fetch분과 내 로컬 브랜치를 merge해줘야한다.
- 보통 upstream을 많이 사용함. upstream말고 다른 저장소명써도 상관없음.
- fetch를 쓰는 이유 : 내 로컬저장소와 원격저장소르 비교하여 차이점을 볼 수 있기때문
 
- git rebase upstream/master: 임시저장분(fetch)을 내 로컬머신의 커밋 아래로 저장해야한다.
- git log: 머지커밋이 생성안됨. 신규 커밋 없음을 확인할 수 있다.
- git push origin 브랜치명: 최신베이스가 반영된 내 로컬의 데이터를 깃헙 내fork한레포에 반영하고싶다면 git push하면된다
| 1 | //상황 | 
최신베이스만들기 세번째 방법 : fetch + merge
- git fetch 최신반영하고싶은_저장소이름 가져올브랜치명- fetch는 임시 저장해놓은 것이라서 fetch했다고 내 로컬의 master브랜치에 반영되지 않는다 -> fetch분과 내 로컬 master브랜치를 merge해줘야한다.
- 보통 upstream을 많이 사용함. upstream말고 다른 저장소명써도 상관없음.
 
- git merge upstream master- 임시저장분(fetch)을 내 로컬머신으로 저장하기위해서는 master브랜치로 가야한다
- 임시저장분(fetch)이 내 로컬머신의 브랜치로 저장된다.
 
- git log: 머지커밋이 생성된걸 확인 할 수 있음
- git push origin 브랜치명: 최신베이스가 반영된 내 로컬의 데이터를 깃헙 내fork한레포에 반영하고싶다면 git push하면된다
| 1 | //1. upstream의 master브랜치에 있는 최신 변경분을 가져오다는 의미 | 
최신베이스 유지를 위해 pull이 아닌 fetch > rebase를 해야하는 이유
- 깃헙저장소 master를 로컬 master로 pull받아온다.
- 로컬에서 작업 하는 동안 깃헙 저장소에 새로운 커밋이 추가되었다.
- 여기서 내 로컬과 원격 저장소의 싱크를 맞추고싶다면 즉, 원격의 새로운 커밋을 내 로컬에 반영시키고싶다면 무조건 리베이스해야한다
- git pull하면 나중에 커밋한 내용을 합칠 수 없다.
- git fetch upstream master -> git rebase upstream/master 하면 싱크를 맞출 수 있다.
- 리베이스는 혼자만 하는 브랜치에서만 작업하는 것이 좋다.
- 커밋을 하나로 합칠때 interactive rebase 사용해야한다.
![[OS/WINDOW]배포후 서버재시작에 batch와 윈도우 스케줄러 활용하기](https://cdn.pixabay.com/photo/2012/03/04/00/50/board-22098_960_720.jpg)
![[블로그]헥소테마에서 댓글기능 facebook에서 utterances로 변경하기](https://miro.medium.com/max/1600/1*aOv6h3h_v9PQWa03zGACnw.png)