2011-04-08 133 views
1

我有一个在我的笔记本电脑上设置的git存储库,我在我的拇指驱动器上创建了一个克隆(用作备份)。我已经设置了远程回购(拇指驱动器)来忽略推送错误。我可以根据需要将存储库的内容推送到驱动器(即,git日志显示在笔记本电脑上进行的提交),但是我想将这些文件与回购更改一起推送。有谁知道如何做到这一点?将文件推送到远程git存储库

这是在Linux中使用。如果您需要任何其他信息,请询问。

+0

我不太明白:你能够将文件推送到拇指驱动器,并且你问如何将文件推送到拇指驱动器? – Darhuuk 2011-04-08 20:51:39

+0

为什么不直接拉到拇指驱动? – 2011-04-08 21:30:45

回答

2

但我想推文件 自己与回购一起改变

不知道你的意思在这里。

您最终是否在您的拇指驱动器上创建了bare repository? 如果是这样,它是由设计,没有检出文件。

但是,您可以使用git archive来导出文件,或者简单地在您的拇指驱动器上创建另一个非光面克隆。

也许检查有关working directory的文档。

0

git checkout master如果您不使用裸仓库。

根据您的需要,裸仓可能不是您想要的。

我打算假设,因为创建一个裸存储库需要git clone somePath --bare您可能正在使用一个标准的git存储库而没有检出任何文件。

这里是用例:

  • 只备份:纯仓库可能是 更好,因为你只会有 由库所占用的空间, 压缩,而不是-also-的空间 从工作副本。

  • 副本具有完全访问文件,不必是最新 所有的时间:简单的克隆 仓库,使用git reset origin/master擦无论是在工作拷贝赞成推变化。

  • 复制文件不断更新:这是最棘手的情况,因为默认情况下,git不会在推送时更新工作副本。有一个快速搜索,并提到一个方法是使用后更新钩:http://jennyandlih.com/pushing-remote-git-working-copy。请注意,这可能不会允许在该副本上进行编辑并在推送时进行替换,除非您深入了解可以自行计算出来的存储流行事物。

我的建议,(我做这一切的时候),手动更新克隆当你需要:

创建一个简单的克隆(非裸)。然后git branch staginggit checkout staging。您现在有一份工作副本,但您需要通过git rebase origin/master手动自行更新,以便获取更改。你可以推动从分期到主人的变化。请注意,该存储库中的任何“主”分支可能会被推到它的变化扭曲,并且不应该被使用或依赖。

0

您似乎在说,当您推送文件时,您希望文件本身出现在远程回购站中?这不是git的常用用法,但你当然可以做到;许多人使用它来让网站使用git作为传输来自动部署。

要实现此目的,您需要在目标存储库(.git/hooks/post-update)中设置更新后的挂钩。像这样的应该做的伎俩:

#!/bin/sh 
git checkout -f 

请记住,以确保它是可执行的。

+1

这个想法很有道理,但是你的实现有一个严重的错误。参见[SO 5531309](http://stackoverflow.com/questions/5531309/reset-hard-on-git-push/5534486#5534486)。在编写使用使用工作树的GIt命令的钩子时,需要将GIT_DIR和chdir设置为工作树本身。在非裸仓库中,使用'GIT_DIR = .'运行的钩子和cwd设置为'.git'目录。这将导致使用工作树的Git命令将'.git'本身视为工作树。这绝对不是你想要的(它可能会损坏你的仓库)。 – 2011-04-09 03:35:28

+0

@Chris谢谢,如果我最终需要这个,我会尽力记住这一点! – crazyscot 2011-04-09 17:40:12

相关问题