Git的配置文件会导致不同的行为,两个类似的环境之间

问题描述 投票:1回答:2

我有Ubuntu的v 16.04.2 LTS两台Linux服务器 - 一个用于开发/测试和其他生产。在这两个.git的/配置文件的结构类似的结构:

生产的.git / config文件:

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@bitbucket.org:gt/project.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

发展的.git / config文件:

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@bitbucket.org:gt/project.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

我能够从我的使用开发服务器存储库拉代码:

sudo git pull git@bitbucket.org:gt/project.git master

当我使用相同的命令拉码到生产服务器,我收到以下错误信息:

From bitbucket.org:gt/project
 * branch            master     -> FETCH_HEAD

*** Please tell me who you are.

Run

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

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'root@prod.(none)')

虽然我知道我可能需要改变我的.git / config文件用于生产服务器,那为什么我能够成功地拉码成具有相同的.git / config文件我的开发服务器?我应该怎么找我的生产和开发服务器之间的差异来解决这个问题?

git ubuntu-16.04
2个回答
0
投票

Git有额外的配置文件(见1)。最有可能的user.nameuser.email生产设置在~root/.gitconfig这些设置都在自己的用户配置(亦称--global)失踪。

您还可以检查其中设置存储:

git config --show-origin --get-all user.name

0
投票

您正在运行:

须藤GIT中拉git@bitbucket.org:GT / project.git主

一个Git拉力的组合取带来的远程分支信息和提交到本地存储库中,并合并从远程这些更改合并到本地分支。

如果没有在本地的任何改变,那么这将导致一个快进合并,这实际上不是一个“合并”的说法。有认为需要纳入当地没有变化,所以不是试图从两个不同的分支变化结合,混帐可以简单地更新本地分支指向远程的承诺。

但是,如果你做了本地修改,那么他们实际上需要用遥控器改变合并。作为合并提交的结果将被提交。

如果你没有配置user.nameuser.email设置,合并无法继续,且您将看到此错误消息,因为需要这些信息来创建合并提交。

您可以运行git log看到发生了什么,一直致力于在生产服务器上。修补程序在生产吧?

保证所生产的变化包括在遥控器中,或者你可以完全抹杀这些变化和强制更新与git reset --hard origin/master遥控器。