2016-08-04 22 views
1

我的困境:Git集成应用程序如何知道我可以推送到主分支?

我使用Visual Studio和Brackets。两者都可以将Git集成到它中,但是,可以说Visual Studio与GitLab上的存储库进行对话,而Brackets与Github上的存储库进行对话。

每个应用程序如何知道我可以推送到每个存储库的主分支,即使每个网站的帐户都是使用不同的密码创建的?

我不知道怎么回事这个词,但另一个切线:

在Visual Studio中,我可以覆盖全球的用户名和电子邮件。这是为什么当我使用不同的电子邮件设置存储库?如果有人有我的电子邮件,他们不能只是推送到我的存储库中的主分支?

Git如何知道?我只需要一个很好的解释。

回答

1

登录到GUI时用于验证用户的凭据Gitlab或GitHub不一定与计算机上的Git客户端程序用于在从相应远程存储库推入/拉出时进行身份验证时使用的凭据相同。

我打算假设这里使用的是SSH。不是你公开的,而是你正在使用的工具。如果每次执行与远程存储库进行通信的Git操作时没有输入密码,并且尚未将密码输入到IDE中,那么使用SSH确实是

如果您正在推拉SSH协议(这很常见),那么计算机的Git客户端正在使用您的计算机的Git客户端(由IDE使用该客户端)与Gitlab和GitHub进行身份验证。密码密钥对与您的电子邮件或密码完全无关。由于某些其他用户无法访问您的私钥,甚至可能甚至没有公钥,因此无法通过SSH进行身份验证。

让我知道我是否可以为你澄清任何事情!

+0

好的真棒,使更多的意义,但我没有使用SSH,我不相信我的软件也是。我简单地启动了程序并开始使用Git,并且我能够推送到主服务器并进行同步。这是因为软件在我的机器上获得了全局git用户,并发现它与托管存储库的用户相匹配? 我确实通过Git Client输入了我的密码,所以我认为“设置”我的机器为该用户。在这方面,如果我为GitHub设置了GitLab,它又是如何工作的? – asblargh

+0

在您的计算机上缓存凭证取决于您使用的某些配置和操作系统。请参阅:https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage我提到它,因为我认为它可能是你通过https而不是SSH与服务器交谈的情况。要仔细检查您是否使用SSH,请登录到您的Github和Gitlab GUI并转到您的帐户设置并查看您的密钥。将居住在本地机器上的密钥与生活在那里的任何密钥进行比较。如果没有或没有匹配,那么您的凭证必须缓存,否则您使用SSH! – rdgd

+0

如果您在Mac OSX或Linux上,您可以在以下位置找到您的公共密钥,该密钥将作为授权密钥存储在远程Git服务器的以下位置中:〜/ .ssh/id_rsa.pub。文件名“id_rsa.pub”是rsa公钥的最常用/默认名称。 – rdgd