메일 링리스트 + git format-patch
+ git apply
는 저자를 생성 할 수 있습니다! = 커미터
패치가있는 Linux 커널과 같은 프로젝트에서 :
다른 작성자 및 커미터로 단일 새 커밋 생성
- 저자는 누가 패치를 썼는가
- 커미터는 누가 프로젝트 관리자이며 패치를 병합 한 사람입니다.
예를 들어 무작위로 선택된 패치와 해당 커밋을 참조하십시오.
GitHub 및 GitLab과 같은 Git 웹 인터페이스는 작성자를 생성하거나 생성하지 않을 수 있습니다! = 커미터
Git (Hub | Lab)은 동일한 머신에서 업스트림 및 포크 리포지토리를 모두 보유하므로 다음 중 하나를 포함하여 로컬에서 수행 할 수있는 모든 작업을 자동으로 수행 할 수 있습니다.
병합 커밋을 만듭니다.
author! = committer를 생성하지 않습니다.
SHA 또는 새 커밋을 그대로 유지하고 새 커밋을 만듭니다.
* Merge commit (committer == author == project maintainer)
|\
| * Feature commit (committer == author == contributor)
|/
* Old master (random committer and author)
역사적으로 이것은 GitHub에서 사용 가능한 첫 번째 방법이었습니다.
로컬에서는이 작업을 수행합니다 git merge --no-ff
.
풀 요청 당 두 개의 커밋을 생성하고 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 log'를 구성하는 방법
낮은 수준으로 이동하여 전체 커밋 데이터를 표시하십시오.
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 commit 객체의 파일 형식은 무엇입니까?
기본적으로 커밋은 텍스트 파일이며 두 줄로 구분 된 필드를 포함합니다.
author {author_name} <{author_email}> {author_date_seconds} {author_date_timezone}
committer {committer_name} <{committer_email}> {committer_date_seconds} {committer_date_timezone}
이것은 커밋 객체에서 두 개의 완전히 독립적 인 데이터 엔트리라는 것을 분명히합니다.