Git(29)
-
[Git] cherry-pick: 커밋 하나만 분리해서 현재 브랜치에 연결
브랜치별 병합 용도 브랜치명 특징 feat/기능이름 각 개발자가 개발중인 브랜치 직접 커밋을 올림 main feat/기능이름 브랜치에서 개발 완료된 코드가 합쳐진 브랜치 출시 전인 베타 버전이라고 볼 수 있습니다. 직접 커밋을 올리지 않는다(병합을 통해서만 코드를 업데이트) latest 실제 출시할 코드(대중에게 보여줄 완벽한 코드)를 올리는 브랜치. [main] 브랜치에서 굵직한 개발이 끝나면 출시 시점에 [latest] 브랜치로 코드를 병합합니다. 위 표를 그림으로 표현하면 다음과 같습니다. cherry-pick의 필요성 예를 들어 어제 출시한 코드가 담긴 [latest] 브랜치에 당장 고쳐야 하는 버그가 발생했다고 가정합니다. 개발자가 급하게 [main] 브랜치에서 [fix/tetx-bug] 브랜치..
2022.04.21 -
[Git] amend: 수정 못한 파일을 방금 만든 커밋에 추가
예를 들어 개발을 하고 커밋을 하나 생성하였는데, 추가할 파일이나 수정해야 되는 부분을 발견하였습니다. 그렇다면 커밋을 또하나 수정하는 대신에 최근에 생성한 커밋을 정정하는것이 더 깔끔합니다. 이렇게 마지막 커밋을 수정하는 기능이 amend 기능입니다. 0. 사전준비 0.1 iTshirt-cat/ch05_git-playground 폴더 생성 ch-5_git-palyground 폴더에서 실습합니다. 1. amend로 마지막 커밋 수정하기 1.1 amend.md 파일 생성 및 작성 1.2 amend.md 파일을 커밋합니다. (푸시는 하지 않습니다.) 1.3 그런데 커밋을 하고 나니까 amend.md 파일의 내용이 '어맨드 실습하기'가 아닌 'amend 실습하기'라는 것을 뒤늦게 알았다고 가정합니다. 이때 정..
2022.04.21 -
[Git] 묵은 커밋을 새 커밋으로 이력 조작하기(rebase)
rebase의 필요성 컨트리뷰터가 된 너구리는 '티셔츠 찜하기' 기능을 코딩하였습니다. 그리고 풀 리퀘스트를 보냈지만 코드 충돌이 발생하였습니다. 이때 내 브랜치로 먼저 병합을 하고 충돌을 해결한 다음 다시 풀 리퀘스트를 보내면 충돌이 발생하지 않을 것입니다. 하지만 그러면 풀 리퀘스트에서 내가 추가한 코드 이외에도 충돌을 해결하느라 생긴 병합 커밋이 발생할 것입니다. 이를 해결하기 위해서 rebase 기능이 필요합니다. 실습 계정 정보 yonghwankim-dev : git_study 원격저장소 소유자 역할, iTshirt-cat 폴더를 사용함 본계정이라고 지칭 yonghwankim-dev2 : git_study 원격저장소를 포크한 기여자 역할, iTshirt-raccoon 폴더를 사용함 부계정이라고 ..
2022.04.20 -
[Git] Fork한 원격저장소에서 원본저장소에 풀 리퀘스트 보내기
1. 포크한 원격저장소에서 원본저장소로 풀 리퀘스트 보내기 포크한 원격저장소의 A 브랜치에서 원본저장소의 B 브랜치로 코드를 합치는 과정을 실습합니다. 1.1 부계정 로그인 -> 포크한 원격 저장소로 이동 -> Pull request 탭 -> New pull request 버튼 클릭 1.2 풀 리퀘스트 정보 확인 -> Create Pull request 버튼 클릭 base repository : 원본 저장소의 main 브랜치 head repository : 포크한 원격 저장소의 main 브랜치 변경 파일 정보 : like.md 1.3 pull request에 대한 설명을 입력, 디자인이나 UI에 대한 변경이 있다면 스크린샷을 첨부하는 것도 효과적 이제 원본저장소의 소유자가 풀 리퀘스트 승인과 병합을 기다..
2022.04.20 -
[Git] 원본저장소를 복사해서 원격저장소를 생성 (fork)
1. 평행세계를 만드는 브랜치(branch), 평행우주를 만드는 포크(fork) 기본적으로 원본저장소에 커밋을 직접 푸시할 수 있는 사람은 본인(소유자)뿐입니다 다른 사람이 원본저장소에 커밋을 푸시하려면 협력자(Collaborator)로 등록해야함 Settings - Collaborators - Add collaborator 포크(fork)의 필요성 원본 저장소에서 협력자(Collabrator)가 늘어날수록 원본저장소를 관리하기 어려워짐 관리가 어려워지는 이유는 협력자가 원본 저장소에 직접 푸시할 수 있기 때문 늘어나는 협력자로 인한 관리의 부담과 오픈소스의 개선의 딜레마 발생 포크(fork) 개발자는 원본저장소를 자신의 계정에 복사(fork)해서 원격저장소를 생성 복사한 원격저장소에 커밋을 올린 후 원..
2022.04.20 -
[Git] 개발이 완료되었습니다. 출시하자! : 릴리즈(Release)
1. 프로그램의 버전(version)이란? 프로그램을 출시할 때, 그리고 업그레이드를 할 때 이를 만든 회사에서는 버전을 명시합니다. 버전을 올리는 것은 크게 메이저(major) 업그레이드와 마이너(minor) 업그레이드로 나뉩니다. 사용자들이 크게 느낄 변화를 적용했을 때 보통 메이저 버전을 올리고(v2.x -> v3.x), 작은 변화 등이 생겼을 땐 마이너 버전을 올립니다.(v.2.3 -> v.2.4) 2. 특정 커밋에 포스트잇 붙이기 - 태그(tag) 프로그램을 출시하는 것을 '릴리즈(release)'라고 합니다. 현재 코드의 상태를 버전 v1.0.0이라고 기록하려고 합니다. 특정 커밋에 포스트잇을 붙이는 느낌입니다. 태그 또한 특정 커밋을 가리키는 포인터입니다. 2.1 [main], 소스트리 상단..
2022.04.19