创建分支时,它无法识别我的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
Run Code Online (Sandbox Code Playgroud)
我也无法推动任何更改...怎么了?
这里有很多重要的事情要牢记。以下是前两个:
现在,您显示的图像片段来自GitHub。因此,它向您展示了GitHub所说的内容,从字面上看,它与您现在可以在自己的Git存储库中设置的任何内容完全无关。它可能与您在Git信息库中之前(今天或昨天或任何时候)设置的内容有关。
git config --list产量...
这些都是你设定的设置您的计算机。您可以随时更改它们。
请注意,您的个人设置有两个(或更多)不同的位置。Git的调用这些--global和--local。Git 2.20和2.21添加了一个新的--worktree,您可能没有使用过。用git config --list --show-origin看哪个地方哪个存储设置。
....与远程分支机构有关的项目
Run Code Online (Sandbox Code Playgroud)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 towel,Git对此不会有任何抱怨–都不意味着任何事情。到Git。)
Run Code Online (Sandbox Code Playgroud)push.default=current pull.default=current
第一个是有意义的,但是通常,大多数人应该保留默认push.default设置simple。第二个没有意义。
Run Code Online (Sandbox Code Playgroud)user.email="myname@gmail.com"
这无疑是正确的。剩下的一个真实缺少从你引用的名单,虽然是user.name。
现在,重要的是要意识到这一点user.name,user.email并且只有当您使用Git创建新的commit时,Git 才会使用它。那时(在您进行提交时),Git会读取这两个设置。无论其中有什么内容,都进入新提交。新提交一旦被冻结,将一直冻结。您可以进行其他具有不同用户名和/或电子邮件设置的提交,并且如果刚进行的提交具有错误的设置,则可能应该进行另一次提交。但是,任何承诺,你没有作出具有错误的东西在里面,有一个错误的东西在里面永远。
还算不错!您根本不必继续使用错误的提交。例如,如果您提交了错误的提交,则可以更改内容并运行git commit --amend以抛出错误的提交,并用更好的提交来代替。被丢弃的文件仍保留在您的存储库中,但已被淘汰,您和其他所有人都看不到它,并且在您运行时不会将其发送到其他Git git push。例如,您可以使用修复不仅仅是上一次提交的问题git rebase -i --reset-author。就像--amend它不会更改任何提交;相反,它制作了新的和改进的,并停止使用旧的和糟糕的。1个
您在配置中设置的用户名和电子邮件(已复制到您已经进行的任何提交中)在运行时显示git log。用户名和电子邮件这两个项目可以是您想要的任何内容。没有人可以阻止您在此处使用其他人的姓名和电子邮件地址。这些提交正在进入你的资料库,在您的计算机,你可以做你希望使用自己的电脑什么的。
但是,既然您已经进行了一些新的提交,现在您可能希望让Git 将这些新的提交发送到其他Git存储库。其他Git存储库可以托管在任何地方,包括GitHub。如果您确实向GitHub发送新提交,那么他们不仅会相信您是Barack Obama还是其他人。因此,现在您必须进行身份验证。这是此设置可能起作用的地方:
Run Code Online (Sandbox Code Playgroud)credential.helper=osxkeychain
如果您通过https连接到GitHub,则Git将需要使用凭据帮助程序,这会告诉它使用哪个。如果您通过ssh连接到GitHub,则ssh具有其自己的独立机制。此credential.helper设置将被忽略。
我也无法推动任何更改...怎么了?
可能是以下两项之一或全部:
您尝试向GitHub进行身份验证的尝试失败了:他们不相信您是您声称的身份。
或者,他们确实相信您是您自称的人,但该人无权推送。
根据您在此处发布的内容,我们无法确定是哪种情况。但是GitHub传递回您的Git并将您的Git传递给您的错误消息会告诉您是哪种情况(或者是否不太明显)。因此,找出您是如何进行身份验证(或身份验证失败)的,以及是否成功,是否具有推送权限。纠正其中的任何一个都是问题(也许两者都有)。
一旦解决了所有这些问题,最后一个绊脚石就是:Git push commits。请记住,我们之前曾说过,所有提交都将被永久冻结。当您的Git向其Git发送提交时,您的Git会移交哈希ID,该ID与该提交一起唯一的名称,并且只有该提交;没有其他提交具有该哈希ID名称-并且,如果他们还没有该提交,则Git移交他们需要的所有内容,以便他们也可以拥有该提交。
因此,在所有这种疯狂的Rube-Goldberg式机制都将您的提交传达到存储在GitHub上的Git存储库之后,它们将具有一些新的提交集-可能只是一个提交,也许是一整串提交-他们以前没有。最后,您的Git将要求其Git设置其分支名称之一,或创建一个新的分支名称,以记住这些提交中的最后一个。2 然后,GitHub将获取存储在这些永久冻结的提交中的电子邮件地址,并在一个巨型数据库中查找它们。
该数据库是GitHub(不是Git!)决定谁进行提交的方式。保持翻译及其正常运行取决于GitHub及其数据库。他们为此有两种不同的幻想方案。参见例如https://help.github.com/en/articles/what-happens-when-i-change-my-username和相关文章。他们还可以控制在现有的冻结提交中看到那些电子邮件地址时将其视为“您”的电子邮件地址。
如果使用命令行Git,则可以在自己计算机上的存储库中看到Git存储的内容。如果您使用GitHub Web界面,则会从Git存储的内容中看到GitHub转换为的内容。实际的存储在提交本身中,因此,除非您将提交存储在GitHub上的Git存储库中,否则GitHub无法进行任何翻译。
1如果通过运行已经向其他Git发送了错误的提交git push,则您有问题。这不一定是一个大问题,但是最好在运行之前确保您具有正确的提交git push。在您将这些不良提交分散到整个宇宙中数百万其他Git克隆之前,甚至在GitHub托管的另一个Git克隆上,将这些不良提交扔掉,转而使用改进的替换提交,要容易得多。不过,这里的真正意义在于,您不能更改提交,只能将其替换为新的和改进的提交。如果你这样做之前,任何人都曾经看到什么,他们 永远不会知道您的提交错误!
2最后一次提交自动记住前一个的哈希ID。那是最后一次提交的父项。父提交记得它的母公司,它可以记住另一位家长,等等,所以从最终,Git的可向后工作的开始。这个向后看的链条是存储库中的历史!从头开始显示一个提交,然后返回到其父级,这是您或其他任何人可以查看历史记录的方式。提交及其关系(父,子,兄弟或完全不相关)确定存储在存储库中的历史记录。该分支名称只是作为一种方法来找到了最后 提交。