Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我创建分支时git不认识我?_Git_Github - Fatal编程技术网

为什么我创建分支时git不认识我?

为什么我创建分支时git不认识我?,git,github,Git,Github,当我创建一个分支时,它不会识别我的git名称,而是MV-WAG-SCM。见下图 git config--list产生: credential.helper=osxkeychain push.default=current pull.default=current pull.rebase=true user.email="myname@gmail.com" -> This is correct core.repositoryformatversion=0 core.filemode=tru

当我创建一个分支时,它不会识别我的git名称,而是
MV-WAG-SCM
。见下图

git config--list
产生:

credential.helper=osxkeychain
push.default=current
pull.default=current
pull.rebase=true
user.email="myname@gmail.com" -> This is correct
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
....items related to remote branches
username.user=myUserName -> This is correct
username.email="myname@gmail.com" -> This is correct

我也不能推动任何改变。。。怎么了?

这里有一大堆重要的事情要记住。以下是最重要的两个:

  • Git是分布式的,这意味着涉及到很多不同的计算机。每个人都有自己的想法
  • GitHub不是Git!GitHub是一家提供Git服务的托管公司。它们用一个奇特的接口隐藏了实际的Git实现。这种奇特的接口并不是Git的一部分,而且很多接口几乎不使用Git
现在,您显示的图像片段来自GitHub。因此,它向您展示了GitHub所说的,实际上,它与您现在可以在自己的Git存储库中设置的任何内容都没有任何关系。它可能与您今天早些时候、昨天或Git存储库中的任何时候设置的内容有关

git config--list
生成

这些是您在计算机上设置的设置。您可以随时更改它们

请注意,您的个人设置有两个(或更多)不同的位置。Git调用这些
--global
--local
。Git2.20和2.21添加了一个新的版本,
--worktree
,您可能没有使用它。使用
git config--list--show origin
查看哪个位置存储哪个设置

..与远程分支相关的项目

username.user=myUserName -> This is correct
username.email="myname@gmail.com" -> This is correct

这些可能是正确的,但我找不到任何使用
username.user
username.email
设置的内容。(可能有一些东西,但Git允许您毫无怨言地将任何东西设置为任何东西。例如,如果您为某个软件设置了
zaphod.beeblebrox=heads:2
,但却意外地运行了
Git config hoopy.frood tower
,Git对此不会有任何怨言,也不会对Git有任何意义。)

第一个是有意义的,但一般来说,大多数人应该保留默认的
push.default
设置
simple
。第二个没有意义

这一条无疑是正确的。但是,您引用的列表中缺少的另一个是
user.name

现在,重要的是要认识到,
user.name
user.email
仅在使用Git创建新提交时由Git使用。此时,在您进行提交时,Git会读取这两个设置。无论它们里面有什么,都会进入新的提交。新的提交一旦完成,将一直冻结。您可以进行其他具有不同用户名和/或电子邮件设置的提交,如果您刚刚进行的提交具有错误的设置,您可能应该进行另一次提交。但是你所做的任何承诺都有错误的成分,永远都有错误的成分

还不错!您根本不必一直使用错误的提交。例如,如果您进行了错误的提交,您可以更改内容并运行
git commit--amend
,以丢弃错误的提交,并用更好的提交替换它。被抛出的一个仍保留在您的存储库中,但它被推到了一边,您和其他人都看不到它,并且当您运行
gitpush
时,它不会被发送到其他Git。例如,使用git-rebase-i--reset-author,您可以修复的不仅仅是最后一次提交。像
--修改
,它不会更改任何提交;相反,它制造新的和改进的,并停止使用旧的和糟糕的。1

当您运行
git log
时,将显示您在配置中设置的用户名和电子邮件,这些用户名和电子邮件已被复制到您已经进行的任何提交中。用户名和电子邮件这两项可以是您想要的任何内容。任何人、任何事都无法阻止您在此处使用他人的姓名和电子邮件地址。这些提交将进入您的存储库,在您的计算机上,您可以使用自己的计算机执行任何操作

但是现在您已经进行了一些新的提交,现在您可能希望让您的Git将这些新的提交发送到其他Git存储库。其他Git存储库可以托管在任何地方,可能包括GitHub上。如果你向GitHub发送了一份新的承诺,他们不会仅仅相信你是巴拉克·奥巴马或其他人。所以,现在你必须验证你自己。这就是该设置可能发挥作用的地方:

如果您通过https连接到GitHub,Git将需要使用凭证助手,这将告诉它使用哪个凭证助手。如果您通过ssh连接到GitHub,ssh有自己独立的机制;此
credential.helper
设置将被忽略

我也不能推动任何改变。。。怎么了

可能是两件事中的一件或两件:

  • 您尝试向GitHub进行身份验证失败:他们不相信您是您声称的那个人

  • 或者,他们确实相信你是你所声称的那个人,但那个人无权推动

根据你在这里发布的内容,我们无法判断哪种情况是这样。但是GitHub返回给Git的错误消息,以及Git传递给您的错误消息,将告诉您哪种情况是这样的(或者是否有不太明显的可能性)。因此,请了解您是如何进行身份验证(或未能进行身份验证)的,如果验证成功,您是否拥有推送权限。纠正其中任何一个问题(可能两者都有)

一旦您解决了所有这些问题,最后一个障碍是:Git推动提交。请记住,我们之前说过,所有的承诺都将永远冻结在时间中。当你的Git向他们的Git发送一个提交时,你的Git将提交的唯一名称交给hash ID,并且只交给提交;没有其他委员会
push.default=current
pull.default=current
user.email="myname@gmail.com"
credential.helper=osxkeychain