-
git과 git workflow프로그래밍 기초 공부 2022. 9. 12. 16:57
처음으로 포스팅 하게 될 내용은 git, git workflow입니다.
[git]
우리는 개발을 하거나 코드를 짜면서 여러 파일들을 만들어냅니다.
이 때 파일에 새로운 내용을 추가하거나, 수정할 때 그러한 변경내역을 보존하고 관리하는 것이 필요합니다.
추가하거나, 수정할 때마다 새롭게 파일을 만들어서 저장을 해도 괜찮지만
그렇게 되면 파일의 양도 많아지고 관리하기도 불편하기 때문에 별로 좋지 않은 방법입니다.
그래서 프로그래머들은 git을 사용해서 컴퓨터 파일의 변경사항을 추적해서 보존하고 관리합니다.
git이란?
분산형 버전 관리 시스템이다.
편하게 말하면 파일의 현재상태를 따로 보이지 않게 저장해두고
언제나 쉽게 저장된 시점으로 돌아갈 수 있게 해주는 것입니다.
물론 이게 전부는 아니니까 사용방법 설명하면서 더 설명해 드리겠습니다.
staging / commit
새롭게 코드를 작성해서 현재상태를 기록하고 싶을때
git commit 명령어를 사용해서 파일의 버전을 생성합니다.
이 때 파일의 버전이 저장되는 곳을 repository(저장소)라고 하고 저장을 하는 과정을 commit한다 라고 합니다.
하지만 파일을 그냥 commit할 수 없고 git add 명령어를 사용해서 무슨 파일을 commit 할지 선택을 합니다.
staging area는 commit하고 싶은 파일을 넣는 곳이고 그 행위를 staging한다 라고 합니다.
commit은 언제?
commit은 보통 코드 몇 줄 적어내고 하는 것이 아니라
예를 들어 로그인기능을 만든다고 하면
- 로그인 창 만들면 commit
- 로그인이 잘 되는지 검증하는 기능을 만들면 commit
이런식으로 큰 주제에 작은 기능 하나씩 만들 때마다 commit 하는 것입니다.
branch
commit을 하며 계속해서 코드를 짜다가 새로운 내용을 추가해야 할 때
기존 코드를 직접 수정하게 되면 기존에 있던것이 망가지거나 하는 문제가 있을 수 있습니다.
문제를 해결하기 위해서 프로젝트의 복사본을 만들어서
복사본에 먼저 개발을 해보고 나중에 합칠 수 있게 하면 됩니다.
이런 복사본을 만드는 기능을 branch라고 합니다.
branch에서 새로운 branch를 만들어 갈 수 있고,
기존 코드는 지키면서 수정본을 만들고 합칠 수도 있는 기능입니다.
git branch명령어를 사용해서 기존 코드에 새로운 branch를 만들어 줄 수 있고,
git switch명령어를 사용해서 branch위치를 옮겨 다니며 코드를 짤 수 있습니다.
merge
branch를 만들어 짰던 코드가 마음에 들게 되면
원본코드 즉 main branch에 합쳐야 하는데
그 때 branch를 합치는 것을 merge라고 합니다.
merge에는 여러가지 방법의 merge가 존재하고 상황에 맞게 사용하면 됩니다.
1. 3-way merge
branch에 새롭게 commit 한 것이 1개 이상 있는 경우에
git merge 명령어를 통해서 두 branch의 코드를 합쳐서 새로운 commit을 만들어줍니다.
이러한 방법을 3-way merge라고 하고 일반적인 merge의 동작방식입니다.
2. fast- forward merge
기존 branch에는 commit이 없고, 새로운 branch 에만 commit이 있는 경우에
새로운 branch를 보고 main branch라고 하고 두 branch를 main branch로 합치는 것입니다.
이러한 경우를 fast-forward merge라고 합니다.
3. rebase and merge
main에서 새로운 commit을 한 것이 1개 이상일 때 신규 branch의 시작점을
main branch에 가장 최근에 commit 한 것으로 강제로 옮겨주고 fast-farward merge를 해주는 것입니다.
branch를 나눠서 commit한 후 merge하기 전에 main branch에서 새로운 commit이 생기면 기존 branch에 있던
commit 내용들을 새로운 commit이후에 옮긴다.
4. sqush and merge
3-way-merge 방법을 사용해도 크게 상관은 없지만 squash and merge를 하는 이유는
우리가 나중에 협업 프로젝트를 하면서 수많은 commit을 할 텐데 3-way-merge 방법을 사용하게 되면
한눈에 진행상황을 알아보기 매우 어려울 수 있기 때문에 우리는 이 방법을 사용하는 것이다.
그래서 branch에서 커밋한 내용들을 main의 가장 최근 commit으로 옮겨주고 branch를 삭제해주는 것이다.
'프로그래밍 기초 공부' 카테고리의 다른 글
HTTP란? (2) 2022.09.23 API와 REST API (0) 2022.09.19 JSON과 XML (0) 2022.09.19 객체 지향 프로그래밍(OOP)이란 무엇일까? (0) 2022.09.16 interface란 (0) 2022.09.12