前言
在折腾了一天后,总算摸清了用git实现代码管理的基本套路。
正文
一、github如何添加仓库
因为是第一次操作,在看不懂英文和不熟悉的情况下,还是比较吃力的。这一步网上教程比较多,直接贴个链接,以下是简单的概括:
🕐 在首先 new 一个 “仓库”——repositry。
🕑在详细的创建栏作一些选择。这一步可以不用选择添加 README.md,它默认会产生main分支,在该分支下添加这个README.md,可能并不是你所打算的;另外,如果没有添加,你的仓库界面会给出从终端上传代码的基本指令,还是比较实用的,如下:
(但是还用不了,你还得在本地创建一个同名的文件夹作为你的仓库的本地仓库。在本地创建一个和你的仓库同名的文件夹,在该文件夹下打开终端,再执行以下上传文件的基本代码。
create a new repositry on the command line.添加了一些注释,复制请小心
echo "任意,比如你的仓库简介" >> README.md
git init
git add README.md //可多次add,但是建议一次一个文件(夹)地上传,因为报错的时候好检查。
git commit -m "first commit" //相当于把你上面add的所有文件都给一个相同的 "记录",保存在“缓冲区”,
//缓冲区的大小在你init时设定了默认值,后续可以修改;上传的文件大小超出缓冲区时会报错
git branch -M main //创建分支,相信很多人也见过master,就是这样创建的
git remote add origin https://github.com/<你的用户名>/<仓库名>.git
//是用户名,不是昵称哈。这样输入后续是需要输入昵称和token的,不方便。看1.1
git push -u origin main // 如果你的分支不是main,记得修改,比如分支是master 的话。
// -u 不是必须的,但建议有
1.1 使用token
点击头像 -> Setting -> 左边菜单栏最底下的Developer Setting -> Personal access token 的 classic -> generate new token -> 给一定的权限,不好截图,放个 链接 。但请小心,使用token的代码需要修正,如下: ( token可用邮箱保存下来
git remote add origin https://<your_token>@github.com/<USERNAME>/<REPO>.git
your_token:换成你自己得到的token
USERNAME :是你自己github的用户名
REPO :是你的仓库名称
例如:
git remote add origin https://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@github.com/creation/master-thesis.git/
提示一下 ,终端里需要输入“密码”的地方其实都需要输入token,密码验证已经被git舍弃了
1.2小结
OK,到这里基本的入门操作就结束了,然而,实际使用中会遇到很多问题,这里会介绍一些比较重要的解决问题的手段和思考方式,避免手忙脚乱地在网上胡乱地搜索一通还解决不了问题。
二、上传大文件(>100MB
Github限制了上传文件的大小,意图把社区做成代码交流的场所,而不是代码仓库。如果你的文件里有地图文件,大几百MB的,甚至是几GB的bag,建议先删除;还有你catkin_make产生的bulid和devel,建议也删掉,占了好几十MB呢。
当然我猜测很多人在不知道Github限制上传大小的情况下还胡乱commit了好几次,导致后续不管怎么去删除超过限制的文件,每次commit都还是能看到它们。
2.1查看并删除你的上传到缓冲区的文件(了解上传过程)
参考链接
简单地说,在上传过程中,你的文件有两个状态:缓冲区文件(commit但没push)和已上传文件。只要你push了报错了就算是成为"缓冲区文件了"。
通过git cherry 查看缓冲区文件,最上面的“一串随机码”是最老的,git reset [随机码]命令撤销之前的版本
比如你想撤销上面的全部,需要选c44那个码,执行后,只用c44这条commit会留下。
git cherry是查看所有没有push的版本,如果版本A之前的版本都push过,就应该用git log查询所有版本。ctrl+q 退出 git log、

上图 1f41dc6d057d5f586f1f0f78dc8497d276c5a498是最初版本,已push
c446f73e7e2d1dfe364220793339468aa98f93d5是本地提交,但没上传远程的版本
如果要撤回c446f73e7e2d1dfe364220793339468aa98f93d5
就要git reset 1f41dc6d057d5f586f1f0f78dc8497d276c5a498
之后再add,然后commit,再push就成功了。
这一套下来你应该对 commit 和push 有了更深的理解。在走完这一步,再上传大文件是还需要2.2的内容。
2.2 lfs上传大文件
2.3 缓冲区扩容
表示设置为5G,完成后重启终端
sudo git config --global http.postBuffer 5242880000
sudo git config --global https.postBuffer 5242880000
git config --list 查看设置值
三、常用指令(常遇到的问题
1.强制上传 +<分支名>:https://blog.youkuaiyun.com/weixin_42322256/article/details/123937944
(谨慎使用
2.git add 卡住不动 ,文件太大了:https://blog.youkuaiyun.com/doubleguy/article/details/128531463
3.src refspec master does not match any.没有初始化仓库, git init 开始按步骤进行即可。 参考链接
4.git添加不了子仓库的解决办法。可能是你下载的包里有.git文件,需要删除。参考链接
5.一些git指令整合
https://blog.youkuaiyun.com/qq_48322523/article/details/121021377
6.! [remote rejected] master -> master (pre-receive hook declined) 这个报错有时候不是真的如它所说的,可能就是你的文件里有大文档导致的。 如果真的想以此纠错,参考链接
7.remote: Support for password authentication was removed on August 13, 2021
这个报错就是之前说的,密码验证被取消的事情。 查看链接
8.网上很多“克隆到本地”的操作,我没那么做,所以没有什么建议。
四、结语
学习新的东西确实比较坎坷,愿你我都能静下心来,克服困难。
觉得有用别忘了点赞收藏~

被折叠的 条评论
为什么被折叠?



