Sru*_*rai 5 git bash push github git-bash
不确定它是否是问这个问题的正确地方,我无法理解某些东西,谷歌搜索也没有帮助。
我一直在参考git教程,(显然意味着我是新手)。
我学会了git remote -v检查远程状态的命令。好了,所有的git的教程民政事务快照像这样,显示结果:
origin https://github.com/something/something-else.git (fetch)
origin https://github.com/something/something-else.git (push)
Run Code Online (Sandbox Code Playgroud)
但是,当我试图命令我得到类似的结果为origin,以及github。像这样的东西:
github https://github.com/srujan7/something-something-url.git (fetch)
github https://github.com/srujan7/something-something-url.git (push)
origin https://github.com/srujan7/something-something-url.git (fetch)
origin https://github.com/srujan7/something-something-url.git (push)
Run Code Online (Sandbox Code Playgroud)
问题:
我不确定 thisgithub和originhere 是什么意思。为什么我收到了两次?(与教程不同)我也不确定是否做错了什么,或者完全正确。将我指向其他一些解释这一点的教程也可以。
随时提出修改建议。
Git 支持多个遥控器,所以这是一个足够正常的状态。 编辑:正如sschuberth 回答的那样,多个遥控器具有相同的 URL 不太正常。这无害,但您不妨删除其中之一。
远程仅仅是一个名称,如origin或upstream或github或甚至fred或srujan。
Git 将每个这样的名称存储在一个配置文件中。然后,在该名称下,Git 可以存储其他信息,例如一个或多个 URL。(要使遥控器有用,它需要至少有一个 URL,作为其url设置存储。)对于获取,Git 通常fetch每个遥控器也至少需要一个设置。
git remote -v列出两个或更多遥控器时最常见的是,您的每个 Git 存储库都只有一个远程,通常命名为origin. 这是因为当git clone通过复制一些现有存储库来创建新存储库时,它会记录(在新存储库中)现有存储库的 URL。为了记录这一点,它创建了一个遥控器,默认情况下,它使用该origin遥控器的名称。
该git remote add子命令添加了额外的遥控器。您为远程指定一个名称和一个 URL,Git 记录新的远程名称并将其主 URL 设置为您刚刚提供的那个。
在此之后,git remote或git remote show将列出您设置的两个(或更多)遥控器。
当您运行git fetch或 时git push,下一个词通常是要从中获取或推送到的远程名称。例如,git fetch origin从名为 的远程获取origin。
如果您有两个遥控器,一个名为 fred,一个名为 srujan,您可以git fetch fred或git fetch srujan。同样,您可以git push fred或git push srujan。这些将使用存储在该遥控器下的 URL 联系指定的遥控器。
当从远程获取时,您的 Git 将复制其 Git 的分支,但重命名它们以便它们对于该特定远程是唯一的。例如,如果我从 remote 获取srujan,并且 srujan 的 Git(在指定的 URL 处)有分支masterand develop,我将得到名为and 的远程跟踪分支。如果我然后从 remote 获取,我将获得远程跟踪分支,如和。srujan/mastersrujan/developfredfred/masterfred/develop
git pull?该git pull命令旨在成为git fetch后跟git merge. 像git fetch,git pull需要第三个词,即遥控器的名称。git pull与此有关的主要事情是将其交给git fetch.
奇怪的git pull是它也需要分支名称。它以一种奇怪的方式使用这些:git pull srujan master意思是“git fetch srujan先运行,然后运行git merge surjan/master”。
通常你最好只是运行git fetch自己,至少在第一,因为它可能要么取指步骤就是失败的(如果您的网络连接出现故障,例如)或合并步骤就是失败的(如果合并不能被自动完成)。在您非常熟悉 Git 之前,我相信您最好准确地知道哪一步出错了,因为您需要采取不同的措施来修复它,这取决于哪一步失败了。
您可能还想变基而不是合并。如果有的话,这比合并更复杂(尽管通常也是更好的方法)。你可以得到git pull做底垫,而不是合并,实际上可以让这个自动发生,但细节有点复杂,并手动运行git fetch,然后再git rebase第二,是不是在所有复杂。
(简而言之,在git pull您非常熟悉获取、合并和变基,并准备好让 Git 尝试一次性完成所有这些操作之前,请不要使用。)