git 저장소 제출 역사의 저자 정보를 어떻게 변경합니까
이 문서에서는 저장소 기록에 제출된 작성자 이름/이메일을 신속하게 변경하고 잘못된 제출자 (또는 잘못된 작성자 상세 정보) 를 정확한 정보로 대체하는 다양한 옵션을 제공합니다.우선, 우리는 더욱 안전한 편집 제출 방법을 토론할 것이다. 마지막으로, 나는 하나를 공유할 것이다. 이것은 당신을 위해 무거운 일을 완성할 것이다.
사용자 정의 스크립트 뭐 공부 해요?
작성자 정보를 제출하는 방식을 변경하는 방법은 사용자의 상황에 따라 다릅니다.
제출 전에 작성자 정보 변경
만약 제출하기 전에 신분을 변경해야 한다면, 세 가지 방법으로 정보를 업데이트할 수 있다.이 절에 열거된 어떤 방법도 이전의 제출에 영향을 주지 않고 이 시점 이후에 진행된 제출에만 영향을 미친다.
변경 작성자 세부 정보는 다음에만 제출
다음 제출을 위해 작성자 전자 메일/이름을 변경하기만 하면 제출 메시지에서
--author
플래그와 필요한 정보를 전달할 수 있습니다.git commit --author="Marty McFly <[email protected]>" --message="Changing text on prom banner"
현재 저장소의 작성자 정보 변경
현재 저장소에서 향후 제출될 작성자 정보를 모두 변경하려면
git config
설정을 업데이트하여 여기에만 적용할 수 있습니다.# Navigate to repository
cd path/to/repository
git config user.name "Marty McFly"
git config user.email "[email protected]"
작성자 이름 및 이메일 전체 변경
컴퓨터에서 사용하는 작성자 정보를 글로벌 수준(예: 모든 저장소)에서 업데이트하려면
--global
플래그를 추가합니다.git config --global user.name "Marty McFly"
git config --global user.email "[email protected]"
이전에 제출한 기록 편집(보안)
그래서 제출한 작가 정보를 편집해야 합니까?우선, 역사 기록을 편집하여 제출하는 안전 (r) 방법을 살펴보자.
마지막 제출 편집
마지막 제출만 편집하면
--amend
로고가 친구입니다.git commit --amend --author="Marty McFly <[email protected]>"
상호 작용 초기화를 사용하여 여러 커밋 편집
제출 기록을 편집하는 가장 간단한 방법은git의 상호작용
rebase
명령을 사용하는 것입니다.먼저 편집할 해시를 찾기 전에 제출한 해시를 찾아서 리베이스 명령에 전달합니다.
# Passing the last "good" commit hash
git rebase -i 9b4351e2
그런 다음 수정할 각 커밋을 edit
키워드로 표시합니다.edit 9b4351e2 Changing text on prom banner
edit 4d0f36c0 Setting flux capacitor to 1955
pick f4b39b80 Adding plutonium
Git 는 필요한 경우 편집하거나 편집하지 않고 각 커밋을 완료하도록 안내합니다.Stopped at 9b4351e2... Changing text on prom banner
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
각 커밋을 실행하고 편집합니다.git commit --amend --author="Marty McFly <[email protected]>" --no-edit
git rebase --continue
git 필터 분기 스크립트를 사용하여 모든 기록을 편집합니다 (위험 영역)
나는git
filter-branch
명령을 사용자 정의 스크립트로 실현했다. 상호작용 모드에서 사용할 수도 있고 옵션 로고를 통해 수동적으로 사용할 수도 있다.WARNING
This action is destructive to your repository's history. If you're collaborating on a repository with others, it's considered bad practice to rewrite published history.You should only rewrite history if absolutely necessary.
Running this script rewrites history for all repository collaborators. After completing these steps, any person with forks or clones must fetch the rewritten history and rebase any local changes into the rewritten history.
설명서
, 액세스하기 쉬운 위치에 저장합니다.
스크립트 다운로드 / 아담드 하빈
잘못된 작성자 정보를 해결하기 위해git 저장소의 제출 기록을 업데이트합니다.
chmod +x changeauthor.sh
cd path/to/repo
또는 전송
change-git-author
및 --git-dir
로고를 통해 어디서든 실행할 수 있습니다.../path/to/changeauthor.sh --old-email [email protected] --new-email [email protected] --name "Marty McFly" --remote origin
실행할 수 있는 권한이 변경되지 않으면 다음 중 하나를 사용하여 스크립트를 호출할 수도 있습니다.bash ./changeauthor.sh [OPTIONS]...
sh ./changeauthor.sh [OPTIONS]...
--work-tree
없이 스크립트를 실행하면 필요한 값을 입력하라는 대화식 프롬프트가 표시됩니다.그런 다음 스크립트는 로컬 저장소를 계속 업데이트하고 변경 사항을 지정된 원격 저장소로 전송합니다.git 필터 분기 경고를 취소하려면 컴퓨터의
~/.bashrc
파일에 다음 줄을 추가하십시오.export FILTER_BRANCH_SQUELCH_WARNING=1
스크립트를 어디에서나 호출할 수 있는 함수로 설정하려면 ~/.bashrc
파일에 다음 함수를 추가합니다.function changegitauthor() {
# Update the path to point to the absolute path of the script on your computer
bash /c/absolute/path/to/change-git-author/changeauthor.sh "$@"
}
옵션을 스크립트에 직접 전달할 수도 있고, 어떤 내용도 전달하지 않고 상호작용 모드에서 스크립트를 실행할 수도 있습니다.사용 가능한 모든 옵션 개요는 다음과 같습니다.옵션 플래그 이전 e-메일
-o
, --old-email
[email protected]
새 전자 메일
-e
, --new-email
[email protected]
이전 e-메일 새 이름
-n
, --new-name
Marty McFly
아득히 멀다
-r
, --remote
origin
github
무력
-f
, --force
--remote
로고에 값이 전달되지 않으면 기본 원격 --force
이 사용됩니다.git 디렉터리
origin
, -d
이 옵션은
--git-dir
플래그와 함께 사용해야 합니다.작업 트리
--work-tree
, -w
돕다
--work-tree
, -h
, -?
버전
--help
, -v
, -V
Reference
이 문제에 관하여(git 저장소 제출 역사의 저자 정보를 어떻게 변경합니까), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/adamdehaven/how-to-change-the-author-information-in-the-commit-history-of-a-git-repository-3k76텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)