여러분 혹시 왜 Git이 만들어졌는지 아시나요?
찌라시로 들리는 말로는 리누스 베네딕트 토르발스(Linus Benedict Torvalds)라는 사람이 비행기를 타면서 코딩을 하고 싶어서 만들었다고 하는데 누군가는 그건 Github이다 뭐다 합니다.
하지만 Git은 리눅스(Linux) 커널(Kernel)을 개발하기 위해 만들어졌습니다. 그 당시에도 분업과 개발 과정에 대한 기록을 남기기 위해서 Snapshot을 기반으로 만들어졌다고 합니다. 그래서 한국말로 분산 버전 관리 시스템이라고 합니다.
참고로 리누스라는 이름과 Linux라는 이름이 비슷하죠? 맞습니다. 저분이 개발자입니다. 물론 본인 이름을 넣지 않으려고 했답니다. 아마 MBTI가 ISFP일거 같네요.
자 그럼 본론으로 들어가겠습니다. 위에 언급했듯이 분업은 Git의 핵심입니다. Master branch에서 벗어나 다른 가지로 퍼지고 그 가지들을 합칠 수도 있습니다.
분업을 시작하기 위해서는 현재의 Master branch에서 새로운 가지를 만들어 내야합니다.
분업한 내용물을 합치기 위해서는 현재 자신이 작업 하고 있는 Branch에서 Master branch로 합쳐야 합니다. 우리는 이걸 Merge라고 합니다.
그래서 먼저 기본적으로 아래와 같은 구조의 폴더를 준비한 후에 바로 Commit을 실행했습니다.
gitPractice(최상위 폴더)
- taskOne - taskOne.py
- taskTwo - taskTwo.py
먼저 첫번째 commit을 아래와 같이 해줍니다.
taskOne.py와 taskTwo.py의 내용은 아래와 같습니다.
그다음 아래의 이 명령어를 기억하세요.
git branch taskOne
git branch taskTwo
그러면 taskOne과 taskTwo라는 branch가 만들어집니다.
그리고 아래의 명령어를 입력하면 만들어진 branch로 옮겨서 작업할 수 있습니다.
git switch taskOne
혹시나 말씀드리자면 굳이 taskOne이라고 안 해도 됩니다.
그다음 아래의 내용을 추가하고 Commit을 만들어 보겠습니다.
그리고 Commit을 하고 taskTwo branch로 옮겨보면 아래와 같이 입력하고 commit을 만들어 보겠습니다.
그러면 이제 다시 master branch로 돌아와 위 파일들을 열어보면 어떻게 돼있을 까요? 처음 보여드렸던 사진에서 변화가 없습니다. 왜냐하면 우리는 이 다른 branch에서 만들어진 파일을 합치지 않았기 때문입니다. 그리고 git log를 입력해 보시면 taskOne과 taskTwo에서 만든 commits이 없습니다.
그런데 여기서 좀 변화를 줘보겠습니다. 만약 master와 branch에서 같은 파일을 수정하면 어떻게 될까요? 어떤 걸 저장할까요? 일단 마음속으로 답을 생각해 보세요.
그럼 실험을 위해 master branch에서 코드를 수정해 보겠습니다.
자 그리고 이제 아래의 명령어를 입력해 보겠습니다.
git merge taskOne
그리고 바로 오류 뜹니다.
왜냐하면 같은 파일을 수정했을 시에 임의적으로 코드를 막 배열할 수 없기 때문에 merge를 못하게 하고 이 문제를 해결하기 전까지는 commit 또한 할 수 없습니다.
그럼 어떻게 해결할까요? 생각보다 간단합니다.
오류가 생긴 파일에 들어가 저 <<<<< 표시와 >>>>> 표시 사이를 해결해 주면 됩니다. git이 걱정하는 거 코드의 순서 때문에 우리가 직접 배정하고 저 표시들을 지워 주면 됩니다. 간단하죠?
자 그럼 일반적인 merge는 어떻게 될까요? 간단합니다.
git merge taskTwo
그러면 아래와 같은 화면이 나타납니다. 왜냐하면 이 부분이 합쳐져야 하는지에 대한 설명을 추가해야 하기 때문입니다.
자 그럼 모두 merge 한 다음의 git log는 어떻게 돼 있을까요?
원래 merge한 부분에 branch 이름과 함께 표시가 돼있는데 제가 branches를 삭제하고 git log를 해버렸습니다....
(삭제는 git -d (branch 이름) 형태로 진행하면 됩니다.)
이렇게 해서 다른 사람과 분업도 할 수 있고 좋습니다. 너무 간단한 기능을 길게 설명을 드렸네요...
읽어 주셔서 감사합니다ㅠㅠ
그럼 다음에는 github를 설명드리겠습니다!
감사합니다.
* 항상 정확한 정보를 드리고 싶지만 실수가 있을 수도 있습니다!
* 실수를 찾게 되거나 질문이 있으시면 댓글 달아주세요!!
'개발일반 > 도대체' 카테고리의 다른 글
도대체 Nginx는 뭘까요? (1) | 2023.12.08 |
---|---|
도대체 M1, M2 칩 Macbook에 Tensorflow를 어떻게 설치할까요? (0) | 2023.03.15 |
도대체 Git은 어떻게 사용하는 걸까요? (0) | 2023.03.08 |
도대체 Git은 뭘까요? 그리고 Github는 또 뭔가요? (0) | 2023.03.07 |
도대체 Weights와 Bias는 AI에서 뭘까요? (0) | 2023.03.06 |