有没有办法强制提交者在Git Bash中输入他们的用户名

时间:2012-12-10 14:48:15

标签: git batch-file remote-access githooks git-bash

我有一些代码库,一些开发人员通过RDP工作并使用远程计算机上的IDE。我想知道是否有办法强制他们在提交更改时输入自己的名字。现在Git默认我的名字,这非常令人讨厌,因为我不是那个做出改变的人。

当某些内容被推送到GitHub时,它会询问用户名/密码,但我似乎无法在提交列表中找到该用户信息的任何指示。

** 编辑 ** FYI **

我的初衷是强制每次运行提交命令时,在共享帐户(不可避免)下登录的用户输入其user.nameuser.email凭据。为了实现这一点,我尝试使用Windows的登录脚本,每次登录时都会清除并设置这些值;

@echo off
cls

REM * Notify user
echo Clearing Git user information...

REM * Go to Git directory
cd C:\"Program Files (x86)"\Git\bin\

REM * Clear user information
git config --global --remove-section user

REM * Get the user's name
set /p name= Please enter your first name:

REM * Get user email
set /p email= Please enter your email:

REM * Set Git configuration
git config --global user.name "%name%"
git config --global user.email "%email%"
::REM * exit
exit

但是我无法通过RDP(它是主要用例)始终如一地工作。

这导致我尝试使用Git的pre-commit钩子,我基本上使用了为Bash修改的相同脚本。这也行不通,因为Git在调用钩子之前会分配“作者”。

换句话说,如果用户配置为name = jimemail = bob@test.com,则Git日志会将作者设为jim<bob@test.com>,然后 next 提交将具有输入的信息。

#!/bin/sh
#
exec < /dev/tty

# Notify user
echo "Clearing Git user information..."

# Go to Git directory
#cd c:\"Program Files (x86)"\Git\bin\

# Clear user information
git config --global --remove-section user

# Get the user's name
echo "Please enter your first name: "
read name

# Get user email
echo "Please enter your email: "
read email

echo name: $name email: $email
read -n 1

# Set Git configuration
git config --global user.email $email
git config --global user.name $name
#exit

1 个答案:

答案 0 :(得分:3)

你看起来处于一个肮脏的开发设置中,所以很脏:

创建一个用于删除Git用户名和电子邮件的登录脚本,开发人员必须在每次连接到计算机时输入它。

git config --remove-section user
然后,如果没有配置,Git会在第一次运行时询问姓名/电子邮件。

当然,创建Windows用户会话并使用每个用户的Git配置更好:)