git 15

Git, GitHub 병합 정리

Git(develop) git rebase -i maindevelop 커밋 히스토리를 main 위로 재배열 (develop 에 변화 있음)-i 옵션 여부에 따라 develop 의 커밋 압축 여부를 직접 지정할수도 혹은 지정 없이 모두 그대로 유지할수도 있음(develop) git rebase -i HEAD~3그냥 develop 내부에서 혼자 커밋 히스토리 정리하는거 (develop 에 변화 있음)(main) git merge --squash developdevelop 커밋 히스토리를 하나로 합쳐서 main 위로 새로운 커밋 하나 생성 (develop 에는 변화 없음)그냥 merge 해올때 커밋 하나로 압축해서 가져오는거이후 git add 및 git commit 진행해야 merge 완료됨GitHubCrea..

Dev/VCS 2025.09.18

Git Flow 브랜칭 전략

초기 커밋: README.md, .gitignore 등의 설정 파일들을 main 브랜치에 커밋main 브랜치에서 develop 브랜치를 분기하고, 개발에 필요한 템플릿 코드 등을 develop 에 커밋기능 단위로 develop 브랜치에서 feature/ 브랜치를 분기하고 작업 진행ex. feature/add-user-profile기능 개발이 완료되면 해당 feature 브랜치를 develop 에 병합병합 이후 develop 브랜치에서 버그가 확인되면 develop 브랜치에서 바로 수정 (git flow 방식에서는 develop 브랜치에 직접 커밋하지 않는 것이 원칙이긴 함)develop 브랜치에서 발견된 버그의 규모가 크다면 feature/ 브랜치로 분기하여 작업 진행후 다시 develop 에 병합실제 ..

Dev/VCS 2025.05.12

Git merge vs rebase

Git Flow 브랜칭 전략을 전제로 합니다. develop 브랜치에서 feature 브랜치로 분기한 상황입니다. feature 브랜치 개발 완료 후 develop 에 merge 시, develop 에 이미 새로운 커밋 이력이 생겨있는 경우merge 사용이 일반적히스토리를 그대로 보존하므로, 이력이 안전하게 남고 협업에 적합merge 정책에 따라 rebase 혹은 squash 를 사용할 수 도 있지만 기본적으로는 merge 사용feature 브랜치에서 개발 진행중에 develop 에서 코드 수정이 발생해 수정된 develop 코드 기반에서 개발을 이어가야 하는 경우rebase 사용이 일반적커밋 히스토리가 깔끔해지고, develop 의 최신 상태를 기반으로 개발 가능merge 를 사용하면 불필요한 병합 커..

Dev/VCS 2025.05.12

git fetch

fetch원격 브랜치의 최신 상태를 로컬의 원격 추적 브랜치로 업데이트하는 명령어입니다.git fetch / 에서 fetch 해옴git fetchremote alias 가 origin 으로 설정된 원격 저장소에서 모든 브랜치 정보를 가져옴git fetch --pruneremote alias 가 origin 으로 설정된 원격 저장소에서 모든 브랜치 정보를 prune 방식으로 가져옴git fetch --all모든 원격 저장소에서 모든 브랜치 정보를 가져옴git fetch --all --prune모든 원격 저장소에서 모든 브랜치 정보를 prune 방식으로 가져옴

Dev/VCS 2025.05.06

Git 브랜치 관리

Git Flow 기반 워크플로에서의 브랜치 관리 방식develop:main 브랜치에 병합한 뒤에도 삭제하지 않는것이 일반적 (프로젝트의 지속적인 개발 흐름을 담당하는 브랜치이므로)main 브랜치로 병합 시 merge 방식이 일반적 (릴리즈 단위의 기록을 보존하려는 목적, 여러 feature 통합 흔적 유지)feature/*:develop 브랜치에 병합한 뒤 삭제하는 것이 일반적 (기능 개발이 완료되어 develop 에 반영되었기 때문에 더 이상 해당 브랜치가 필요 없음. GitHub, GitLab 등에서는 PR 을 머지할 때 자동으로 브랜치를 삭제하는 옵션도 있음)develop 브랜치로 병합 시 squash 또는 rebase 방식이 일반적 (커밋을 정리해서 develop 히스토리를 깔끔하게 유지하려는 목..

Dev/VCS 2025.04.25

Git 브랜치 이름 변경

로컬 브랜치 이름 변경로컬 브랜치 이름 바꾸기git branch -m 현재 체크아웃 중이라면 아래 명령어로도 간단하게 변경 가능git branch -m 원격 저장소에 반영로컬에서 변경된 브랜치의 이름을 원격 저장소에 반영하는 방법은 원격 저장소에 있는 브랜치의 이름을 실제로 바꾸는 방식이 아니라 새 브랜치로 푸시하고 이전 브랜치를 삭제하는 방식입니다.git push # 변경된 이름의 브랜치 원격 저장소로 푸시git push --delete # 이전 이름의 브랜치 원격 저장소에서 삭제

Dev/VCS 2025.04.24

Git 태그

tagGit 에서 태그 (tag) 는 특정 커밋을 식별하기 위해 붙이는 일종의 이름표로 릴리즈나 특정 버전을 표시할 때 사용되어 프로젝트의 버전 관리와 릴리즈 관리를 체계적으로 할 수 있도록 돕는 중요한 도구입니다. Git 태그는 경량 태그와 (Lightweight Tag) 주석 태그 (Annotated Tag) 두 가지 종류로 나눌 수 있습니다.경량 태그 (Lightweight Tag)단순히 특정 커밋을 가리키는 포인터 역할입니다.추가적인 메타 데이터 (작성자, 날짜 등) 가 포함되지 않습니다.주로 내부적이거나 임시적으로 사용할 때 적합합니다.git tag # 현재 HEAD 가 가리키고 있는 커밋에 적용 (다른 브랜치에서도 해당 커밋에 자동 적용)git tag # 특정 커밋에 경량 태그 추가주..

Dev/VCS 2024.12.31

Git 브랜치 삭제

로컬 브랜치 삭제다른 브랜치에 merge 된 브랜치 삭제git branch -d 다른 브랜치에 merge 된 & merge 되지 않은 브랜치 삭제git branch -D 원격 브랜치 & 원격 추적 브랜치 삭제원격 저장소의 원격 브랜치 삭제 (로컬에 해당 원격 브랜치에 대한 원격 추적 브랜치도 존재한다면 함께 삭제됨)git push --delete 로컬에 있는 원격 추적 브랜치 삭제git branch -r -d # -r 옵션을 사용하여 원격 추적 브랜치 삭제. -rd 형식으로도 사용 가능로컬 저장소를 원격 저장소와 동기화시켜 로컬의 원격 추적 브랜치 정리git fetch --prune 은 로컬상의 원격 추적 브랜치를 항상 원격 저장소의 원격 브랜치에 정확히 일치시킵니다.원격 저장소에 존재하는 원격 브..

Dev/VCS 2024.12.29

Git fast-forward merge, 3-way merge

Git 병합Git 에서 여러 브랜치에서 작업한 내용을 하나의 브랜치로 합치는 작업을 병합 (merge) 이라고 하며, 대표적으로 fast-forward merge 방식과 3-way merge 방식이 있습니다. 병합이 성공할 경우 3-way merge 에서는 병합 커밋이 자동으로 생성됩니다.비병합 커밋 (Non-merge commit): 단일 브랜치에서 발생하는 커밋으로 하나의 부모 커밋만 가지며, 다른 브랜치와의 병합 없이 그 브랜치에서만 변화가 일어난 커밋입니다.병합 커밋 (Merge Commit): 두 개 이상의 브랜치를 병합할 때 Git 이 자동으로 생성하는 커밋으로 두 개 이상의 부모 커밋을 가집니다. 하나의 병합을 진행하며 병합 충돌이 여러 번 발생하여도 병합 커밋은 최종적으로 병합이 성공하는 ..

Dev/VCS 2024.12.24

Git 협업 방법 clone, fork

git clone저장소 (Repository) 구성원인 경우 원본 저장소를 clone 해서 바로 작업을 진행할 수 있습니다.git clone https://github.com/dragonHyeon/some-repository.git # 원격 저장소 clonecd some-repository # clone 한 저장소의 디렉터리로 이동 git clone 시 원격 저장소의 모든 브랜치, 커밋, 심볼릭 레퍼런스 (origin/HEAD), 태그를 가져옵니다. 기존 작업 디렉터리에서 일부 브랜치 추가를 하는 경우가 아니라면 수동으로 fetch 를 하여 특정 브랜치의 업데이트 정보만을 가져오기 보다는 git clone 을 사용하는것이 더 ..

Dev/VCS 2024.12.17