为什么;“git克隆”;当我能用“我能做同样的事”;git pull“;“之后”;git init“;?
我已经使用为什么;“git克隆”;当我能用“我能做同样的事”;git pull“;“之后”;git init“;?,git,Git,我已经使用gitinit创建了一个git存储库,并通过使用git remote add origin添加了一个远程repo URLhttps://remote-url 当我使用git branch--set upstream to=origin/master跟踪远程分支,在设置必要的上游分支后执行git pull origin master时(我的本地主分支在执行git checkout master后被设置为跟踪远程主分支),我能够将远程项目分支的所有修订历史记录拉入本地repo 如果我可以用
gitinit
创建了一个git存储库,并通过使用git remote add origin添加了一个远程repo URLhttps://remote-url
当我使用git branch--set upstream to=origin/master
跟踪远程分支,在设置必要的上游分支后执行git pull origin master
时(我的本地主分支在执行git checkout master
后被设置为跟踪远程主分支),我能够将远程项目分支的所有修订历史记录拉入本地repo
如果我可以用
git pull
很好地做到这一点,那么为什么git提供git clone
作为一个单独的命令和替代方案呢?它有什么特殊用途吗?或者我一个人做git pull会错过什么吗?这不是一个不合理的问题。但这一条也是如此:
您可以运行:
git write-tree
git commit-tree -p HEAD -m message <hash-from-git-write-tree>
git branch -f <current-branch> <hash-from-git-commit-tree>
那么为什么我们有一个gitcommit
命令呢
下面是一个问题:以下哪一个更容易使用
git clone命令实际上相当于运行多达六个命令,其中五个是git命令。git clone中涉及的六个步骤是:
mkdir path
,创建一个新的空目录,在其中运行git init
。(在特殊情况下跳过此步骤,在这种情况下,您为现有但为空的目录提供git clone
路径名,在这种情况下,它将使用该路径名。)git init
,在新目录中创建新的空存储库git remote add remote url
,其中remote
来自您的git clone
选项-o
,或者如果未指定此选项,则为origin
,并且url
是您在clone命令中指定的git clone
的选项中的任何其他git config
命令git fetch remote
,从git提供的URL获取提交git签出分支
,其中分支
是您在git clone
命令中使用-b
选项指定的分支,或者是其他git指定的分支(如果您未指定分支),或者主分支
(如果其他git未指定任何分支)git clone
命令还处理在此过程中可能发生的各种错误,否则您必须自己处理这些错误
git pull
命令相当于在运行第二个git命令之后运行git fetch
。第二个命令通常是gitmerge
,不过您可以告诉git使用gitrebase
。但是,git-pull
还有一种特殊模式:当您将git-pull
放入一个完全空的存储库时,正如您在问题中所做的那样,它可以作为第二个命令运行git-checkout
,而不是其他两个命令中的任何一个
注意:与
git clone
不同,在这六个步骤之间很少需要任何东西,使用git pull
时,我通常需要在运行第二个命令之前检查git fetch
获得的提交。因此,我通常完全避免使用git pull
,因为它迫使我选择第二个命令来运行,并在完成提取步骤后立即运行它,在提取之后,在我选择使用合并还是重新基之前,我想做些其他事情,或者完全是别的什么。如果每次你想克隆的时候都需要这些体操,那就太不友好了。
git commit -m message