我在笔记本电脑上设置了一个git存储库,我在我的拇指驱动器上创建了一个克隆(用作备份)。我已经设置了远程仓库(拇指驱动器)来忽略推送错误。我可以根据需要将存储库的内容推送到驱动器(即git日志显示在笔记本电脑上进行的提交),但我想将文件本身与repo更改一起推送。有谁知道如何实现这个目标?
这适用于Linux。如果您需要任何其他信息,请询问。
答案 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 staging
和git checkout staging
。您现在有一个工作副本,但是当您想要获得更改时,您必须自己手动更新git rebase origin/master
。您可以将更改从分段推送到主控就好了。请注意,该存储库中的任何“主”分支可能会因为推送到它的更改而变得棘手,并且实际上不应该被使用或依赖。
答案 2 :(得分:0)
您似乎在说,当您推送文件时,您希望文件本身出现在远程仓库中吗?这不是通常使用的git,但你当然可以这样做;许多人使用它来使用git作为传输来自动部署网站。
要实现此目的,您需要在目标存储库(.git/hooks/post-update
)中设置更新后挂钩。像这样的东西应该做的伎俩:
#!/bin/sh
git checkout -f
请记住确保它是可执行的。