ProgramingTip

단일 git 커밋에 대해 합의 사용자 재정의

bestdevel 2020. 11. 6. 18:58
반응형

단일 git 커밋에 대해 합의 사용자 재정의


회사 자식으로 이미 구성된 서버용 직장 랩톱 에서 github.com 의 프로젝트에 참여 하려고 합니다. 다른 구성이나 다른 명령 줄 스위치를 사용하여 가능한 다른 사용자 자격 증명을 지정하는 방법이 있습니까?

나는 공연

--author="My Name <MyNameEmail@email.com>" 

그리고 메시지를 그리스도입니다.

 Committer: unknown <WorkEmail@workemail.net>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email you@example.com

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

하지만 여전히 github.com 프로젝트에 커밋하기 위해 내 사용자 이름을 업데이트하지 않습니다. 내가 시도 할 수있는 다른 것이 가능합니까?


첫째, 작성자가 커미터와 반드시 동일 해요. Git은 둘 다 추적합니다.

이 저장소에만 사용할 이름을 설정하고 다음을 수행 할 수 있습니다.

git config user.name "Your Name"
git config user.email "Your email"

--global옵션 이 없음을 확인하십시오 . 이 저장소에서만 구성을 설정합니다.

또는 다음 -c옵션을 사용하여 단일에 편리한 작업을 수행 할 수 있습니다 .

git -c "user.name=Your Name" -c "user.email=Your email" commit ...

그러나 위의 구성 옵션을 사용하는 것이 더 낫다고 생각합니다.


git 명령 추가하십시오.

git -c user.email=email@domain.fr -c user.name='Your Name'

원샷으로는 괜찮지 만 git에서 복제 한 로컬 저장소의 .git / config 파일에 저장하는 것이 좋습니다. 이 작업은 실행 git config(--global 또는 --system을 사용하여 "repo에 로컬로 만들기")하거나 .git/config다음과 같은 구문을 편집하여 수행 할 수 있습니다.~/.gitconfig


또한 환경 변수를 설정할 수 있습니다 GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAME, 및 GIT_AUTHOR_EMAIL당 쉘 또는 당 명령 기준으로.


나는 당신이 믿을 수 있지만 믿습니다.

git config user.name "Your Name"
git config user.email you@example.com

git의 다른 부분에 대해. github 서버에 repo에 대한이 수행되는 폴더를 열어 작업.

해당 작업 폴더에 .git 폴더가 있는지 확인하십시오. 이제 터미널 / 콘솔 / CommandPrompt에서 해당 폴더를 사용하는 명령 프롬프트 명령을 실행하여 해당의 사용자 이름과 이메일을 변경합니다.

이제 GitHub 서버에 액세스 할 수 있습니다.

여기를보세요 : https://help.github.com/articles/setting-your-username-in-git

또한 명령 자체에서 github 사용자 이름과 비밀번호를 사용하여 원격 저장소로 푸시하는 방법이 생각하지만 작동하지 갑자기 기 때문에 인용하지 않습니다.


IMO의 제안이이를위한 가장 좋은 방법이기 때문에 Jesse Glick의 답변을 확장 된 구현으로 여기에서 추적합니다.

.bash_profile에 아래를 추가하십시오. 활성 셸에서 git 명령을 처음 사용할 때 사용자를 설치 메시지가 표시됩니다. 그런 다음 모든 다음 실행에 대해 사용자를 기억합니다.

(분명히 입력 사용자 값을 케이스 블록의 다양한 git auther / 이름 값에 대해 정확한 원하는 이름과 이메일 주소로 상호 참조하고 필요에 따라 할당을 업데이트합니다)

git() {
  echo "Running BETTER git..."
  if [ -z "$GIT_COMMITTER_NAME" ]; then
    while true; do
      read -p "Git User: " UNAME
      case $UNAME in
          user1 ) break;;
          user2 ) break;;
          * ) echo "Invalid User";;
      esac
    done
    GIT_COMMITTER_NAME=$UNAME
    export GIT_COMMITTER_NAME
    GIT_COMMITTER_EMAIL=$UNAME@domain.com
    export GIT_COMMITTER_EMAIL
    GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME
    export GIT_AUTHOR_NAME
    GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL
    export GIT_AUTHOR_EMAIL
  fi
  echo "  using git user: $GIT_AUTHOR_NAME / $GIT_AUTHOR_EMAIL"
  /usr/bin/git "$@"
}

또한 환경 변수를 설정할 수 있습니다 GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAME, 및 GIT_AUTHOR_EMAIL당 쉘 또는 당 명령 기준으로.

Git 2.22 (2019 년 2 분기)부터 새로운 옵션 {author,committer}.{name,email}이 있습니다 user.{name,email}.보다 구체적인 경우 에 재정의하기 위해 4 개의 새로운 구성 변수 가 도입되었습니다 .

William Hubbs (``)의 commit 39ab4d0 (2019 년 2 월 4 일)을 참조하십시오 . (Merged by Junio ​​C Hamano -- in commit 4e021dc , 07 Mar 2019)
gitster

config: 별도의 작성자 및 커미터 ID 제공 허용

author.email, author.name, committer.emailcommitter.name설정이 유사하다 GIT_AUTHOR_*GIT_COMMITTER_*에 대한 환경 변수,하지만 git config시스템.
이를 통해 각 저장소에 대해 별도로 설정할 수 있습니다.

Git은 환경 변수를 사용하여 다른 작성자 및 커미터 정보 설정을 지원합니다. 그러나 환경 변수는 셸에 설정되므로 다른 저장소에 대해 다른 작성자 및 커미터 정보가 필요한 경우 외부 도구가 필요합니다.

이렇게 author.email하면 author.name, committer.emailcommitter.name설정에 대한 git config에 대한 지원이 추가되어이 정보를 저장소별로 설정할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/19840921/override-configured-user-for-a-single-git-commit

반응형