Git Commit: 마스터 클래스

0
239

Git Commit: 마스터 클래스
fatmawati achmad zaenuri/Shutterstock.com
Git 커밋 명령은 작업 디렉터리의 변경 사항 복사본을 Git 리포지토리에 저장합니다. 그러나 기존 커밋을 수정하고 커밋을 되돌리는 데에도 사용할 수 있습니다.

모든 버전 제어 시스템의 기본 요구 사항은 서로 다른 버전의 파일을 저장하는 것입니다. Git에서 이를 수행하는 명령은 다음과 같습니다. commit. 여기 당신이 알아야 할 모든 것이 있습니다.

목차

Git에서 커밋이란 무엇입니까?
커밋 명령 구성
커밋 명령 사용
기본 커밋
자동 스테이징 파일
스테이징과 커밋을 동시에
다른 브랜치에 커밋
커밋 변경
커밋에서 변경 사항 제거
전체 커밋 되돌리기
Git 스위스 아미 나이프

Git에서 커밋이란 무엇입니까?

커밋은 개발 기록을 구성하는 프로젝트의 수명 주기 동안 만들어진 일련의 스냅샷입니다. 커밋을 통해 과거의 다른 시점에 있던 프로젝트 버전을 추출할 수 있습니다. 그게 왜 중요한가요?

버전 제어 시스템(VCS)은 소프트웨어 소스 코드 및 개발 프로젝트와 함께 가장 일반적으로 사용됩니다. 그러나 책의 챕터가 포함된 Markdown 파일과 같은 모든 텍스트 파일 모음과 함께 성공적으로 사용할 수 있습니다.

프로젝트 디렉토리의 모든 파일이 VCS에서 처리되는 것을 원하지 않을 수 있으므로 버전 제어를 원하는 파일을 지정할 수 있어야 합니다. 이렇게 하면 프로젝트의 버전 제어 보기에 추가됩니다. 변경 사항이 있는지 모니터링됩니다.

이를 달성하는 또 다른 방법은 무시 목록을 사용하는 것입니다. 이것은 항상 무시해야 하는 파일, 디렉토리 또는 파일 유형을 Git에 알려줍니다.

시간이 지남에 따라 새 파일이 프로젝트에 추가됨에 따라 일부는 버전 제어 시스템에 추가되어야 합니다. Git에서는 다음이 처리합니다. add 명령. 사실, add 명령은 우리가 보게 될 이중 서비스를 수행합니다.

프로젝트에 적용된 변경 내역을 유지하기 위해 주기적으로 Git에 프로젝트 상태의 스냅샷을 저장하도록 요청할 것입니다. commit 명령. 이곳은 add 명령이 작업 흐름에 다시 나타납니다. 우리는 add Git에게 알려주는 명령어 변경 스냅샷에 포함하고 싶은 파일. 그런 다음 우리는 commit 스냅샷을 생성하도록 Git에 지시합니다.

커밋 명령 구성

커밋에 대한 정보가 함께 저장되므로 커밋을 만든 사람, 커밋 시간 및 커밋 내용을 항상 알 수 있습니다. 이 메타데이터 중 일부는 커밋 메시지와 같이 커밋 시 캡처됩니다.

개발팀 구성원의 ID와 관련된 메타데이터는 동일한 정보가 반복적으로 제공되는 것을 방지하기 위해 각 사용자가 구성할 수 있습니다.

컴퓨터의 모든 리포지토리에 대해 전역적으로 이름을 설정하려면 이 명령을 사용하십시오.

git config --global user.name "Dave McKay"

전역 Git 사용자 이름 설정

이름이 설정되었는지 확인하려면 이 명령을 사용하십시오.

git config --global user.name

Git 전역 사용자 이름 확인

특정 리포지토리에서 다른 이름을 사용해야 하는 경우 프로젝트의 디렉터리로 변경하고 --global 옵션.

git config user.name "McKay, David"
git config user.name

리포지토리별 Git 사용자 이름 설정

이제 이 리포지토리에 대한 다른 기본 사용자 이름이 있으며 전역 이름은 여전히 ​​다른 리포지토리에 사용됩니다.

비슷한 방식으로 다음을 포함하거나 생략하여 전역적으로 또는 단일 리포지토리에 대한 이메일 주소를 설정할 수 있습니다. --global 옵션.

git config user.email "dave@phony-domain.com"
git config --global user.email "dave@fake-domain.com"
git config user.email
git config --global user.email

전역 및 리포지토리별 Git 기본 사용자 이메일 주소 설정

이러한 설정은 구성 파일에 보관됩니다. 전역 Git 설정은 “~/.gitconfig”에 보관되며 리포지토리별 설정은 리포지토리의 “.git/config” 파일에 보관됩니다.

그만큼 commit 명령은 작동할 때 이러한 값을 참조하고 사용합니다.

커밋 명령 사용

의 기본 사용법 commit 명령은 인덱스로 알려진 스테이징 영역에 있는 파일을 가져와 저장소의 현재 분기에 커밋으로 저장하는 것입니다.

기본 커밋

파일이 변경된 프로젝트가 있습니다. 우리는 add 명령을 실행하여 파일을 준비한 다음 커밋합니다. 우리는 -m (커밋 메시지) 옵션을 사용하여 변경 목적에 대한 간단한 설명을 제공할 수 있습니다. 이 옵션을 사용하지 않으면 커밋이 발생할 때 커밋 메시지를 묻는 메시지가 표시됩니다. 명령줄에 하나를 추가하는 것이 더 편리합니다.

git add jibber.c
git commit -m "Updated help text"

단일 파일 준비 및 커밋

우리가 사용하는 경우 git log 명령을 사용하면 가장 최근 커밋이 목록 맨 위에 오도록 커밋 세부 정보를 연대순으로 검토할 수 있습니다.

git log

Git 리포지토리 로그 확인

커밋은 다음에 표시됩니다. less.

Git 로그 상단의 최신 커밋

커밋에는 이전에 제공한 이름과 이메일 주소로 태그가 지정되었으며 커밋 메시지도 기록됩니다.

자동 스테이징 파일

많은 파일을 준비하는 데 약간의 시간이 걸릴 수 있습니다. 다른 접근 방식은 다음을 사용하는 것입니다. -A (모두) 옵션 add.

이것은 자동으로 모든 수정 현재 모든 파일과 함께 추적되지 않은 파일. 추적되지 않은 파일의 스테이징은 “.gitignore” 파일의 설정을 따릅니다. Git은 포함하고 싶지 않다고 말한 파일을 준비하지 않습니다. 마지막으로 더 이상 작업 디렉토리에 없는 인덱스의 파일은 제거됨 색인에서.

분명히, -A 옵션을 사용하면 한 번에 많은 일이 발생할 수 있습니다. 그만큼 --dry-run 옵션을 사용하면 변경 사항을 실제로 수행하지 않고 미리 볼 수 있습니다.

git add -A --dry-run

--dry-run을 사용하여 스테이징 및 언스테이징될 파일 미리보기

이 예에서는 두 개의 수정된 기존 파일과 두 개의 새 파일을 준비합니다. 계속해서 다음을 사용하겠습니다. -A 옵션을 사용하기 전에 commit 명령.

git add -A
git commit -m "Enhanced parsing"

add -A 옵션을 사용한 후 변경 및 새로 생성된 파일 커밋

총 4개의 파일이 변경된 것을 확인할 수 있습니다. 그 중 두 개는 나열된 새로 생성된 파일입니다.

스테이징과 커밋을 동시에

그만큼 commit 명령에 소문자가 있습니다. -a (모두) 옵션. 이것은 한 단계에서 파일의 준비 및 커밋을 수행합니다.

그만큼 commit -a 옵션 단계 및 커밋 수정 기존의 파일 및 제거하다 작업 디렉토리에서 제거된 경우 색인에서 파일을 제거하십시오. 그것 하지 않는다 추적되지 않은 파일을 자동으로 준비합니다.

처럼 add 명령, 커밋 명령에는 --dry-run 실행하기 전에 작업을 미리 볼 수 있는 옵션입니다.

git commit -a --dry-run

커밋 -a 옵션을 사용하여 변경 사항을 수행하지 않고 미리보기

이제 명령을 실행해 봅시다.

git commit -a --dry-run

commit -a 옵션을 사용하여 한 단계에서 준비 및 커밋

파일은 우리를 위해 준비되고 커밋됩니다.

다른 브랜치에 커밋

작업 디렉토리의 파일을 일부 변경한 후 올바른 분기를 체크아웃하지 않았다는 것을 알게 된 경우 현재 분기에 영향을 주지 않고 변경 사항을 올바른 분기에 커밋해야 합니다.

Git에는 다른 브랜치에 커밋하기 위한 명령이 없습니다. 하지만 약간의 Git 손재주로 이 상황을 바로잡을 수 있습니다.

Git을 사용하겠습니다. stash 변경 사항을 복사하라는 명령입니다. 그런 다음 올바른 분기를 확인하고 숨김에서 변경 사항을 적용합니다. 숨겨진 변경 사항을 적용하기 위해 우리는 pop 명령보다는 apply 명령. 그만큼 pop 명령은 변경 사항을 적용하고 숨김에서 제거합니다.

저장소의 일부를 변경했습니다. new-parser 나뭇가지. 그들은에서 만들어 졌어야했다 classic-parser 나뭇가지.

git stash
git checkout classic-parser
git stash pop

변경 사항 보관, 브랜치 체크아웃, 보관된 변경 사항 적용

우리는 이제 commit이 분기를 업데이트합니다.

git commit -a -m "Added pre-parser functions"

숨김에서 검색된 변경 사항 커밋

우리가 new-parser 브랜치가 최신 상태임을 확인할 수 있습니다. 즉, 변경 사항이 작업 디렉토리에서 제거되었고 저장소와 파일이 동기화되었음을 의미합니다.

git checkout new-parser
git status

브랜치의 상태를 확인하여 최신 상태인지 확인

관련된: 별도의 Git 브랜치를 업데이트하고 유지하는 방법

커밋 변경

커밋 메시지를 개선해야 하는 경우(오타를 발견했을 수 있음) 또는 커밋에 포함되어야 하는 파일을 준비하는 것을 잊은 경우 다음을 사용할 수 있습니다. --amend 일을 바로잡는 옵션. 주의할 점은 원격 리포지토리로 푸시된 커밋에 사용하면 안 된다는 것입니다.

마지막 커밋 메시지에서 “fraze”는 “phrase”여야 합니다. 우리가 사용하는 경우 git log 우리는 이것을 볼 수 있습니다.

유형이 강조 표시된 Git 로그

이를 수정하기 위해 다음을 사용합니다. --amend 이와 같은 옵션.

git commit --amend -m "Optimized phrase identification"

commit --amend 옵션을 사용하여 커밋 메시지 수정

우리가 사용하는 경우 git log 다시 한 번, 이전 커밋이 수정된 커밋 메시지가 있는 새 커밋으로 대체된 것을 볼 수 있습니다.

수정된 커밋 메시지를 보여주는 Git 로그

준비하지 않은 파일을 추가하려는 경우 해당 파일을 커밋하여 이전 커밋의 일부로 나타나도록 할 수 있습니다.

우리는 사용할 것입니다 add 파일을 준비한 다음 --amend 옵션. 그만큼 --no-edit 옵션은 새로운 커밋 메시지를 제공할 필요가 없음을 의미합니다. 이전 커밋 메시지가 유지됩니다.

git add jibber.c
git commit --amend --no-edit

파일을 이전 커밋으로 커밋

커밋에서 변경 사항 제거

실수로 의도하지 않은 파일을 스테이징하고 커밋한 경우 다음을 사용하여 커밋에서 해당 파일을 제거할 수 있습니다. reset 명령. 커밋을 스테이징 영역 또는 인덱스로 다시 재설정합니다. 그런 다음 파일을 제거하고 나머지 파일을 다시 커밋합니다.

스테이징 영역에 대한 마지막 커밋을 재설정하려면 다음을 사용합니다. reset --soft 명령. HEAD~ “프로젝트 커밋 타임라인의 HEAD 뒤에 있는 커밋” 또는 영어로 “마지막 커밋”의 줄임말입니다.

git reset --soft HEAD~

마지막 커밋을 스테이징 영역으로 다시 보내기

포함되어서는 안 되는 파일을 제거하려면 다음을 사용합니다. reset --mixed 명령. 이렇게 하면 해당 변경 사항이 다시 작업 디렉터리로 재설정되어 수정된 파일이 준비되지 않은 커밋되지 않은 파일로 다시 생성됩니다.

git reset --mixed jibber.c

Git 스테이징 영역에서 파일 제거

인덱스에 남아 있는 다른 파일을 커밋해야 합니다.

git commit -m "Experimental tweaks"

준비 영역에 남아 있는 파일 커밋

원래 커밋에 있던 다른 두 파일은 우리를 위해 다시 커밋됩니다.

관련된: Git 커밋을 수정, 편집 또는 실행 취소하는 방법(Git 기록 변경)

전체 커밋 되돌리기

때로는 전체 커밋을 취소하는 것이 가장 쉬운 일입니다. 작업 디렉토리와 저장소를 커밋하기 전의 상태로 되돌립니다.

커밋의 해시 참조 ID를 사용해야 합니다. 우리는 이것을 사용하여 찾을 수 있습니다 git log:

커밋 식별자가 강조 표시된 Git 로그

해당 참조를 복사하여 revert 명령:

git revert e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8

커밋 ID로 식별된 커밋 되돌리기

이렇게 하면 되돌리기 메시지를 편집할 수 있도록 기본 편집기가 열립니다. 입력된 기본 메시지가 있습니다. 이것을 사용하거나 원하는 대로 편집할 수 있습니다.

기본 메시지가 강조 표시된 되돌리기 메시지 편집

되돌리기 메시지에 만족하면 파일을 저장하고 편집기를 종료합니다. nano에서는 “Ctrl+O” 및 “Ctrl+X”를 사용하여 이 작업을 수행합니다.

완료된 되돌리기 작업, 전체 커밋 실행 취소

사용 git log 다시 한 번 되돌린 커밋의 변경 사항을 취소하는 새 커밋이 추가된 것을 볼 수 있습니다.

Git 스위스 아미 나이프

확실히, commit 가장 중요한 Git 명령 중 하나입니다. 많은 것을 할 수 있으므로 배울 것이 많습니다. 덜 사용되는 기능을 파악하는 데 시간이 많이 걸립니다. 지금 당장 실수를 바로잡아야 할 때 미리 준비했다는 사실에 만족할 것입니다.

관련된: 힘내 병합을 사용하는 방법