我一直在想是否有一个很好的"git export"解决方案,它创建了一个没有.git存储库目录的树的副本.我知道至少有三种方法:
git clone然后删除.git存储库目录.git checkout-index 提到这个功能,但开头是"只需将所需的树读入索引...",我不完全确定如何做.git-export是第三方脚本,基本上git clone进入临时位置,然后rsync --exclude='.git'进入最终目的地.这些解决方案都没有让我感到满意.最接近的一个svn export选项可能是选项1,因为这两个都要求目标目录首先为空.但是假设我可以弄清楚将树读入索引意味着什么,选项2似乎更好.
如何检查远程存储库是否已更改,我需要拉?
现在我使用这个简单的脚本:
git pull --dry-run | grep -q -v 'Already up-to-date.' && changed=1
Run Code Online (Sandbox Code Playgroud)
但它相当沉重.
有没有更好的办法?理想的解决方案是检查所有远程分支,并返回已更改分支的名称和每个分支的新提交数.
我想跟踪一个使用git的项目.我不想克隆完整的存储库和完整的历史记录,我只想要最新版本,我希望能够从远程项目更新到新版本.
我尝试过使用git clone,但这会创建整个存储库的副本(文件大小很大),并且跟踪更改会使磁盘空间更大(100mb的文件现在占用超过2gb).
我不打算提交补丁,我不需要历史记录.我只想要像颠覆这样的最新版本.
这可能在git中吗?
我看到一些奇怪的东西:
http://github.com/zoul/Finch.git
现在我不是那个CVS,SVN等老兄.当我在浏览器中打开它时,它告诉我我做错了什么.所以我打赌我需要一些黑客风格的工具?一些客户?
(我的意思是......为什么不提供一个ZIP文件呢?这个世界不够复杂吗?)
git做克隆时是否有传递给的标志,比如说不克隆.git目录?如果没有,.git克隆后删除目录的标志怎么样?
我想从github远程存储库导出,而不是克隆它.与svn export类似,我不想用它获取.git文件夹.我可以通过克隆和删除.git文件夹来解决它.我想知道是否有更清洁的方式?
我在某处读到了你可以使用git archive来实现这一点.
但是我收到以下错误..
$ git archive --format=tar --remote=git@github.com:xxx/yyy.git master | tar -xf -
Invalid command: 'git-upload-archive 'xxx/yyy.git''
You appear to be using ssh to clone a git:// URL.
Make sure your core.gitProxy config option and the
GIT_PROXY_COMMAND environment variable are NOT set.
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒.谢谢.
(对于tl; dr,请参阅下面的#questions)
我有多个git存储库浅克隆.我使用的是浅克隆,因为它与脏克隆相比要小得多.每个人都克隆着做git clone --single-branch --depth 1 <git-repo-url> <dir-name>.
这工作正常,但我没有看到如何更新它.
当我用标签克隆时,更新没有意义,因为标签是冻结的时间点(据我所知).在这种情况下,如果我想更新,这意味着我想要通过另一个标签克隆,所以我只是rm -rf <dir-name>再次克隆.
当我克隆了主分支的HEAD然后想要更新它时,事情变得更加复杂.
我试过git pull --depth 1但是虽然我不想把任何东西推到远程存储库,它抱怨它不知道我是谁.
我试过了git fetch --depth 1,但是虽然它似乎更新了一些东西,但我检查它是不是最新的(远程存储库上的某些文件的内容与我克隆上的文件不同).
在/sf/answers/1435601401/之后,我试过git fetch --depth 1; git reset --hard origin/master,但有两件事:第一,我不明白为什么git reset需要,第二,尽管文件似乎是最新的,但仍有一些旧文件,以及git clean -df不会删除这些文件.
让克隆创建git clone --single-branch --depth 1 <git-repo-url> <dir-name>.如何更新它以达到相同的效果rm -rf <dir-name>; git clone --single-branch --depth 1 <git-repo-url> <dir-name>?或者是rm -rf <dir-name>再次克隆唯一的方法?
在快速重新安装之前,我正在刻录DVD上的东西.从来没有用git作为最近的用户.所以我只是和你们一起检查.如果我理解正确的话,我只需要备份我的项目目录project_name(里面有.git)和它一起查看隐藏文件,当我将它复制到"新"机器上,并再次安装git时,我恢复如下没啥事儿 ?正确吗?
我有一个与谷歌驱动器同步的回购,但我忽略了.git目录,所以它现在上传到谷歌驱动器.
最近我格式化了我的Gentoo机器,在我再次同步所有Google Drive文件后,我意识到.git目录不在那里.
问题是我不记得我是否在本地没有被推到github的一些未经标记/未经修改的更改.
我一直在寻找,但我只找到了相反问题的答案(克隆没有.git目录)
我不想做git clone我的回购,直到我确定可能的局部变化不会丢失.
有没有办法只克隆.git文件夹,然后推送我的机器中可能有的任何本地更改?