" git clone -n​​ repository"之后的哪个命令获得与" git clone repository"相同的结果?

时间:2015-11-16 19:14:13

标签: git

我真的很喜欢Git,我想做同样的事情:

git clone repository dirname

但我想分两个阶段完成:

phase1: git clone -n repository dirname
phase2: git "unknown command"

那是什么"未知命令"得到与此一样的确切结果:

git clone repository dirname

我在dirname中尝试了git checkout但它不起作用。它只列出文件,但之后dir保持为空(仅包含.git dir)。文档说它应该是git checkout <branch>,但我不知道哪个分支。如果我做单相,我不需要知道分支:

git clone repository dirname. 
  • 那么两阶段相当于什么而不需要明确指定分支?

编辑:

git checkout HEADgit checkout master无效 - 与仅git checkout一样的结果

2 个答案:

答案 0 :(得分:2)

手册说-n表示:

  

克隆完成后,不会检查HEAD。

所以当您使用-n时缺少的步骤是“结帐HEAD”......就这样做。即git checkout HEAD

为什么你想这样做吗?如果你是初学者,为什么不尝试做一些有用的东西,而不是这个呢?

答案 1 :(得分:2)

通过反复试验,我最终找到解决方案,我希望它没问题。从内部dirname调用:

git checkout -- *

换句话说,单阶段:

git clone repository dirname

似乎等同于&#34;两阶段&#34;:

git clone -n repository dirname
cd dirname
git checkout -- *
cd ..

测试在Windows上工作(git版本2.6.3.windows.1)

但有趣的是在使用git版本1.7.10.4的Linux上输出错误: &#34;错误:pathspec&#39; *&#39;与git已知的任何文件都不匹配。&#34;

所以可能它的一些较新的功能在原始git中不可用。它在此记录(参见实施例部分):http://git-scm.com/docs/git-checkout

编辑: 它更复杂。在某些情况下,我得到&#34;错误:pathspec&#39; *&#39;与git已知的任何文件都不匹配。&#34;甚至在Windows上的新git上也是如此。但在这种情况下,简单git checkout有效。奇怪的行为。如果git checkout -- *工作,那么git checkout不起作用,如果git checkout工作,则git checkout -- *不起作用。换句话说,git checkout -- * XOR git checkout起作用。 : - )

编辑: 如果那&#34;就地&#34; checkout不起作用,那么临时存储库克隆的方法也可以工作:

git clone dirname dirname_temp
rmdir "dirname_temp/.git"
xcopy /E /H /Y /C "dirname_temp/*" "dirname"
rmdir "dirname_temp"