개발일지/TIL

[TIL] 210802 오늘 공부는 git 개념

햄❤️ 2021. 8. 2. 23:21
반응형

오늘은 처음으로 출근했다. 웹스톰을 사용했고, 맥북을  처음으로 써봤다. 그램만 쓰다가 맥북쓰니까 너무 헷갈렸다. 근데 맥북 터미널 진짜 편하다. 왜 개발자들이 맥북쓰는지 알겠다ㅠㅠ 구동환경에 조금만 더 익숙해지면 편할 것 같았다. 오늘은 맥 조금 더 만져보고 git 개념 공부좀 해야겠다. 명령어 위주로 알았는데 깃의 개념을 아는 것이 중요하다고 하셨다. 그래서 오늘 공부는 git 개념에 대해서 좀 딥하게 공부해보고, 남는 시간에는 코드를 쭈욱 따라서 읽어봐야겠다!!!!!!!!

그리고 오늘 맥 초기화 해봤는데, 엄청 헤맸다ㅠㅠ이제 완벽하게 할 수 있음. 여기에만 시간을 엄청 쏟았다 아까버ㅠㅜ 

 

- branch

 브랜치는 독립적인 어떠한 작업을 진행하기 위함이다. 각각의 브랜치는 서로 다른 브랜치에 영향을 끼치지 않기 때문에, 여러 작업을 동시에 진행할 수 있다. 브랜치를 많이 만든다고 메모리에 큰 영향을 주지 않기 때문에, 여러 브랜치를 만들어도 상관 없다. 여러 명이 작업을 주고 받을 때, 다른 사람의 작업에 영향을 주지 않도록 메인 브랜치에서 자신의 브랜치를 만든다. 각자 작업이 완료되었을때 자신의 브랜치에서 메인 브랜치로 변경사항을 저장하는 식으로 작업한다. 저장소를 만들면 가장 처음에 만들어지는 브랜치는 master 브랜치이고, checkout을 통해 브랜치를 변경하지 않는 이상, 모든 작업은 master에서 진행된다.  

 

- 로컬 브랜치 / 원격 브랜치

stackoverflow에서 로컬 브랜치 개념을 이렇게 알려주었다.
local branch is a branch that only you (the local user) can see. It exists only on your local machine.

로컬 브랜치는 나만 볼 수 있는, 즉 내 컴퓨터에서의 작업 디렉토리이다. 

원격 브랜치는 깃헙 서버에 있는 디렉토리로, 원격 저장소에 있는 브랜치다. 변경하지 않는 다면 기본적으로 origin 이름을 갖는다. 나만 볼 수 있는 로컬 브랜치를 다른 사람과 공유할 수 있게 해준다. 

remote branch is a branch on a remote location (in most cases origin). You can push the newly created local branch to origin. Now other users can track it.

 

- pull/push

드림코딩 엘리님 강좌에서 보고 조금 쉽게 이해할 수 있었다. 나의 컴퓨터에서 작업한 결과물들을 안전하게 보관하고, 다른 사람과 공유하기 위해 깃헙같은 서버의 원격 저장소에 내 디렉토리를 올려놓는 것은 push이다. 반대로 서버에서 로컬로 다시 받기 위해서 pull을 사용할 수 있다. pull은 원격 저장소의 정보를 가져오면서 자동으로 로컬 브랜치에 병합(Merge)까지 수행해준다

 

- merge

git merge는 다른 브랜치를 현재 Checkout된(전환된) 브랜치에 Merge 하는 명령이다. Merge 하고 나서 현재 브랜치가 Merge 된 결과를 가리키도록 옮긴다. git merge <branch> 명령을 실행하면 해당 브랜치가 Merge 된다.( 다른 브랜치를 현재 우리가 있는 브랜치로 merge하는 것) 즉, 각자 자기의 브랜치를 만들고 작업하다가 결과물을 합쳐야 하는 상황이 올 때, 브랜치를 합치는 것을 말한다. 다만, merge의 경우 충돌이 발생할 수 있다. 서로 다른 부분을 작업했다면 상관 없지만, 서로 같은 파일의 같은 부분을 수정하면 충돌이 발생한다. 이 때 git은 자동으로 merge 해주지 못한다. conflict가 난 부분을 git이 알려주면 코드를 수정 후 다시 commit하여 충돌을 해결한다. 

fast-forward-merge와 3way merge가 있다. (좀 더 알아보자.. 어렵다 알수록..)

 


- stash / rebase 
 내일 공부하기.zzzZZZ

- pull request
 내일 공부하기.zzzZZZ

728x90
반응형