git, 로컬이냐 원격이냐 그것이 문제다

준혁·2024년 3월 24일
0

팀장을 맡은 적이 없었기에 그냥 팀장분의 지시에 따라 PR만 보내주면 알아서 팀장이 항상 정리했기에 git 관리를 내가 해본적은 없었다. 따라서 Branch와 Merge 개념에 대해 맨날 흔들렸었는데 소공 수업에서 팀장을 맡은 관계로 git 관리 방법 좀 혼자 실습하고 기록해보고자 한다. (공부 안하고 하다가 git 기록 꼬인 대참사가 일어났다.)

<중간부터 사진이 시작된다. 벨로그 작성을 안하면서 혼자 실습하다가 스크린샷을 못찍은 관계로... >


우선 처음에는 main Branch 하나만 있었다.


사진을 보면 알겠지만 우선 처음 만들어진 main Branch로 first , Second Commit 까지 진행한 상황이다.

단순히 첫번째 커밋때는 1 , 두번째 커밋때는 2를 수정했다.

각 커밋 후 Push를 했다.

그 후 Branch를 새로 Branch_test 를 만들어서 다시 파일을 수정했다.

이렇게.


저 2번의 Commit 이후 이렇게 그래프가 바뀌었다. (Branch 새로 파서 push 시켰는데 왜 분기가 안생기고 하나의 라인에서 진행되는진 모르겠다.) Commit은 바뀐게 보이긴한다.

이 후 Github에서 PR을 날린 후 merge를 Main에 시켰다.
이때까진 분기가 생기지 않고 바로 윗 사진 그대로 나온다. gitHub에서 merge 시킨 것은 원격에서 시켰기에 해당 변경사항을 로컬로 가져와야한다. 따라서

일단 로컬쪽에 커밋들만 업데이트 해줄려고 fetch만 해왔다.

뭐 ㅇㅋ. merge를 시킨 후에서야 분기가 떳다가 합쳐진게 보인다. main 브랜치 옆에 3(아랫화살표) 가 있는데 이것은 현재 브랜치와 원격 브랜치 사이에 3개의 Commit 격차가 있다는거고 화살표에 따라 아랫방향이면 현재 브랜치가 뒤에, 윗방향이면 현재 브랜치가 원격브랜치보다 더 Commit이 있다는거다.

또한 로컬 Branch는 원격 Branch와의 연동이 중요한데 일반적으로 로컬 브랜치와 원격 브랜치의 이름이 같다보니 로컬 따로 원격 따로가 아닌 하나의 Branch라고 생각했었다.


git status 한 결과가 그것을 말한다.

원격쪽에는 merge를 시켜서 branch를 합쳤는데 로컬쪽에서는 merge를 안시켰고 그러다보니 main이 지금 commit이 밀린 상황이 발생했다. 따라서 로컬쪽에서 merge를 시켜주자.

이미 github상에서 원격으로 merge했던 원격 main 브랜치를 로컬로 끌고 왔다. 원격 main 브랜치(업데이트 됨)로 로컬 main 브랜치(업뎃 안됨)를 변경해야하기에 로컬 브랜치로 merge 시킨 모습이다.


당연히 성공적으로 로컬 main branch에서 commit 위치가 바뀌었다.

이제 mainBranch_test를 이동해서 git log를 띄워보니

와 같이 나오던데 갑자기 vi 명령어 칸이 나와서 당황했는데 git log 커맨드를 입력하면 log 가 많을 경우 해당 창에서 전부 못 보여줄때 페이지 기능으로 뜨는거라더라. 쨋든 그렇다


merge 된 상태에서 mainBranch_test의 브랜치에서 했던 third, four Commit 부분과 main Branch에서의 first,Second Commit 이 모두 잘 있는것을 볼 수 있었다. (Fast forwarded)


얘는 궁금해서 mainBranch_test에 새로 커밋해보았다. 그래프에서 브랜치 색깔이 서로 바뀌었다. (왜지?)


마찬가지로 push까지 했더니


역시나 PR이 생겼고 pull request후 원격쪽에서 merge 시켜보았다.


ㅇㅋ 제대로 merge 됐네

당연히 아직 로컬쪽에 merge 반영이 안된 상태이다. 따라서 원격에서만 merge 시켰으니 로컬에서도 반영시키자.


이번엔 git pull origin [branch 이름] 을 써봤다. pull은 fetch(커밋 히스토리만) + merge 동시에 작동한다.


변경사항도 잘 변경되었고 merge도 제대로 되었다.


중간중간 보면 merge 시킨 merge commit 2개도 잘 있는걸 볼 수 있다.

여태까지는 개인이 같은 로컬레파지토리로 브랜치만 바꿔가며 진행했었다. 또한 이것은 Fast Forwarded 일때만 진행했다. 다음 게시글에서는 다른 아이디, 다른 컴퓨터로 했을때를 진행해보겠다.

profile
멍청한 나를 위해 쉽게 풀어쓴 개발 기술블로그

0개의 댓글