Git에서 저자와 커미셔너의 차이점은 무엇입니까?
나는 다음과 같은 약속을 하려고 합니다.
git commit --author="John Doe <john@doe.com>" -m "<the usual commit message>"
여기서 John Doe는 내가 커밋하고 싶은 이름의 사용자입니다.
에도 문제가 없습니다.git log
, 를 할 할가때내.gitk
작성자 이름은 맞지만 커밋 이름은 글로벌 git 구성 설정에서 선택됩니다(따라서 내 이름/이메일로 설정됨).
문의사항
두 가지(커밋터 대 저자)의 차이점은 무엇입니까?
커밋을 다른 사용자에게도 설정해야 합니까?
만약 그렇다면, 어떻게?
원본 포스터는 다음과 같이 묻습니다.
두 가지(커미터 대 저자)의 차이점은 무엇입니까?
작성자는 원래 코드를 작성한 사람입니다.그러나 위원은 원저작자를 대신하여 코드를 범한 자로 추정됩니다.Git에서는 역사를 다시 쓰거나 다른 사람을 대신하여 패치를 적용할 수 있기 때문에 이것이 중요합니다.무료 온라인 ProGit 책은 다음과 같이 설명합니다.
저자와 커미셔너의 차이점이 무엇인지 궁금하실 수 있습니다.작성자는 패치를 처음 작성한 사용자이고 커미터는 패치를 마지막으로 적용한 사용자입니다.따라서 프로젝트에 패치를 보내고 핵심 구성원 중 한 명이 패치를 적용하면 작성자와 커미셔너의 핵심 구성원이 둘 다 크레딧을 받게 됩니다.
원본 포스터는 다음과 같이 묻습니다.
커밋을 다른 사용자에게도 설정해야 합니까?
아니요, 만약 당신이 정직하고 싶다면, 저자와 커미터가 실제로 동일한 사람이 아니라면 커미터를 저자로 설정해서는 안 됩니다.
리스트 + 메일링 리스트 +git format-patch
+git apply
할 수 = committer ! = 커밋터작성
리눅스 커널과 같은 프로젝트에서 패치는 다음과 같습니다.
- .
git format-patch
- 이메일로 보내거나, 복사 붙여넣기 또는 더 일반적으로
git send-email
- 한 것 중 하나입니다.
git apply
또는git am
이메일 메시지의 패치를 적용하기 위해 gitam을 사용하는 방법은 무엇입니까?
다른 작성자 및 커밋을 사용하여 단일 새 커밋 생성:
- 패치를 작성한 사람이 저자입니다.
- 커미터는 누가 프로젝트 관리자이고 누가 패치를 병합했는지입니다.
예를 들어 임의로 선택한 패치와 해당 커밋을 참조하십시오.
- https://lkml.org/lkml/2018/1/25/568
- https://github.com/torvalds/linux/commit/5beda7d54eafece4c974cfa9fbb9f60fb18fd20a
GitHub 및 GitLab과 같은 Git 웹 인터페이스는 작성자를 생성할 수도 있고 생성하지 않을 수도 있습니다!= 커미터
Git(Hub|Lab)는 동일한 시스템에서 업스트림 및 포크 저장소를 모두 보유하므로 다음 중 하나를 포함하여 로컬에서도 수행할 수 있는 모든 작업을 자동으로 수행할 수 있습니다.
병합 커밋을 만듭니다.
작성자!= 커밋터를 생성하지 않습니다.
SHA 또는 새 커밋을 그대로 유지하고 새 커밋을 만듭니다.
* Merge commit (committer == author == project maintainer) |\ | * Feature commit (committer == author == contributor) |/ * Old master (random committer and author)
역사적으로 이것은 GitHub에서 사용할 수 있는 최초의 방법이었습니다.
로컬에서 이 작업은 다음을 통해 수행됩니다.
git merge --no-ff
.이렇게 하면 풀 요청당 2개의 커밋이 생성되고 Git 내역에 포크가 유지됩니다.
에 근거하여 기지를 다시 설치.
master
GitHub은 또한 커밋을 해킹하여 커밋 == 병합 버튼을 누른 사람을 설정합니다.필수 사항이 .
git rebase
프로젝트 관리자에게 책임을 부여합니다.깃 트리의 모양은 다음과 같습니다.
* Feature commit (committer == maintainer, author == contributor) | * Old master (random committer and author)
그것은 정확히 그것과 같습니다.
git apply
전자 메일 패치
GitHub에서 현재:
- 병합 버튼의 드롭다운을 통해 병합할 때 방법을 선택합니다.
- 소유자가 repo 설정에서 메서드를 사용하거나 사용하지 않도록 설정할 수 있습니다.
https://help.github.com/articles/about-merge-methods-on-github/
새로운 커밋의 커밋을 어떻게 설정합니까?
제가 찾을 수 있는 최선의 방법은 환경 변수를 사용하여 커미터를 재정의하는 것이었습니다.
GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a' git commit --author 'a <a>'
지정된 커밋의 커밋 및 커밋 날짜를 얻는 방법은 무엇입니까?
만 본적으 됩니다.git log
.
커밋 날짜를 보려면 다음 중 하나를 수행할 수 있습니다.
로그 형식을 지정합니다.
git log --pretty='%cn %cd' -n1 HEAD
cn
그리고.cd
의Committer Name
그리고.Committer Date
을 사용합니다.
fuller
미리 정의된 형식:git log --format=fuller
낮은 수준으로 이동하여 전체 커밋 데이터를 표시합니다.
git cat-file -p HEAD
새로운 커밋의 커밋 날짜를 어떻게 설정합니까?
git commit --date
작성자 날짜만 설정합니다. 커밋 날짜에 대해 내가 찾을 수 있는 최선의 방법은 환경 변수를 사용하는 것이었습니다.
GIT_COMMITTER_DATE='2000-01-01T00:00:00+0000' git commit --date='2000-01-01T00:00:00+0000'
참고 항목:Git에서 저자와 커미셔너의 차이점은 무엇입니까?
Git는 작성자 대 커미셔너를 내부적으로 어떻게 저장합니까?
참고: git commit 개체의 파일 형식은 무엇입니까?
기본적으로 커밋은 텍스트 파일이며 두 줄로 구분된 필드가 포함되어 있습니다.
author {author_name} <{author_email}> {author_date_seconds} {author_date_timezone}
committer {committer_name} <{committer_email}> {committer_date_seconds} {committer_date_timezone}
이렇게 하면 둘 다 커밋 개체에 있는 두 개의 완전히 독립적인 데이터 항목임을 알 수 있습니다.
GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a' git commit --author 'a <a>'
실수로 다른 이름과 전자 메일을 사용한 경우 동일한 값으로 설정하려는 경우:
GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a' git commit --author "$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
변수를 먼저 설정한 다음 변수를 사용합니다.git commit
call(이중 괄호에 주의).
언급URL : https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git
'programing' 카테고리의 다른 글
덱스를 실행할 수 없음: 여러 개의 덱스 파일이 Lcom/myapp/R$ 어레이를 정의합니다. (0) | 2023.05.22 |
---|---|
연산자 성능에서 Mongo $ (0) | 2023.05.22 |
*모든* Excel interop 개체를 마샬을 사용하여 해제해야 합니까?ReleaseComObject? (0) | 2023.05.22 |
왜 제가 "git push --setupstream origin"을 해야 합니까? (0) | 2023.05.22 |
SQL 모범 사례 없음 (0) | 2023.05.22 |