Skip to content

Git 학습공유

Forest Lee edited this page Dec 3, 2024 · 1 revision

Git

Git 워크플로우 개념

  1. Git Flow

    Git Flow는 maindevelop 브랜치를 기본으로 하여 개발 흐름을 관리하는 방식입니다. 기능, 릴리스, 핫픽스 등 각각의 브랜치 유형이 있으며, 주로 릴리스가 일정한 주기로 있는 프로젝트에 적합합니다.

    • feature/*: 새로운 기능 개발을 위해 develop 브랜치에서 파생됩니다.
    • release/*: 릴리스 준비를 위해 develop에서 파생되어 최종 수정 작업이 이루어집니다.
    • hotfix/*: 긴급한 버그 수정을 위해 main에서 파생됩니다.
  2. GitHub Flow

    GitHub Flow는 단순히 main 브랜치를 중심으로 기능을 브랜치 단위로 관리하는 방식입니다. 기능이 완료되면 바로 main에 병합하여 빠른 배포가 가능합니다.

    • main 브랜치에 병합 전에 Pull Request를 활용해 코드 리뷰가 가능합니다.
  3. GitLab Flow

    GitLab Flow는 Git Flow와 GitHub Flow를 결합한 형태로, 다양한 배포 환경에 맞춰 여러 main/production 브랜치를 설정해 배포 환경을 관리할 수 있습니다.

중급/고급 Git 명령어

  1. 브랜치 관리 명령어

    • git branch -d <branch>: 로컬에서 브랜치를 삭제합니다. 병합되지 않은 브랜치라면 D 플래그를 사용해 강제로 삭제할 수 있습니다.
    • git push origin --delete <branch>: 원격에서 브랜치를 삭제합니다.
    • git switch <branch>: 브랜치를 전환합니다. checkout의 대안이며, 명확한 전환 명령어로 많이 사용됩니다.
  2. Rebasing

    • git rebase <branch>: 커밋 히스토리를 깔끔하게 정리할 때 유용합니다. 예를 들어, feature 브랜치의 커밋들을 main 브랜치 위로 옮길 수 있습니다.
    • git rebase -i HEAD~n: 마지막 n개의 커밋을 인터랙티브 모드로 리베이스하여 병합(squash), 삭제(drop), 수정(edit) 등을 할 수 있습니다.
  3. Reset과 Revert

    • git reset --soft <commit>: 특정 커밋으로 돌아가면서 변경 사항을 스테이징합니다.
    • git reset --hard <commit>: 특정 커밋으로 돌아가 모든 변경 사항을 버립니다.
    • git revert <commit>: 특정 커밋을 되돌리지만 기존 히스토리는 유지합니다. 협업 시 주로 사용됩니다. → 기존 커밋은 남겨두고, 새 커밋(revert commit)을 남겨 명시적으로 특정 커밋으로 되돌림을 남기는 방법
  4. Stashing

    • git stash save "메시지": 작업 중인 변경 사항을 임시로 저장합니다.
    • git stash pop: 마지막으로 저장한 stash를 불러옵니다.
    • git stash list: 저장된 stash 목록을 확인합니다.
    • git stash drop <stash@{n}>: 특정 stash를 삭제합니다.
  5. Cherry-pick

    • git cherry-pick <commit>: 특정 커밋만 선택하여 현재 브랜치에 적용합니다. 다른 브랜치에 있는 특정 변경 사항만 반영하고 싶을 때 유용합니다.
  6. Tagging

    • git tag <tagname>: 특정 커밋에 태그를 추가합니다. 배포 버전을 표시하는 데 유용합니다.

    • git push origin <tagname>: 원격 저장소에 태그를 푸시합니다.

    • git tag -d <tagname>: 로컬에서 태그를 삭제합니다. 원격에서 삭제할 경우 git push origin :refs/tags/<tagname>을 사용합니다.

      E. Tagging

      릴리스 버전을 관리하기 위해 태그를 추가합니다.

      1. 태그 추가

        git tag -a v1.0.0 -m "Version 1.0.0"
      2. 태그 푸시

        git push origin v1.0.0
  7. 이력 확인 명령어

    • git log --oneline --graph --all: 그래픽 구조로 이력을 간결하게 보여줍니다.
    • git log -p: 각 커밋의 변경 내용을 함께 보여줍니다.
    • git blame <file>: 각 줄이 마지막으로 수정된 커밋과 작성자를 표시합니다.
  8. 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

1. GitHub Desktop 설치 및 설정

2. 프로젝트 시작 및 클론

  • 로컬 저장소 추가: File > Add Local Repository를 선택하여 기존 로컬 Git 저장소를 추가합니다.
  • 새 프로젝트 시작: File > New Repository를 선택해 새로운 Git 저장소를 로컬에서 생성할 수 있습니다.
  • 클론: GitHub에 있는 저장소를 Clone a Repository 옵션을 사용해 로컬에 다운로드할 수 있습니다. 필요한 저장소를 선택하고 원하는 로컬 위치에 클론하세요.

3. 커밋 작업하기

  • 파일 변경 추적: 변경 사항이 있을 때마다 GitHub Desktop의 왼쪽 패널에 변경된 파일 목록이 표시됩니다.
  • 스테이징 및 커밋: 변경 사항이 확인되면 커밋 메시지를 작성하고 Commit to <branch> 버튼을 눌러 커밋합니다. 파일을 선택하여 특정 파일만 커밋할 수도 있습니다.
  • Diff 확인: 각 파일을 클릭하면 변경된 내용을 확인할 수 있어 커밋 전 확인이 쉽습니다.

4. 브랜치 관리

  • 새 브랜치 생성: 화면 상단의 Current Branch 드롭다운 메뉴에서 New Branch를 선택해 새로운 브랜치를 생성할 수 있습니다.
  • 브랜치 전환: Current Branch에서 원하는 브랜치로 쉽게 전환할 수 있습니다.
  • 브랜치 병합: 브랜치를 전환한 후, Branch 메뉴에서 Merge into current branch 옵션을 사용해 다른 브랜치를 병합할 수 있습니다.

5. Pull과 Push

  • Push: 로컬 커밋을 원격 저장소에 업로드하려면 상단의 Push 버튼을 누르면 됩니다.
  • Pull: 원격 저장소의 최신 변경 사항을 가져오려면 Fetch origin을 사용해 업데이트를 확인하고, Pull 버튼을 눌러 로컬에 반영할 수 있습니다.

6. 풀 리퀘스트(PR)

  • GitHub Desktop은 PR을 직접 생성하지는 않지만, Branch 메뉴에서 Create Pull Request를 선택하면 브라우저로 GitHub 사이트가 열리며 PR을 작성할 수 있습니다.
  • PR을 생성하면 GitHub의 웹 페이지에서 코드 리뷰와 피드백을 관리할 수 있습니다.

7. Conflict 관리

  • 브랜치 병합 중 충돌이 발생할 경우, GitHub Desktop에서 충돌된 파일을 표시해 줍니다. 각 파일을 클릭해 GitHub Desktop 내에서 수정하거나, 편집기에서 열어 수동으로 해결할 수 있습니다.
  • 충돌을 해결한 후 Mark as resolved를 선택해 충돌을 해소하고, 병합 커밋을 생성할 수 있습니다.

8. GitHub Desktop에서 유용한 추가 기능

  • 파일 무시하기: 프로젝트 루트 디렉토리의 .gitignore 파일을 관리해 불필요한 파일들이 Git 추적에서 제외되도록 설정할 수 있습니다.
  • GitHub Actions와 연동: PR 생성 후 GitHub에서 GitHub Actions를 통해 자동화된 CI/CD 프로세스를 수행하도록 설정할 수 있습니다.

Git Kraken

1. GitKraken 설치 및 설정

  • 설치: [GitKraken 공식 웹사이트](https://www.gitkraken.com/)에서 설치 파일을 다운로드하고 설치합니다.
  • Git 서비스 연결: GitHub, GitLab, Bitbucket 등의 Git 계정으로 로그인하거나 OAuth 인증을 통해 연결할 수 있습니다. 이후 이 계정을 통해 저장소를 쉽게 관리할 수 있습니다.

2. GitKraken 기본 인터페이스

  • 왼쪽 패널: 브랜치, 원격 저장소, 저장소 관리 등의 옵션이 있습니다.
  • 커밋 그래프: 각 커밋이 시각적으로 표시되어 브랜치와 커밋 간의 관계를 쉽게 파악할 수 있습니다.
  • 중앙 패널: 선택한 브랜치나 커밋의 변경 사항, 파일 상태 등을 확인할 수 있습니다.

3. 프로젝트 시작

  • 새 저장소 생성: 상단 메뉴에서 File > New Repository를 선택하여 새 Git 저장소를 만들 수 있습니다.
  • 클론: GitHub, GitLab, Bitbucket 등의 저장소를 로컬에 클론하여 작업할 수 있습니다. Clone a repo 버튼을 눌러 URL을 입력하거나, 연결된 계정에서 저장소를 선택할 수 있습니다.

4. GitKraken에서 커밋 및 브랜치 관리

  1. 변경 사항 확인 및 커밋
    • 변경한 파일이 있으면 GitKraken이 이를 자동으로 추적해 왼쪽 패널에 표시합니다.
    • 파일을 클릭하여 변경 내용을 확인하고, 스테이징한 후 커밋 메시지를 작성하여 커밋할 수 있습니다.
  2. 브랜치 생성 및 전환
    • 커밋 그래프 패널에서 + 버튼을 클릭해 새 브랜치를 생성하거나, 원하는 브랜치를 오른쪽 클릭하여 전환할 수 있습니다.
    • 로컬에서 브랜치를 생성 후 Push 버튼을 눌러 원격 저장소에도 브랜치를 추가할 수 있습니다.
  3. 병합 및 Rebase
    • 두 브랜치를 병합하려면 브랜치를 선택한 후 Merge 버튼을 클릭합니다.
    • Rebase를 수행할 수도 있으며, 병합 충돌이 발생하면 GitKraken의 충돌 해결 도구를 사용해 편리하게 수정할 수 있습니다.

5. Pull Request(PR) 관리

  • PR 생성: GitHub, GitLab 등의 플랫폼에서 PR을 생성할 수 있습니다. GitKraken에서 Open Pull Request를 선택하면 해당 브라우저로 이동하여 PR을 생성하고 코드 리뷰를 요청할 수 있습니다.
  • PR 확인 및 병합: PR이 승인되면 GitKraken에서 병합을 수행할 수 있습니다. 리뷰 과정을 GitKraken과 GitHub 웹 페이지에서 병행하여 사용할 수 있습니다.

6. 원격 작업

  1. Push와 Pull
    • 로컬 커밋을 원격으로 푸시하려면 상단의 Push 버튼을 사용하고, 원격 저장소의 최신 커밋을 가져오려면 Pull을 선택하면 됩니다.
  2. 원격 브랜치 관리
    • Remotes 섹션에서 원격 브랜치를 확인하고 로컬에 가져올 수 있습니다. 원격에서 필요 없는 브랜치는 Delete를 선택해 관리할 수 있습니다.

7. GitKraken의 고급 기능

  1. Stash 사용
    • GitKraken에서는 Stash를 생성해 작업 중인 변경 사항을 임시로 저장할 수 있습니다. 필요할 때 Pop Stash를 눌러 변경 사항을 복원할 수 있습니다.
  2. 서브모듈(Submodule) 관리
    • 서브모듈을 추가해 다른 Git 저장소를 현재 프로젝트 내에서 관리할 수 있습니다. 이 기능은 외부 라이브러리를 프로젝트에 포함할 때 유용합니다.
  3. Git Hooks 설정
    • GitKraken은 커밋 전후에 특정 작업을 자동으로 수행할 수 있는 Git Hooks를 관리할 수 있습니다. 예를 들어, 커밋 전에 코드 품질 검사를 자동화하는 등의 작업을 설정할 수 있습니다.

궁금한 점

석영님 그 플로우 나오는 화면 어떻게 보나요? → 크라켄

image.png

image.png

스크린샷 2024-11-06 오후 1.48.58.png

차은우원빈현빈장원영의

개발 스토리

✏️ 기획


✔️ 규칙


📌 1주차 회의록

데일리 스크럼

회의록

회고

📌 2주차 회의록

데일리 스크럼

회의록

회고

📌 3주차 회의록

데일리 스크럼

회의록

회고

📌 4주차 회의록

데일리 스크럼

회의록

회고

📌 5주차 회의록

데일리 스크럼

회의록

회고

📌 6주차 회의록

데일리 스크럼

회의록

회고


🔥 트러블슈팅

Clone this wiki locally