Stage, commit, and push changes
파일을 변경할 때 Git은 변경 사항을 체크아웃된 브랜치의 가장 최근 버전에 대해 추적합니다. Git 명령을 사용하여 변경 사항을 검토하고 브랜치에 커밋하고 GitLab으로 작업을 푸시할 수 있습니다.
변경 사항 추가 및 커밋
브랜치에 변경 사항을 기록할 준비가 되면 커밋할 수 있습니다. 커밋에는 변경 사항에 대한 정보를 기록하는 코멘트가 포함되며 보통 새로운 브랜치의 끝이 됩니다.
Git은 파일을 이동, 변경 또는 삭제한 내용을 커밋에 자동으로 포함시키지 않습니다. 이는 실수로 변경 사항이나 파일을 포함시키는 것을 방지합니다. 커밋에 변경 사항을 포함시키려면 git add
로 스테이징해야 합니다.
변경 사항을 스테이징하고 커밋하려면:
-
귀하의 저장소에서 추가하려는 각 파일 또는 디렉토리에 대해
git add <파일 이름 또는 경로>
를 실행합니다.현재 작업 디렉토리의 모든 파일을 스테이징하려면
git add .
를 실행합니다. -
파일이 스테이징되었는지 확인합니다:
git status
파일이 초록색으로 표시됩니다.
-
스테이징된 파일을 커밋합니다:
git commit -m "<변경 사항을 설명하는 코멘트>"
변경 사항이 브랜치에 커밋됩니다.
모든 변경 사항 커밋
모든 변경 사항을 스테이징하고 한 번에 커밋할 수 있습니다:
git commit -a -m "<변경 사항을 설명하는 코멘트>"
커밋에 원격 저장소에 기록하고 싶지 않은 파일이 포함되지 않도록 주의하세요. 항상 변경 사항을 커밋하기 전에 로컬 저장소의 상태를 확인하세요.
변경 사항 GitLab으로 전송
모든 로컬 변경 사항을 원격 저장소로 푸시하려면:
git push <원격 저장소> <브랜치 이름>
예를 들어, 로컬 커밋을 origin
원격 저장소의 main
브랜치로 푸시하려면:
git push origin main
가끔 Git은 저장소로 푸시할 수 없도록 합니다. 대신 강제 업데이트를 해야 할 수 있습니다.
푸시 옵션
브랜치로 변경 사항을 푸시할 때, 클라이언트 측 Git 푸시 옵션을 사용할 수 있습니다. Git 2.10 이상에서는 Git 푸시 옵션을 사용하여 다음을 수행할 수 있습니다:
Git 2.18 이상에서는 긴 형식(--push-option
) 또는 짧은 형식(-o
)을 사용할 수 있습니다:
git push -o <푸시_옵션>
Git 2.10에서 2.17까지는 반드시 긴 형식을 사용해야 합니다:
git push --push-option=<푸시_옵션>
서버 측 제어 및 모범 사례 강제 수행을 위해서는 푸시 규칙 및 서버 후크를 참조하세요.
GitLab CI/CD를 위한 푸시 옵션
푸시 옵션을 사용하여 CI/CD 파이프라인 건너띄기 또는 CI/CD 변수 전달할 수 있습니다.
참고: 푸시 옵션은 병합 요청 파이프라인에는 사용할 수 없습니다. 자세한 정보는 이슈 373212를 참조하세요.
푸시 옵션 | 설명 | 예시 |
---|---|---|
ci.skip
| 최신 푸시에 대한 CI/CD 파이프라인을 생성하지 않습니다. 브랜치 파이프라인만 건너뜁니다. 병합 요청 파이프라인은 건너뛰지 않습니다. 이는 Jenkins와 같은 CI/CD 통합에는 적용되지 않습니다. | git push -o ci.skip
|
ci.variable="<이름>=<값>"
| CI/CD 변수를 생성한 경우 CI/CD 파이프라인에 제공합니다. 브랜치 파이프라인만에 적용되며, 병합 요청 파이프라인에는 적용되지 않습니다. | git push -o ci.variable="MAX_RETRIES=10" -o ci.variable="MAX_TIME=600"
|
통합을 위한 푸시 옵션
푸시 옵션을 사용하여 통합 CI/CD 파이프라인을 건너뛰거나 무시할 수 있습니다.
푸시 옵션 | 설명 | 예시 |
---|---|---|
integrations.skip_ci
| Atlassian Bamboo, Buildkite, Drone, Jenkins, JetBrains TeamCity 등과 같은 CI/CD 통합을 위한 푸시 이벤트를 건너뜁니다. GitLab 16.2에서 소개되었습니다. | git push -o integrations.skip_ci
|
병합 요청을 위한 푸시 옵션
병합 요청에 대한 Git 푸시 옵션은 변경 사항을 푸시하는 동안 병합 요청 작업을 수행할 수 있습니다:
푸시 옵션 | 설명 |
---|---|
merge_request.create
| 푸시한 브랜치에 대한 새로운 병합 요청을 생성합니다. |
merge_request.target=<브랜치_이름>
| 병합 요청의 대상을 특정 브랜치로 설정합니다. 예: git push -o merge_request.target=branch_name .
|
merge_request.target_project=<프로젝트>
| 병합 요청의 대상을 특정 상위 프로젝트로 설정합니다. 예: git push -o merge_request.target_project=path/to/project . GitLab 16.6에서 소개되었습니다.
|
merge_request.merge_when_pipeline_succeeds
| 병합 요청을 파이프라인이 성공했을 때 병합하도록 설정합니다. |
merge_request.remove_source_branch
| 병합 시 소스 브랜치를 제거하도록 설정합니다. |
merge_request.squash
| 모든 커밋을 병합 시 단일 커밋으로 통합하도록 설정합니다. GitLab 17.2에서 소개되었습니다. |
merge_request.title="<제목>"
| 병합 요청의 제목을 설정합니다. 예: git push -o merge_request.title="원하는 제목" .
|
merge_request.description="<설명>"
| 병합 요청의 설명을 설정합니다. 예: git push -o merge_request.description="원하는 설명" .
|
merge_request.draft
| 병합 요청을 임시로 설정합니다. 예: git push -o merge_request.draft . GitLab 15.0에서 소개되었습니다.
|
merge_request.milestone="<마일스톤>"
| 병합 요청의 마일스톤을 설정합니다. 예: git push -o merge_request.milestone="3.0" .
|
merge_request.label="<라벨>"
| 병합 요청에 라벨을 추가합니다. 라벨이 없는 경우 생성됩니다. 예: 두 개의 라벨을 추가하는 경우: git push -o merge_request.label="label1" -o merge_request.label="label2" .
|
merge_request.unlabel="<라벨>"
| 병합 요청에서 라벨을 제거합니다. 두 개의 라벨의 경우: git push -o merge_request.unlabel="label1" -o merge_request.unlabel="label2" .
|
merge_request.assign="<사용자>"
| 병합 요청에 사용자를 할당합니다. 사용자 이름 또는 사용자 ID를 사용합니다. 두 명의 사용자를 할당하는 경우: git push -o merge_request.assign="user1" -o merge_request.assign="user2" . 사용자명 지원은 GitLab 15.5에서 추가되었습니다.
|
merge_request.unassign="<사용자>"
| 병합 요청에서 할당된 사용자를 제거합니다. 사용자명 또는 사용자 ID를 사용합니다. 두 명의 사용자의 경우: git push -o merge_request.unassign="user1" -o merge_request.unassign="user2" . 사용자명 지원은 GitLab 15.5에서 추가되었습니다.
|
시크릿 푸시 보호를 위한 푸시 옵션
시크릿 푸시 보호를 건너뛰기 위해 푸시 옵션을 사용할 수 있습니다.
푸시 옵션 | 설명 | 예시 |
---|---|---|
secret_push_protection.skip_all
| 이 푸시에서 커밋에 대한 시크릿 푸시 보호를 수행하지 않습니다. | git push -o secret_push_protection.skip_all
|
GitGuardian 통합을 위한 푸시 옵션
GitGuardian 시크릿 탐지를 건너뛰기 위해 동일한 시크릿 푸시 보호 푸시 옵션을 사용할 수 있습니다.
푸시 옵션 | 설명 | 예시 |
---|---|---|
secret_detection.skip_all
| GitLab 17.2에서 사용이 중단되었습니다. 대신 secret_push_protection.skip_all 을 사용하세요.
| git push -o secret_detection.skip_all
|
secret_push_protection.skip_all
| GitGuardian 시크릿 탐지를 수행하지 않습니다. | git push -o secret_push_protection.skip_all
|
푸시 옵션 형식
푸시 옵션이 공백을 포함하는 텍스트를 필요로 하는 경우, 텍스트를 이중 인용부호("
)로 묶습니다. 공백이 없으면 인용부호를 생략할 수 있습니다. 몇 가지 예시:
git push -o merge_request.label="Label with spaces"
git push -o merge_request.label=Label-with-no-spaces
여러 작업을 한 번에 수행하기 위해 푸시 옵션을 결합하려면, 여러 -o
(또는 --push-option
) 플래그를 사용합니다. 이 명령은 새로운 머지 요청을 생성하고, 브랜치를 대상으로 지정하며, 자동 머지를 설정합니다:
git push -o merge_request.create -o merge_request.target=my-target-branch -o merge_request.merge_when_pipeline_succeeds
푸시를 위한 Git 별칭 생성
Git 명령에 푸시 옵션을 추가하면 매우 긴 명령이 생성될 수 있습니다. 만약 동일한 푸시 옵션을 자주 사용한다면, 해당 옵션에 대한 Git 별칭을 생성하세요. Git 별칭은 긴 Git 명령에 대한 명령 줄 바로 가기입니다.
파이프라인 성공 시 머지 푸시 옵션에 대한 Git 별칭을 생성하고 사용하는 방법:
-
터미널 창에서 이 명령을 실행합니다:
git config --global alias.mwps "push -o merge_request.create -o merge_request.target=main -o merge_request.merge_when_pipeline_succeeds"
-
기본 브랜치(
main
)를 대상으로 하는 로컬 브랜치를 자동으로 머지하는 별칭을 사용하여 푸시하려면, 이 명령을 실행하세요:git mwps origin <로컬-브랜치-이름>