将文件推送到远程git存储库

时间:2011-04-08 20:43:06

标签: git file push

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

这适用于Linux。如果您需要任何其他信息,请询问。

3 个答案:

答案 0 :(得分:2)

  

但我想推送文件   他们自己与回购的变化

不确定你的意思。

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

但您可以使用git archive导出文件,或者只是在拇指驱动器上创建第二个非裸克隆。

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

答案 1 :(得分:0)

git checkout master如果您没有使用裸存储库。

根据您的需要,裸存储库可能不是您想要的。

我将假设由于创建一个裸存储库需要git clone somePath --bare,您可能正在使用标准的git存储库,而不会检出任何文件。

以下是用例:

  • 仅限备份:可能是裸存储库 更好,因为你只会有 存储库占用的空间, 压缩,而不是空间 从工作副本。

  • 具有完全访问权限的文件复制,不一定是最新的 一直以来:简单的克隆 存储库,使用git reset origin/master擦除工作副本中的任何内容,以支持推送的更改。

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

我的建议(我一直这样做),在需要时手动更新克隆:

创建一个简单的克隆(非裸)。然后是git branch staginggit checkout staging。您现在有一个工作副本,但是当您想要获得更改时,您必须自己手动更新git rebase origin/master。您可以将更改从分段推送到主控就好了。请注意,该存储库中的任何“主”分支可能会因为推送到它的更改而变得棘手,并且实际上不应该被使用或依赖。

答案 2 :(得分:0)

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

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

#!/bin/sh
git checkout -f

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