다른 사용자로 코드를 커밋하는 방법은 무엇입니까? 할 수있는

스크립트에 대해이 작업을 수행하고 싶습니다. 나는 본질적으로 Git에서 일부 코드의 전체 버전 기록을 다시 만들고 있으며 현재 다른 버전 제어 시스템을 사용합니다. 커밋의 원래 작성자 (및 날짜)를 유지하면서 Git에 커밋을 추가 할 수있는 스크립트가 필요합니다.

커밋 작성자와 변경 날짜 / 시간을 알고 있다고 가정하면이를 수행 할 수있는 Git 명령이 있습니까? 나는 git-p4가 비슷한 일을하기 때문에 거기에 있다고 가정하고 있습니다. 나는 그것을 할 수있는 최선의 방법을 요구하고있다.



답변

다음에 대한 --author옵션을 확인하십시오 git commit.

로부터 man 페이지 :

--author=<author>

커밋 작성자를 재정의합니다. 표준 A U Thor <author@example.com>형식을 사용하여 명시 적 작성자를 지정하십시오 . 그렇지 않으면
<author>패턴으로 간주되고 해당 작성자가 기존 커밋을 검색하는 데 사용됩니다 (예 🙂 rev-list --all -i --author=<author>. 커밋 작성자는 찾은 첫 번째 커밋에서 복사됩니다.


답변

이것에 추가하기 : --author수락 된 답변에 언급 된 옵션 은 커밋 의 커미터 정보가 아닌 작성자 만 재정의합니다 .

대부분의 경우 올바른 동작이지만 어떤 이유로 커미터 정보 도 수동으로 재정의해야하는 경우 GIT_COMMITTER_NAMEGIT_COMMITTER_EMAIL환경 변수를 사용합니다 (도 GIT_COMMITTER_DATE있습니다). 참고 힘내 – 내부 구조 – 환경 – 변수

$ GIT_COMMITTER_NAME="New Name" GIT_COMMITTER_EMAIL="name@email.com" git commit --author="New Name <name@email.com>"

이렇게하면 지정된 사용자 가 작성 하고 커밋 한 것처럼 커밋이 표시됩니다 .


답변

~ / .gitconfig 파일을 편집하고 기본이 아닌 사용자 및 이메일을 사용자 정의 할 수있는 새 별칭을 추가합니다.

[user]
  name = My Name
  email = default@email.com

[alias]
  commit-x = -c user.name='My X Name' -c user.email='mr_x@email.com' commit
  commit-y = -c user.name='My Y Name' -c user.email='mr_y@email.com' commit
  commit-z = -c user.name='My Z Name' -c user.email='mr_z@email.com' commit

테스트

git commit -m "Custom message with committer and author My Name <default@email.com>"
git commit-x -m "Custom message with committer and author My X Name <mr_x@email.com>"
git commit-y -m "Custom message with committer and author My Y Name <mr_y@email.com>"
git commit-z -m "Custom message with committer and author My Z Name <mr_z@email.com>"