相关疑难解决方法(0)

如何备份本地Git存储库?

我在一个相对较小的项目上使用git,我发现压缩.git目录的内容可能是备份项目的好方法.但这有点奇怪,因为当我恢复时,我需要做的第一件事就是git reset --hard.

以这种方式备份git repo有什么问题吗?还有,有没有更好的方法(例如,便携式git格式或类似的?)?

git backup

151
推荐指数
7
解决办法
12万
查看次数

使用Git保留文件权限

我想版本中描述的控制我的Web服务器 为我的Web服务器版本控制,通过创建一个git回购了我的/var/www directory.我希望我能够将我们的开发服务器中的web内容推送到github,将其拉到我们的生产服务器,然后在池中度过剩下的时间.

显然我的计划中的一个问题是Git不会尊重文件权限(我没有尝试过,现在只读它.)我想这是有道理的,因为不同的盒子可能有不同的用户/组设置.但是,如果我想强制传播权限,知道我的服务器配置相同,我有任何选择吗?或者是否有更简单的方法来接近我正在尝试做的事情?

linux git file-permissions

101
推荐指数
4
解决办法
11万
查看次数

我如何通过电子邮件向某人发送git存储库?

我试过了:

git archive HEAD --format=zip > archive.zip
Run Code Online (Sandbox Code Playgroud)

:然后我发送电子邮件archive.zip,另一端将archive.zip解压缩到一个文件夹中.但是当他们尝试任何git命令时,他们发现这不会产生有效的git存储库

git

83
推荐指数
2
解决办法
2万
查看次数

如何使用git-bundle保持开发同步?

我需要在不同的计算机上保持我的开发树同步,它们之间没有网络连接.

我们有一个中央git存储库,我通常在办公室计算机上使用自己的克隆.有时我需要在另一台从未连接到办公室网络的计算机上进行一些开发.没有任何计算机连接到Internet.可以在同步之间在两台计算机上执行开发.

我已经阅读了git-bundle的帮助页面,这似乎是最好的工具,但我不确定如何设置好的工作流程.

你能给我一些建议或指点吗?

git git-bundle

67
推荐指数
2
解决办法
3万
查看次数

"git push --mirror"是否足以备份我的存储库?

我是一名独立开发人员,在本地Git存储库中工作.对于备份,我想将该存储库的精确副本发送到另一台服务器.

这样做是否足够?

git push --mirror
Run Code Online (Sandbox Code Playgroud)

我问,因为在Git告诉我"一切都是最新的"之前,我有时可以运行这个命令两到三次,所以显然它不是一个精确的镜子.它似乎正在重新推动跟踪分支......?

$ git push --mirror
Counting objects: 42, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (30/30), done.
Writing objects: 100% (30/30), 5.09 KiB, done.
Total 30 (delta 17), reused 0 (delta 0)
To ssh://my/repo/url
   c094a10..0eedc92  mybranch -> mybranch
$ git push --mirror
Total 0 (delta 0), reused 0 (delta 0)
To ssh://my/repo/url
   c094a10..0eedc92  origin/mybranch -> origin/mybranch
$ git push --mirror
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)

发生了什么,这是一个好策略吗?

编辑:我不喜欢使用类似git bundle.tar.bz2档案的东西,因为我希望备份是一个可访问的工作副本.由于我的备份服务器已连接到网络并始终打开,因此在我上路时这是访问存储库的好方法.

git backup

52
推荐指数
4
解决办法
3万
查看次数

如何在git中备份私有分支

我有一个本地分支,用于git中的日常开发工作.我的工作流程是:

  1. 在local_branch上做一些事情,提交
  2. 获取origin/master
  3. 重新定位local_branch以赶上来自origin/master的新东西

这一切都运行正常,但我遇到的大多数建议都说不应该"推"私人分支,定期执行rebase.

这里的问题是,在这种情况下,本地分支不会备份到服务器,保存工作的唯一方法是将其合并回"pushable"分支(即origin/master)

在这种情况下,您对工作流程的建议是什么?

谢谢!

更新:我意识到我有一个原始要求(避免使用外部实用程序)是不必要的限制.

我目前的解决方案是将所有存储库存储在云同步文件夹中 - 这样我就可以免费获得备份.

git merge workflow rebase dropbox

48
推荐指数
3
解决办法
2万
查看次数

将存储库从Gitlab服务器导出到另一个Gitlab服务器

刚刚在一台全新的高性能服务器上安装了全新的6.8 Gitlab.

在考虑忘记我的存储库历史记录(评论,问题等等)之前,有人知道将存储库数据从Gitlab服务器导出到另一个Gitlab服务器的方法吗?

我只是没有在导出/迁移整个项目数据(不仅仅是git存储库及其wiki)的文档中找到任何内容.

gitlab

47
推荐指数
4
解决办法
4万
查看次数

从捆绑备份恢复git存储库

我创建了我的git存储库的备份,如如何备份本地Git存储库?建议用

git bundle create /tmp/foo-all --all
Run Code Online (Sandbox Code Playgroud)

我可以看到所有的引用都在那里,包括由git-svn创建的远程引用.现在我无法弄清楚如何将此捆绑包再次恢复到本地存储库.我很确定我已经做过一次了.我尝试了git-clone,但这给了我一个只有一个存储库,我的备份包作为远程仓库.

我也试过了

git init
git bundle unbundle /tmp/foo --all 
Run Code Online (Sandbox Code Playgroud)

但这只列出了所有参考资料......

验证捆绑包给出:

$ git bundle verify $somewhere/foo.bundle 
The bundle contains 12 refs
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/master
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/remotes/git-svn
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HEAD
The bundle requires these 0 ref
$somewhere/foo.bundle is okay
Run Code Online (Sandbox Code Playgroud)

git backup restore

31
推荐指数
4
解决办法
3万
查看次数

克隆存储库而不使其成为远程源

我正在从将要擦除的计算机克隆一个git存储库.

是否可以在不创建原始存储库的情况下克隆存储库origin/master?或者我是否需要克隆它,然后删除远程分支(已完成git remote rm origin)?

编辑:存储库只有一个分支,没有标记.

git git-clone

27
推荐指数
2
解决办法
1万
查看次数

我可以轻松地同时从远程分支更新所有本地git分支吗?

我有一个git存储库(目前)有三个分支:

  • head是稳定的版本(不要与git混淆HEAD)
  • experimental是实验代码; 它应该编译
  • norman是我的沙箱; 其中的代码可能会被破坏

"master"git repo位于备份的文件服务器上.但我在本地磁盘,家里的机器和笔记本电脑上都有复制品.(我准备随时随地编写代码).

git branch -a 说明:

  experimental
  head
* norman
  tufts/HEAD
  tufts/experimental
  tufts/head
  tufts/norman
Run Code Online (Sandbox Code Playgroud)

塔夫茨分支机构是"主"仓库的远程分支机构.本地分支机构应该跟踪; git config -l | grep -w remote说:

remote.tufts.url=linux.cs.tufts.edu:/r/ghc/git/experimental.git
remote.tufts.fetch=+refs/heads/*:refs/remotes/tufts/*
branch.experimental.remote=tufts
branch.head.remote=tufts
branch.norman.remote=tufts
Run Code Online (Sandbox Code Playgroud)

这是我的问题:如何使用单个git命令同时更新远程对应的所有本地分支git-fetch并不是很有效; 它更新它对每个远程分支的内容的了解,但它不会将它们合并到本地.并且显然git-pull只更新当前已检出的分支.我想立刻更新所有分支机构.可以吗?

(我并不狂热

for i in `git branch | sed 's/^.//'`; do git checkout $i ; git pull; done
Run Code Online (Sandbox Code Playgroud)

部分是因为我不清楚工作目录中修改过的文件发生了什么,而这一切都在继续,部分是因为我需要更多的shell代码来保存和恢复有关我目前所在分支的信息.)

我找到一个(不是非常密切相关)的问题:

git version-control branch

21
推荐指数
0
解决办法
9426
查看次数