我克隆了我的存储库:
git clone ssh://xxxxx/xx.git
Run Code Online (Sandbox Code Playgroud)
但之后,我改变了一些文件,并add与commit他们,我想他们推到服务器:
git add xxx.php
git commit -m "TEST"
git push origin master
Run Code Online (Sandbox Code Playgroud)
但我得到的错误是:
error: src refspec master does not match any.
error: failed to push some refs to 'ssh://xxxxx.com/project.git'
Run Code Online (Sandbox Code Playgroud) 注意我已经研究了git-is-very-slow-slow问题,但在他们的情况下,原因是大的二进制文件 - 而在我的存储库中有PHP/JS/HTML/CSS唯一的代码(没有二进制文件)和最大的文件在存储库中大约800 KB.
我已经改变了一个文件(几行),然后git add .和git commit -m "msg",然后git push origin master.
在其他一些机器上,当我这样做时,git pull origin master它会下载一些MiB数据,计算增量并应用更改需要2分钟以上.这里有些非常错误.
我怀疑最近的一些操作可能会导致这种情况:
最近,bower_components当我意识到它时,我偶然添加了许多供应商资产(资产),我曾经git rm将它们从存储库中删除(当然git add,git commit还有git push上游)
那是几天前,我现在遇到的问题就是在那个时候开始发生的.
我有两个问题:
注意:我是唯一一个使用和推送这个回购的人.
Git 2.17更新日志描述了此选项:
- 有人介绍了克隆和获取的机制,这又涉及包装和拆包对象,该机器已被告知如何使用
另一个主题引入的过滤机制来省略某些对象。现在
,它知道将生成的包标记为允诺包,以容忍丢失的
对象,为“狭窄”克隆奠定基础。
这个标志准备好使用了吗,还是很有可能很不稳定?有谁知道正确的语法通过?我通过的所有标志都被视为无效的过滤器规范而被拒绝。例如,这些是我尝试按目录过滤的:
git clone file://path --depth=1 --filter '--subdirectory-filter Assets' TestRepo
git clone file://path --depth=1 --filter --subdirectory-filter Assets TestRepo
git clone file://path --depth=1 --filter Assets TestRepo
Run Code Online (Sandbox Code Playgroud) 只是想知道github服务器是否支持git wire protocol-v2?- https://opensource.googleblog.com/2018/05/introducing-git-protocol-version-2.html - https://github.com/git/git/blob/master/Documentation/technical/protocol-v2 .文本
我有一个超过 1 GB 的浅克隆 git 存储库。我对所需的文件/目录使用稀疏结帐。
如何将存储库克隆减少为稀疏的签出文件/目录?
最初,我可以通过在克隆时禁用检出来将克隆存储库限制为仅稀疏检出。然后在进行初始结帐之前设置稀疏结帐。这将存储库限制为仅约 200 MB。更易于管理。但是,在将来的某个时刻更新远程分支信息会导致其余文件和目录包含在存储库克隆中。将存储库克隆大小发送回超过 1 GB,我不知道如何仅删除稀疏的签出文件和目录。
简而言之,我想要的是一个浅且稀疏的存储库克隆。不仅仅是浅层回购克隆的稀疏签出。完整的存储库会浪费空间,并且某些任务的性能会受到影响。
希望有人能分享解决方案。谢谢。
有时获取任何git存储库(通过执行" git fetch repository_URL")可能需要数小时,具体取决于存储库的大小和网络速度.
如果出于某种原因,用户取消了中途获取,然后尝试获取相同的存储库,在他/她取消最后一次获取的完全相同的环境中,获取将如何工作?
它会从中断处继续取回吗?
您好,我有一个包含子模块的超级项目。子模块通过分支名称而不是 sha 提交号进行跟踪。在我们的构建服务器上,我想尽可能少地拉动。所以我尝试了
git submodule update --remote --init
Run Code Online (Sandbox Code Playgroud)
然而这并不肤浅。似乎拉出所有内容然后切换到分支
git submodule update --remote --init --depth 1
Run Code Online (Sandbox Code Playgroud)
这不起作用,它失败了:
git submodule update --remote --init --depth 1 ThirdParty/protobuf
Submodule 'ThirdParty/protobuf' (ssh://myrepo/thirdparty/protobuf.git)
registered for path 'ThirdParty/protobuf'
Cloning into '/home/martin/jenkins/workspace/test_log_service/repo/ThirdParty/protobuf'...
fatal: Needed a single revision
Unable to find current origin/version/3.2.0-era revision in submodule path 'ThirdParty/protobuf'
Run Code Online (Sandbox Code Playgroud)
关于浅层子模块有一个不同的问题,但是我不认为它适用于分支,仅适用于 sha 提交
我决定打开 Git 协议第 2 版(我想它更快,无噪音),所以我做了:
git config --global protocol.version 2
Run Code Online (Sandbox Code Playgroud)
但是当我尝试
git pull
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
git config --global protocol.version 2
Run Code Online (Sandbox Code Playgroud)
我的操作系统是 Ubuntu 18.04。我在 Ubuntu 16.04 上的朋友做了同样的事情,并且对他有用。我可能缺少一些依赖项吗?
假设我有一个大文本文件,它会定期更改某些部分。我想让它与 git 服务器上的远程版本保持同步,最好只上传其更改的部分。
git 的默认行为是什么?git 每次更改时都会上传整个文件吗?或者可以选择只上传差异?
非文本(二进制)文件呢?
谢谢
我试图从这样的几个存储库中提取git日志:
git log --pretty=format:%H\t%ae\t%an\t%at\t%s --numstat
Run Code Online (Sandbox Code Playgroud)
对于较大的存储库(例如rails / rails),需要花费35秒钟以上的时间才能生成日志。
有没有办法改善这种性能?