-
Notifications
You must be signed in to change notification settings - Fork 1
Git 학습공유
Forest Lee edited this page Dec 3, 2024
·
1 revision
-
Git Flow
Git Flow는
main과develop브랜치를 기본으로 하여 개발 흐름을 관리하는 방식입니다. 기능, 릴리스, 핫픽스 등 각각의 브랜치 유형이 있으며, 주로 릴리스가 일정한 주기로 있는 프로젝트에 적합합니다.-
feature/*: 새로운 기능 개발을 위해develop브랜치에서 파생됩니다. -
release/*: 릴리스 준비를 위해develop에서 파생되어 최종 수정 작업이 이루어집니다. -
hotfix/*: 긴급한 버그 수정을 위해main에서 파생됩니다.
-
-
GitHub Flow
GitHub Flow는 단순히
main브랜치를 중심으로 기능을 브랜치 단위로 관리하는 방식입니다. 기능이 완료되면 바로main에 병합하여 빠른 배포가 가능합니다.-
main브랜치에 병합 전에 Pull Request를 활용해 코드 리뷰가 가능합니다.
-
-
GitLab Flow
GitLab Flow는 Git Flow와 GitHub Flow를 결합한 형태로, 다양한 배포 환경에 맞춰 여러
main/production브랜치를 설정해 배포 환경을 관리할 수 있습니다.
-
브랜치 관리 명령어
-
git branch -d <branch>: 로컬에서 브랜치를 삭제합니다. 병합되지 않은 브랜치라면D플래그를 사용해 강제로 삭제할 수 있습니다. -
git push origin --delete <branch>: 원격에서 브랜치를 삭제합니다. -
git switch <branch>: 브랜치를 전환합니다.checkout의 대안이며, 명확한 전환 명령어로 많이 사용됩니다.
-
-
Rebasing
-
git rebase <branch>: 커밋 히스토리를 깔끔하게 정리할 때 유용합니다. 예를 들어,feature브랜치의 커밋들을main브랜치 위로 옮길 수 있습니다. -
git rebase -i HEAD~n: 마지막 n개의 커밋을 인터랙티브 모드로 리베이스하여 병합(squash), 삭제(drop), 수정(edit) 등을 할 수 있습니다.
-
-
Reset과 Revert
-
git reset --soft <commit>: 특정 커밋으로 돌아가면서 변경 사항을 스테이징합니다. -
git reset --hard <commit>: 특정 커밋으로 돌아가 모든 변경 사항을 버립니다. -
git revert <commit>: 특정 커밋을 되돌리지만 기존 히스토리는 유지합니다. 협업 시 주로 사용됩니다. → 기존 커밋은 남겨두고, 새 커밋(revert commit)을 남겨 명시적으로 특정 커밋으로 되돌림을 남기는 방법
-
-
Stashing
-
git stash save "메시지": 작업 중인 변경 사항을 임시로 저장합니다. -
git stash pop: 마지막으로 저장한 stash를 불러옵니다. -
git stash list: 저장된 stash 목록을 확인합니다. -
git stash drop <stash@{n}>: 특정 stash를 삭제합니다.
-
-
Cherry-pick
-
git cherry-pick <commit>: 특정 커밋만 선택하여 현재 브랜치에 적용합니다. 다른 브랜치에 있는 특정 변경 사항만 반영하고 싶을 때 유용합니다.
-
-
Tagging
-
git tag <tagname>: 특정 커밋에 태그를 추가합니다. 배포 버전을 표시하는 데 유용합니다. -
git push origin <tagname>: 원격 저장소에 태그를 푸시합니다. -
git tag -d <tagname>: 로컬에서 태그를 삭제합니다. 원격에서 삭제할 경우git push origin :refs/tags/<tagname>을 사용합니다.릴리스 버전을 관리하기 위해 태그를 추가합니다.
-
태그 추가
git tag -a v1.0.0 -m "Version 1.0.0" -
태그 푸시
git push origin v1.0.0
-
-
-
이력 확인 명령어
-
git log --oneline --graph --all: 그래픽 구조로 이력을 간결하게 보여줍니다. -
git log -p: 각 커밋의 변경 내용을 함께 보여줍니다. -
git blame <file>: 각 줄이 마지막으로 수정된 커밋과 작성자를 표시합니다.
-
-
Bisect
-
git bisect start: Git Bisect는 코드를 디버깅할 때 매우 유용한 Git 도구로, 어떤 커밋에서 버그가 발생했는지 빠르게 추적할 수 있게 도와줍니다. - 범위 설정:
- 버그가 없었던 마지막 좋은 커밋을 지정하기 위해
git bisect good <커밋 해시>를 입력합니다. - 버그가 발생한 나쁜 커밋을 지정하기 위해
git bisect bad <커밋 해시>를 입력합니다.
- 버그가 없었던 마지막 좋은 커밋을 지정하기 위해
- 이진 검색 진행: 이후 Git은 중간 커밋을 체크아웃해줍니다. 문제가 발생했는지 확인한 후
git bisect good또는git bisect bad를 입력하면, Git은 다음 중간 커밋으로 이동해 점진적으로 범위를 좁혀갑니다. - 결과 확인: 버그가 발생한 커밋을 찾으면 Git에서 해당 커밋 정보를 표시해주며,
git bisect reset명령으로 원래 브랜치 상태로 돌아갑니다.
-
- [GitHub Desktop 다운로드 페이지](https://desktop.github.com/)에서 프로그램을 다운로드하고 설치하세요.
- 설치 후 GitHub 계정으로 로그인하면 GitHub에서 생성한 모든 저장소를 GitHub Desktop에서 쉽게 불러올 수 있습니다.
-
로컬 저장소 추가:
File>Add Local Repository를 선택하여 기존 로컬 Git 저장소를 추가합니다. -
새 프로젝트 시작:
File>New Repository를 선택해 새로운 Git 저장소를 로컬에서 생성할 수 있습니다. -
클론: GitHub에 있는 저장소를
Clone a Repository옵션을 사용해 로컬에 다운로드할 수 있습니다. 필요한 저장소를 선택하고 원하는 로컬 위치에 클론하세요.
- 파일 변경 추적: 변경 사항이 있을 때마다 GitHub Desktop의 왼쪽 패널에 변경된 파일 목록이 표시됩니다.
-
스테이징 및 커밋: 변경 사항이 확인되면 커밋 메시지를 작성하고
Commit to <branch>버튼을 눌러 커밋합니다. 파일을 선택하여 특정 파일만 커밋할 수도 있습니다. - Diff 확인: 각 파일을 클릭하면 변경된 내용을 확인할 수 있어 커밋 전 확인이 쉽습니다.
-
새 브랜치 생성: 화면 상단의
Current Branch드롭다운 메뉴에서New Branch를 선택해 새로운 브랜치를 생성할 수 있습니다. -
브랜치 전환:
Current Branch에서 원하는 브랜치로 쉽게 전환할 수 있습니다. -
브랜치 병합: 브랜치를 전환한 후,
Branch메뉴에서Merge into current branch옵션을 사용해 다른 브랜치를 병합할 수 있습니다.
-
Push: 로컬 커밋을 원격 저장소에 업로드하려면 상단의
Push버튼을 누르면 됩니다. -
Pull: 원격 저장소의 최신 변경 사항을 가져오려면
Fetch origin을 사용해 업데이트를 확인하고,Pull버튼을 눌러 로컬에 반영할 수 있습니다.
- GitHub Desktop은 PR을 직접 생성하지는 않지만,
Branch메뉴에서Create Pull Request를 선택하면 브라우저로 GitHub 사이트가 열리며 PR을 작성할 수 있습니다. - PR을 생성하면 GitHub의 웹 페이지에서 코드 리뷰와 피드백을 관리할 수 있습니다.
- 브랜치 병합 중 충돌이 발생할 경우, GitHub Desktop에서 충돌된 파일을 표시해 줍니다. 각 파일을 클릭해 GitHub Desktop 내에서 수정하거나, 편집기에서 열어 수동으로 해결할 수 있습니다.
- 충돌을 해결한 후
Mark as resolved를 선택해 충돌을 해소하고, 병합 커밋을 생성할 수 있습니다.
-
파일 무시하기: 프로젝트 루트 디렉토리의
.gitignore파일을 관리해 불필요한 파일들이 Git 추적에서 제외되도록 설정할 수 있습니다. - GitHub Actions와 연동: PR 생성 후 GitHub에서 GitHub Actions를 통해 자동화된 CI/CD 프로세스를 수행하도록 설정할 수 있습니다.
- 설치: [GitKraken 공식 웹사이트](https://www.gitkraken.com/)에서 설치 파일을 다운로드하고 설치합니다.
- Git 서비스 연결: GitHub, GitLab, Bitbucket 등의 Git 계정으로 로그인하거나 OAuth 인증을 통해 연결할 수 있습니다. 이후 이 계정을 통해 저장소를 쉽게 관리할 수 있습니다.
- 왼쪽 패널: 브랜치, 원격 저장소, 저장소 관리 등의 옵션이 있습니다.
- 커밋 그래프: 각 커밋이 시각적으로 표시되어 브랜치와 커밋 간의 관계를 쉽게 파악할 수 있습니다.
- 중앙 패널: 선택한 브랜치나 커밋의 변경 사항, 파일 상태 등을 확인할 수 있습니다.
-
새 저장소 생성: 상단 메뉴에서
File > New Repository를 선택하여 새 Git 저장소를 만들 수 있습니다. -
클론: GitHub, GitLab, Bitbucket 등의 저장소를 로컬에 클론하여 작업할 수 있습니다.
Clone a repo버튼을 눌러 URL을 입력하거나, 연결된 계정에서 저장소를 선택할 수 있습니다.
-
변경 사항 확인 및 커밋
- 변경한 파일이 있으면 GitKraken이 이를 자동으로 추적해 왼쪽 패널에 표시합니다.
- 파일을 클릭하여 변경 내용을 확인하고, 스테이징한 후 커밋 메시지를 작성하여 커밋할 수 있습니다.
-
브랜치 생성 및 전환
- 커밋 그래프 패널에서
+버튼을 클릭해 새 브랜치를 생성하거나, 원하는 브랜치를 오른쪽 클릭하여 전환할 수 있습니다. - 로컬에서 브랜치를 생성 후
Push버튼을 눌러 원격 저장소에도 브랜치를 추가할 수 있습니다.
- 커밋 그래프 패널에서
-
병합 및 Rebase
- 두 브랜치를 병합하려면 브랜치를 선택한 후
Merge버튼을 클릭합니다. - Rebase를 수행할 수도 있으며, 병합 충돌이 발생하면 GitKraken의 충돌 해결 도구를 사용해 편리하게 수정할 수 있습니다.
- 두 브랜치를 병합하려면 브랜치를 선택한 후
-
PR 생성: GitHub, GitLab 등의 플랫폼에서 PR을 생성할 수 있습니다. GitKraken에서
Open Pull Request를 선택하면 해당 브라우저로 이동하여 PR을 생성하고 코드 리뷰를 요청할 수 있습니다. - PR 확인 및 병합: PR이 승인되면 GitKraken에서 병합을 수행할 수 있습니다. 리뷰 과정을 GitKraken과 GitHub 웹 페이지에서 병행하여 사용할 수 있습니다.
-
Push와 Pull
- 로컬 커밋을 원격으로 푸시하려면 상단의
Push버튼을 사용하고, 원격 저장소의 최신 커밋을 가져오려면Pull을 선택하면 됩니다.
- 로컬 커밋을 원격으로 푸시하려면 상단의
-
원격 브랜치 관리
-
Remotes섹션에서 원격 브랜치를 확인하고 로컬에 가져올 수 있습니다. 원격에서 필요 없는 브랜치는Delete를 선택해 관리할 수 있습니다.
-
-
Stash 사용
- GitKraken에서는
Stash를 생성해 작업 중인 변경 사항을 임시로 저장할 수 있습니다. 필요할 때Pop Stash를 눌러 변경 사항을 복원할 수 있습니다.
- GitKraken에서는
-
서브모듈(Submodule) 관리
- 서브모듈을 추가해 다른 Git 저장소를 현재 프로젝트 내에서 관리할 수 있습니다. 이 기능은 외부 라이브러리를 프로젝트에 포함할 때 유용합니다.
-
Git Hooks 설정
- GitKraken은 커밋 전후에 특정 작업을 자동으로 수행할 수 있는 Git Hooks를 관리할 수 있습니다. 예를 들어, 커밋 전에 코드 품질 검사를 자동화하는 등의 작업을 설정할 수 있습니다.
석영님 그 플로우 나오는 화면 어떻게 보나요? → 크라켄


