수색…


소개

Git을 사용하면 작성자에게 코드가 변경되었음을 알리는 책임이 있습니다. Git은 커밋의 특수성과 보안을위한 여러 기능을 제공합니다. 이 항목에서는 Git을 사용하여 커밋하는 방법과 절차에 대해 설명하고 보여줍니다.

통사론

  • git commit [플래그]

매개 변수

매개 변수 세부
- 메시지, -m 커밋에 포함 할 메시지입니다. 이 매개 변수를 지정하면 Git이 편집기를 여는 일반적인 동작을 건너 뜁니다.
--고치다 현재 위임 된 변경 사항을 이전 커밋에 추가 (수정)해야한다고 지정하십시오. 조심하십시오, 이것은 역사를 다시 쓸 수 있습니다!
- 편집 안함 편집기를 시작하지 않고 선택한 커밋 메시지를 사용하십시오. 예를 들어, git commit --amend --no-edit 는 커밋 메시지를 변경하지 않고 커밋을 수정합니다.
--all, - a 아직 준비되지 않은 변경 내용을 포함하여 모든 변경 내용을 커밋합니다.
--날짜 커밋과 관련된 날짜를 수동으로 설정하십시오.
--만 지정된 경로 만 커밋하십시오. 그렇게하지 않으면 현재 진행중인 작업을 커밋하지 않습니다.
--patch, -p 대화식 패치 선택 인터페이스를 사용하여 커밋 할 변경 사항을 선택하십시오.
--도움 git commit 대한 맨 페이지를 표시합니다.
-S [keyid], -S - gpg-sign [= keyid], -S - no-gpg-sign 커밋 서명, GPG- 서명 커밋, countermand commit.gpgSign 구성 변수
-n, --no-verify 이 옵션은 커밋 전 및 커밋 - msg 후크를 바이 패스합니다. 후크 참조

편집기를 열지 않고 커밋하기

Git은 보통 git commit 을 실행할 때 vim 이나 emacs 와 같은 편집기를 엽니 다. 명령 행에서 메시지를 지정하려면 -m 옵션을 전달하십시오.

git commit -m "Commit message here"

커밋 메시지는 여러 줄로 갈 수 있습니다.

git commit -m "Commit 'subject line' message here

More detailed description follows here (after a blank line)."

또는 여러 개의 -m 인수를 전달할 수 있습니다.

git commit -m "Commit summary" -m "More detailed description follows here"

힘내 커밋 메시지를 작성하는 방법을 참조하십시오.

Udacity Git Commit 메시지 스타일 가이드

커밋 수정

최신 커밋이 아직 게시되지 않은 경우 (업스트림 저장소로 푸시되지 않은 경우) 커밋을 수정할 수 있습니다.

git commit --amend

이것은 현재 위임 된 변경 사항을 이전 커밋에 넣습니다.

참고 : 이것은 잘못된 커밋 메시지를 편집하는 데에도 사용할 수 있습니다. 기본 편집기 (일반적으로 vi / vim / emacs )가 나타나서 이전 메시지를 변경할 수 있습니다.

커밋 메시지를 인라인으로 지정하려면 다음을 수행하십시오.

git commit --amend -m "New commit message"

이전 커밋 메시지를 변경하지 않고 사용하려면 다음을 수행하십시오.

git commit --amend --no-edit

개정 날짜는 커밋 날짜이지만 작성자 날짜는 변경되지 않습니다. git에게 정보를 새로 고치라고 말할 수 있습니다.

git commit --amend --reset-author

다음을 사용하여 커밋 작성자를 변경할 수도 있습니다.

git commit --amend --author "New Author <[email protected]>"

참고 : 가장 최근 커밋을 수정하면 커밋이 완전히 대체되고 이전 커밋은 지 역사에서 제거됩니다. 공개 저장소 및 다른 공동 작업자와 함께 작업 할 때는이 점을 명심해야합니다.

즉, 이전 커밋이 이미 푸시 된 경우이를 수정 한 후에 push --force 실행해야합니다.

변경 사항을 직접 커밋

일반적으로 git add 또는 git rm 을 사용하여 git commit 하기 전에 인덱스에 변경 사항을 추가해야합니다. -a 또는 --all 옵션을 전달하면 제거를 포함하여 모든 변경 사항 (추적 된 파일에 대한)이 색인에 자동으로 추가됩니다.

git commit -a 

커밋 메시지를 추가하려면 다음을 수행하십시오.

git commit -a -m "your commit message goes here"

또한 두 플래그를 결합 할 수 있습니다.

git commit -am "your commit message goes here"

반드시 모든 파일을 한 번에 커밋 할 필요는 없습니다. -a 또는 --all 플래그를 생략하고 직접 커밋 할 파일을 지정하십시오.

git commit path/to/a/file -m "your commit message goes here"

하나 이상의 특정 파일을 직접 커밋하려면 하나 이상의 파일, 디렉토리 및 패턴을 지정할 수 있습니다.

git commit path/to/a/file path/to/a/folder/* path/to/b/file -m "your commit message goes here"

빈 커밋 만들기

일반적으로 빈 커밋 (또는 부모와 동일한 상태로 커밋)은 오류입니다.

그러나 빌드 후크, CI 시스템 및 커밋을 트리거하는 다른 시스템을 테스트 할 때 더미 파일을 편집 / 터치하지 않고 커밋을 쉽게 만들 수있는 것이 편리합니다.

--allow-empty 커밋은 검사를 --allow-empty 뜁니다.

git commit -m "This is a blank commit" --allow-empty

스테이지 및 커밋 변경

기본 사항

당신이 그들을 커밋하기 전에 소스 코드를 변경 한 후, 당신은 힘내과 그 변화를 준비해야한다.

예를 들어, README.mdprogram.py 를 변경하면 :

git add README.md program.py

이렇게하면 git에게 다음 커밋에 파일을 추가 할 것을 알린다.

그런 다음 변경 사항을 커밋하십시오.

git commit

이 기능 은 종종 vim 인 텍스트 편집기를 열어줍니다. vim에 익숙하지 않은 경우 i 를 눌러 삽입 모드로 들어가서 커밋 메시지를 작성한 다음 Esc:wq 를 눌러 저장하고 종료 할 수 있습니다. 텍스트 편집기를 열지 않으려면 메세지에 -m 플래그를 넣으십시오

git commit -m "Commit message here"

커밋 메시지는 특정 형식 지정 규칙을 따르는 경우가 많습니다. 자세한 내용은 커밋 메시지 를 참조하십시오.


바로 가기

디렉토리에있는 많은 파일을 변경 한 경우, 각 파일을 나열하는 대신 다음을 사용할 수 있습니다.

git add --all        # equivalent to "git add -a"

또는 삭제 된 파일을 제외한 모든 변경 사항을 최상위 디렉토리 및 하위 디렉토리에 추가하려면 다음을 수행하십시오.

git add .

또는 현재 추적중인 파일 만 추가 ( "업데이트")하려면 다음을 수행하십시오.

git add -u

원하는 경우 단계별 변경 사항을 검토하십시오.

git status           # display a list of changed files
git diff --cached    # shows staged changes inside staged files

마지막으로 변경 사항을 적용하십시오.

git commit -m "Commit message here"

또는 기존 파일이나 삭제 된 파일 만 수정하고 새 파일을 만들지 않은 경우 git addgit commit 의 작업을 단일 명령으로 결합 할 수 있습니다.

git commit -am "Commit message here"

이것은 git add --all 과 같은 방식으로 모든 수정 된 파일을 처리합니다.


민감한 데이터

암호 나 개인 키와 같은 중요한 데이터를 절대로 커밋해서는 안됩니다. 이 사건이 발생하고 변경 사항이 이미 중앙 서버로 푸시 된 경우 중요한 데이터가 손상된 것으로 간주합니다. 그렇지 않으면 나중에 그러한 데이터를 제거 할 수 있습니다. 빠르고 쉬운 솔루션은 "BFG Repo-Cleaner"( https://rtyley.github.io/bfg-repo-cleaner/ )의 사용법입니다.

bfg --replace-text passwords.txt my-repo.git 명령은 passwords.txt 파일에서 passwords.txt 읽고이를 ***REMOVED*** 바꿉니다. 이 작업은 전체 저장소의 모든 이전 커밋을 고려합니다.

다른 사람을 대신하여 커밋하기

다른 사람이 커밋중인 코드를 작성한 경우 --author 옵션을 사용하여 크레디트를 부여 할 수 있습니다.

git commit -m "msg" --author "John Smith <[email protected]>"

Git이 이전 작성자를 검색하는 데 사용할 패턴을 제공 할 수도 있습니다.

git commit -m "msg" --author "John"

이 경우 "John"이 포함 된 저자와의 가장 최근 커밋의 저자 정보가 사용됩니다.

GitHub에서 위의 방법 중 하나로 작성된 커밋은 큰 작성자의 미리보기 이미지를 표시하며 커미터의 작고 앞쪽에는 다음과 같이 표시됩니다.

여기에 이미지 설명을 입력하십시오.

특정 파일의 변경 사항 커밋

특정 파일에 대한 변경 사항을 커밋하고 git add 사용하여 파일을 스킵 할 수 git add .

git commit file1.c file2.h

또는 파일을 처음으로 스테이지 할 수 있습니다.

git add file1.c file2.h

나중에 커밋하십시오.

git commit

좋은 커밋 메시지

git log 를 탐색하는 사람이 각 커밋이 무엇인지를 쉽게 이해하는 것이 중요합니다. 좋은 커밋 메시지에는 일반적으로 추적 프로그램에 많은 수의 작업이나 문제가 포함되어 있으며 수행 된 작업과 수행 된 작업에 대한 간결한 설명과 때로는 수행 방법에 대한 간결한 설명이 포함됩니다.

더 나은 메시지는 다음과 같습니다.

TASK-123: Implement login through OAuth
TASK-124: Add auto minification of JS/CSS files
TASK-125: Fix minifier error when name > 200 chars

다음 메시지가 유용하지는 않지만

fix                         // What has been fixed?
just a bit of a change      // What has changed?
TASK-371                    // No description at all, reader will need to look at the tracker themselves for an explanation
Implemented IFoo in IBar    // Why it was needed?

커밋 메시지가 올바른 기분으로 쓰여 졌는지 테스트하는 방법은 공백을 메시지로 바꾸고 그것이 의미가 있는지 확인하는 것입니다.

이 커밋을 추가하면 저장소에 저장됩니다.

훌륭한 git 커밋 메시지의 7 가지 규칙

  1. 제목과 본문을 빈 줄로 구분하십시오.
  2. 제목 줄을 50 자로 제한하십시오.
  3. 제목 줄 사용
  4. 제목을 마침표로 끝내지 마십시오.
  5. 제목 줄에 긴급한 분위기 를 사용하십시오.
  6. 본문의 각 줄을 72 자로 수동으로 줄이십시오.
  7. 어떻게 대신 무엇 을 설명하기 위해 시체를 사용하십시오.

Chris Beam의 블로그에서 7 규칙 .

특정 날짜에 커밋하기

git commit -m 'Fix UI bug' --date 2016-07-01

--date 매개 변수는 작성자 날짜를 설정합니다. 이 날짜는 예를 들어 git log 의 표준 출력에 나타납니다.

커밋 날짜 도 강제로 지정하려면 다음과 같이하십시오.

GIT_COMMITTER_DATE=2016-07-01 git commit -m 'Fix UI bug' --date 2016-07-01

date 매개 변수는 GNU 날짜가 지원하는 유연한 형식을 허용합니다 (예 :

git commit -m 'Fix UI bug' --date yesterday
git commit -m 'Fix UI bug' --date '3 days ago'
git commit -m 'Fix UI bug' --date '3 hours ago'

날짜가 시간을 지정하지 않으면 현재 시간이 사용되며 날짜 만 대체됩니다.

커밋을 위해 준비 할 줄 선택

하나 이상의 파일에서 많은 변경 사항이 있다고 가정하지만 변경 사항 중 일부만 커밋하려는 각 파일에서 다음을 사용하여 원하는 변경 사항을 선택할 수 있습니다.

git add -p

또는

git add -p [file]

각 변경 사항은 개별적으로 표시되며 각 변경 사항에 대해 다음 옵션 중 하나를 선택하라는 메시지가 표시됩니다.

y - Yes, add this hunk

n - No, don’t add this hunk

d - No, don’t add this hunk, or any other remaining hunks for this file.
    Useful if you’ve already added what you want to, and want to skip over the rest.

s - Split the hunk into smaller hunks, if possible

e - Manually edit the hunk.  This is probably the most powerful option.
    It will open the hunk in a text editor and you can edit it as needed.

그러면 선택한 파일의 부분이 스테이지됩니다. 그런 다음 모든 단계별 변경 사항을 커밋 할 수 있습니다.

git commit -m 'Commit Message'

준비되거나 커밋되지 않은 변경 사항은 작업 파일에 계속 표시되며 필요할 경우 나중에 커밋 할 수 있습니다. 또는 나머지 변경 사항이 원치 않는 경우 다음과 같이 삭제할 수 있습니다.

git reset --hard

더 작은 커밋으로 큰 변화를 깨는 것 외에도이 방법은 커밋 할 내용을 검토 하는 데 유용합니다. 각 변경 사항을 개별적으로 확인함으로써 작성한 내용을 확인할 수 있으며 println / logging 문과 같은 원치 않는 코드를 실수로 준비하는 것을 방지 할 수 있습니다.

커밋 시간 수정

당신은 다음을 사용하여 커밋 시간을 수정할 수 있습니다.

git commit --amend --date="Thu Jul 28 11:30 2016 -0400"

또는

git commit --amend --date="now"

커밋의 저자 수정

잘못된 작성자로 커밋을 변경하면 변경 한 다음 수정할 수 있습니다.

git config user.name "Full Name"
git config user.email "[email protected]"

git commit --amend --reset-author

GPG 서명 커밋

  1. 키 ID 결정

    gpg --list-secret-keys --keyid-format LONG
    
    /Users/davidcondrey/.gnupg/secring.gpg
    --------------------------------------
    sec   2048R/YOUR-16-DIGIT-KEY-ID YYYY-MM-DD [expires: YYYY-MM-DD]
    

    ID는 첫 번째 슬래시 뒤에 오는 영숫자 16 자리 코드입니다.

  2. git config에 키 ID를 정의하십시오.

    git config --global user.signingkey YOUR-16-DIGIT-KEY-ID
    
  3. 버전 1.7.9에서 git commit은 -C 옵션을 사용하여 커밋에 서명을 첨부합니다. 이 옵션을 사용하면 GPG 암호 문구를 묻는 메시지가 나타나고 서명을 커밋 로그에 추가합니다.

    git commit -S -m "Your commit message"
    


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow