Tek bir git işleme için yapılandırılmış kullanıcıyı geçersiz kıl


110

Git sunucusu için zaten yapılandırılmış olan iş dizüstü bilgisayarımdan github.com'da bir projeye bağlanmaya çalışıyorum . Farklı yazar kimlik bilgilerini belirtmenin, farklı bir yapılandırma dosyası veya başka komut satırı anahtarları kullanarak mümkün olan bir yolu var mı?

Kullanmayı denedim

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

ve mesajı aldım:

 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

ancak github.com projesine katılmak için kullanıcı adımı yine de güncellemedi. Deneyebileceğim başka bir şey var mı ve bu mümkün mü?


2
Git arasında ayrım yazar ve committer . Kaydediciyi bir komuta geçici olarak ayarlamak için, kullanın -c user.name=Me user.email=me@example.com. Özel bir genel yapılandırma kullanmak için bu soruya bakın veya -cseçenekleri içeren bir kabuk diğer adı kullanın . Ancak bunların hiçbiri muhtemelen bu durumda yapılacak doğru şey değildir - repo başına yapılandırma istersiniz.
Robin Green

Git 2.22 (Q2 2019) ile özel ayarlara sahip olacaksınız {author,committer}.{name,email}. Aşağıdaki cevabımı görün
VonC

Yanıtlar:


196

Birincisi, yazarın işleyenle aynı olması gerekmez. Git ikisini de izler.

Yalnızca bu arşiv için hangi adın kullanılacağını belirlemek için şunları yapabilirsiniz:

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

--globalSeçeneğin yokluğuna dikkat edin . Bu, yapılandırmayı yalnızca bu havuzda ayarlayacaktır.

Alternatif olarak, şu seçeneği kullanarak bunu yalnızca tek bir komut için yapabilirsiniz -c:

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

Ancak yukarıdaki yapılandırma seçeneklerini kullanmanın daha iyi olacağını düşünüyorum.


8
Paylaşılan hesaptan (devel sunucusundaki kök) kendi adıma git repo'ya geçmem gerektiğinden ve başkalarına adımın / e-postamın teklif edilmesini istemediğim için tam da ihtiyacım olan şey buydu.
andrej

60

Bunu git komutunuzun başına eklemeyi deneyin:

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

Bu tek seferlik bir çekim için uygundur, ancak bunu git'ten klonladığınız yerel deponun .git / config dosyasına kaydetmeyi tercih edebilirsiniz. Bu, çalıştırılarak git config ("depoya yerel" yapmak için --global veya --system yok) veya düzenleyerek .git/config(aynı sözdizimidir.~/.gitconfig


1
Teşekkür ederim! Bir sunucuyu birden fazla kişiyle paylaşıyorum ve varsayılan bir kullanıcı ayarlamak istemiyorum. Bu harika!
horriblyUnpythonic

1
@horriblyUnpythonic, rica ederim :) Ayrıca bir takma ad oluşturabilir .bash_aliasesve / veya kullanıcı tanımlı olmadığında kaydetmeyi reddetmek için bir ön işleme kancası da ayarlayabilirsiniz.
Asenar

28

Ayrıca çevre değişkenleri ayarlayabilirsiniz GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAMEve GIT_AUTHOR_EMAILbir başına kabuk hatta başına komuta bazında.


Harika, bu çoğunlukla paylaşılan bir bilgisayar senaryosunda kullanılacağı için, otomatik temizleme ile oturum başına mükemmel.
kmac

1
Benim için çalışmadı. Yazar daha sonra aynı kaldı git commit --amend. Sadece commiter değişti.
Ondra Žižka

Burada da aynısını yaptımgit commit --amend --author="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
KCD

1
Bunun nedeni git commit --amend, kılavuzun dediği gibi tasarım gereği yazarı değiştirmemesidir. Çözüm: git commit --amend --reset-author
kubanczyk

7

Koşabileceğine inanıyorum:

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

git'in farklı bölümleri için. Depo için işin yapıldığı klasörü github sunucusuna açmayı deneyin.

Bu çalışma klasöründe bir .git klasörü gördüğünüzden emin olun. Şimdi bu klasörü Terminal / Konsol / CommandPrompt'ta açın ve bu klasörün kullanıcı adını ve e-postasını yalnızca yukarıda belirttiğim komutları çalıştırarak değiştirmeyi deneyin.

Bunu değiştirerek artık GitHub sunucusuna erişebilirsiniz.

Burada bir göz atın: https://help.github.com/articles/setting-your-username-in-git

Ayrıca, komutun kendisinde github kullanıcı adınızı ve şifrenizi kullanarak uzak bir depoya itmenin bir yolu olduğuna inanıyorum, ancak benim için çalışmadığı için alıntı yapmıyorum.


5

Jesse Glick'in yanıtını burada genişletilmiş bir uygulama ile takip edin çünkü IMO'nun önerisi bunun için en iyi yoldur.

Aşağıdakileri .bash_profile dosyanıza ekleyin. Aktif kabukta herhangi bir git komutunu ilk çalıştırdığınızda sizden bir kullanıcı soracaktır. Daha sonra kullanıcıyı sonraki tüm çalıştırmalar için hatırlayacaktır.

(bir giriş kullanıcı değerini, vaka bloğundaki çeşitli git auther / name değerleri için tam olarak istenen adlara ve e-posta adreslerine çapraz referanslayın ve atamaları gerektiği gibi güncelleyin)

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 "$@"
}

2

Ayrıca çevre değişkenleri ayarlayabilirsiniz GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAMEve GIT_AUTHOR_EMAILbir başına kabuk hatta başına komuta bazında.

Aslında Git 2.22'den (Q2 2019) bu yana yeni bir seçeneğiniz var: Daha özel durumlarda {author,committer}.{name,email}geçersiz kılmak için dört yeni yapılandırma değişkeni tanıtıldı user.{name,email}.

Bkz. 39ab4d0 (04 Şubat 2019), William Hubbs (``) .
( Junio ​​C Hamano ile birleştirildi - gitster- in commit 4e021dc , 07 Mar 2019)

config: ayrı yazar ve kaydedici kimliklerinin verilmesine izin ver

author.email, author.name, committer.emailVe committer.nameayarlar benzerdir GIT_AUTHOR_*ve GIT_COMMITTER_*için ortam değişkenleri, ancak git configsistemin.
Bu, her bir havuz için ayrı ayrı ayarlanmalarına izin verir.

Git, ortam değişkenleriyle farklı yazarlık ve kaydedici bilgilerinin ayarlanmasını destekler. Bununla birlikte, ortam değişkenleri kabukta ayarlanır, bu nedenle farklı havuzlar için farklı yazarlık ve kaydedici bilgileri gerekirse, harici bir araç gerekir.

Bu, git config for author.email, ve ayarlarına destek ekler author.name, böylece bu bilgiler depo başına ayarlanabilir.committer.emailcommitter.name

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.