Branching

프로젝트에 코드를 추가하고 싶지만 제대로 작동하는지 확실하지 않거나, 다른 사람과 프로젝트를 공동으로 작업하고 있으며, 작업이 뒤섞이는 것을 원하지 않는 경우, 다른 branch에서 작업하는 것이 좋습니다.

Git 리포지터리에 브랜치를 만들면, 브랜칭 할 때 해당 파일의 복사본을 만듭니다. 메인 브랜치나 다른 브랜치에 영향을 주지 않고 브랜치의 코드로 원하는 것을 자유롭게 할 수 있습니다. 변경사항을 메인 코드베이스로 가져올 준비가 되면, 프로젝트에서 사용되는 기본 브랜치(master와 같은)에 브랜치를 병합할 수 있습니다.

새 브랜치는 default branch와 구별하기 위해 종종 feature branch라고 합니다.

브랜치 생성

새로운 기능 브랜치를 생성하고 master 브랜치에 영향을 주지 않고 작업하려면 :

git checkout -b <name-of-branch>

Git은 브랜치 이름에 빈 공간과 특수 문자를 허용하지 않으므로, 소문자, 숫자, 하이픈(-) 및 밑줄(_)만 사용합니다. 중복이 발생할 수 있으므로 대문자를 사용하지 마십시오.

master 브랜치로 전환

Git으로 작업할 때 항상 브랜치에 있습니다. 메인 브랜치는 master 브랜치이지만, 동일한 명령을 사용하여 master를 브랜치 이름으로 변경하여 다른 브랜치로 전환할 수 있습니다.

git checkout master

기존 브랜치에서 작업

작업할 수 있도록 기존 브랜치로 전환하려면 :

git checkout <name-of-branch>

변경사항 보기

무슨 일이 일어나고 있는지와 변경 상태를 아는 것이 중요합니다. 파일/폴더를 추가, 변경 또는 삭제할 때, Git은 이에 대해 알고 있습니다. 변경 상태를 확인하려면 :

git status

차이점 보기

로컬 unstaged 변경사항과 clone 하거나 pull 한 리포지터리 버전 간의 차이점을 보려면, 다음을 입력하십시오.

git diff

로컬 변경사항 추가 및 커밋

git status를 입력하면 로컬 변경사항이 빨간색으로 표시됩니다. 이러한 변경사항은 새로운, 수정된 또는 삭제된 파일/폴더일 수 있습니다. 커밋을 위해 로컬 파일/폴더를 첫 번째 단계 (준비)하려면 git add을 사용합니다. 그런 다음, git commit을 사용하여 staged 파일을 커밋(저장) 합니다.

git add <file-name OR folder-name>
git commit -m "COMMENT TO DESCRIBE THE INTENTION OF THE COMMIT"

커밋할 모든 변경사항 추가

모든 로컬 변경사항을 빠르게 추가하고 커밋(저장) 하려면 :

git add .
git commit -m "COMMENT TO DESCRIBE THE INTENTION OF THE COMMIT"

참고 : . 문자는 현재 디렉토리와 모든 하위 디렉토리에 있는 모든 파일 변경사항을 의미합니다.

GitLab에 변경사항 보내기

모든 로컬 커밋(저장된 변경사항)을 원격 저장소로 푸시하려면 :

git push <remote> <name-of-branch>

예를 들어, 로컬 커밋을 origin remote의 master 브랜치에 푸시하려면 다음을 수행합니다.

git push origin master

경우에 따라, Git에서 리포지터리로 푸시하는 것을 허용하지 않으므로, 강제로 업데이트해야 합니다.

참고 : 포크에서 업스트림 리포지터리로의 병합 요청을 생성하려면 forking workflow를 참조하세요.

브랜치의 모든 변경사항 삭제

staging 영역에 추가되지 않은 브랜치의 모든 로컬 변경사항을 삭제하고 unstaged 파일/폴더를 그대로 두려면 다음을 입력합니다.

git checkout .

이렇게 하면 파일 자체가 아니라 파일에 대한 변경사항이 제거된다는 점에 유의하십시오.

staging 영역에 추가된 모든 변경사항을 준비 해제

가장 최근에 추가되었지만 커밋되지 않은 파일/폴더 변경사항을 실행 취소하려면 :

git reset .

가장 최근 커밋 실행 취소

가장 최근 커밋을 취소하려면 다음을 입력합니다.

git reset HEAD~1

이렇게 하면 변경된 파일과 폴더가 로컬 저장소에서 준비되지 않은 상태로 유지됩니다.

주의 : 특히 이미 원격 저장소에 푸시한 경우, Git 커밋은 일반적으로 되돌려서는 안 됩니다. 커밋을 실행 취소할 수 있지만, 가장 좋은 방법은 신중하게 작업하여 상황을 완전히 피하는 것입니다.

브랜치를 master 브랜치와 병합

브랜치의 모든 변경사항을 master 브랜치에 영구적으로 추가할 준비가 되면 다음 두 가지를 함께하여 merge 합니다.

git checkout <name-of-branch>
git merge master