工具篇:Git与Github+GitLib常用操作(不定期持续更新)

工具篇:Git与Github+GitLib常用操作(不定期持续更新)

前言:

写这个主要是打算自己用的,里边很多东西都是只要我自己看得懂,但是用了两个星期发现真是越用越简单,越用越好用,私以为得到了学习使用git的精髓,觉得按照自己这个顺序用起来还是很舒服的.

工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第1张图片

工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第2张图片

其实一开始这里边只有一点,用着用着就慢慢变多了.

在这个博客里放了很多链接,这些都是当时我遇到问题搜一下通过链接里博客的内容解决了的,私以为非常好用,也很感谢写这些博客的博主,帮我节省了很多时间.

工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第3张图片

这个博客目前针对以下应用场景可能效果更佳:

  • 有云服务器,需要来回上传代码,厌倦了宝塔传文件只能传压缩包
  • 有树莓派,要来回传代码,用VNC传文件用着难受
  • 经常手残把代码改废掉,疯狂按ctrl+z但是总是哪里不对
  • 总是忘了自己之前改了什么,改到了哪里,下一步要干啥
  • 有内网中使用git的需求(目前这一块只是安个环境,具体有待进一步开发)
  • 后续功能不定期进一步开发…

一小段大白话话总结git与github,gitlab等的区别

注:这些话是为了让大家快速看懂,可能不规范,但是很易懂,用到后边会自己修正过来的.

git是本地的代码仓库,存代码的,只要提交就会保留历史版本,也可以开分支(目前可以理解为复制文件夹,改个名字,从里边改代码),在git里切换分支(就像切换文件夹)只需要输入指令,比鼠标点起来快.也可以退回到之前写过的版本,也是用指令,用几次就比鼠标用着舒服了(亲测有效).

github是远程的代码仓库,相当于又搞了一台电脑,复制了本地那个代码仓库文件夹里的信息,这样大家只要都连到github上(像是个公用的电脑),就能获得里边的文件,修改文件(相当于一个共享文件夹,可以和n个人共享),

gitlab这个"大共享文件夹"暴漏在大街上,路过的人都能看到它,都能下载里边的东西.gitlab也是给大的共享文件夹,不过在家里,只有家里人能看到,能往文件夹里放东西.

gitee(码云)和github一样,github是全球的,gitee是国内的.

git

一小段大白话话总结安装为什么要用那些东东,为什么安装环境可能提示少东西或者是出错

  • linux

    在很久很久以前,操作系统主要是unix,像是windows一样,它是要收费的,这时候,一个大佬Linus Benedict Torvalds站了出来,做了个仿unix系统的操作系统放在网上,大家用起来发现这个不仅免费,还比较好用,于是很多人开始给linux贡献代码.

    在linux系统里,很多暂时不需要的软件都不会预装,这就导致了有时候装一个软件,这个软件依赖另外几个软件或者是环境,所以有时候装软件发现装不上,或者是装上了跑不起来,就是因为这个. linux设计之初就是给专业人士用的比如说程序员用的, 它默认你会根据提示自己再去配置相应的环境,所以说新手用起来可能比较懵逼. 好在后边又有些大佬觉得这样不方便,于是乎给liunx增加了很多方便的安装方式又加了点界面.这使得像我这样的新手程序员也能快速用得起linux类系统.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CXgKazSt-1662882783463)(https://my-blogs-imgs-1312546167.cos.ap-nanjing.myqcloud.com//f703738da9773912731df842f8198618367ae2de)]

  • shell

    在linux刚刚盛行的时候,显示屏一般就是用来显示文字,那时候没什么显卡,带视频都费劲,变成啥的就是在黑乎乎的命令行里边写的,环境差不多像是windows的cmd,在linux里的cmd叫做shell,大家当时用这个写代码,执行指令等待

  • git

    由于linux太好用了,很多人给linus提意见,帮他改代码,但是很多代码只有细微处和他的有差异,当时每天花时间区找代码哪里不一样,浪费很多时间,还要提前时不时的备份代码以防改错了.于是乎大佬linus想到了找个类似于git这样的版本管理工具,但是那个时候git还没出来.linux大佬试了一下当时的工具,发现不好用,还收费.大佬不愧是大佬,根据自己的需求,linus大佬又给自己手写了个git

    工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第4张图片

    工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第5张图片

    git在设计出来的时候在linux系统里的shell上运行,所以操作延续了linux系统用指令的风格(主要是那时候也没啥界面能做,还是指令方便),放到现在来看,竟然还是用指令方便,绝了~

    当从linux切换到windows的时候,git之前写好的shell还可以用,只不过用一个应用程序封装出一个shell,于是就可以在windows里也使用shell了(敲指令的那种).

    右键单击git bash here 就可以打开运行了,打开这个,就可以像linus在linux里当初用git那样用了.

    工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第6张图片

  • ssh

    平时登录多是要输入密码,输入验证码啥的,ssh相当于一把钥匙和锁,每次登录电脑自动把钥匙插进锁里,对的上就登陆成功,这样就可以不输入密码了,很是舒服.

    github就支持用ssh免密登录,所以说一般会先配置一下这个,这样就不用输入密码了.

  • github为什么容易被墙
    因为github上如果有人发点pornhub里边的东西,大家也是能下载下来的(虽然没人这么做),内容不受国内管控,所以容易被墙,但是github对程序猿真的很重要,所以说有时候也能访问的上.

安装

windows 安装

https://git-scm.com/downloads

去官网,非常方便下载,记得把添加到环境变量勾选上

ubuntu安装
sudo apt update
sudo apt install git

git与github

配置git免密登录

windows

https://blog.csdn.net/jamieblue1/article/details/98481846

ubuntu
先安装ssh

https://cloud.tencent.com/developer/article/1751149

然后配置

https://blog.csdn.net/selous/article/details/77583933

一般linux系统下有用户的概念,比如说root用户和普通用户不是一个用户,root的ssh文件也放在~/.ssh目录下,和user的~/ssh是不一样的目录.

我一般喜欢上来就sudo -s这样敲命令就不用担心管理员的问题,但是这样在有一次clone的时候发现出现了这样的问题:

image-20220904145809099

如何解决 [email protected] permission denied (publickey). fatal could not read from remote repository - 知乎 (zhihu.com)

搜了一下发现是root用户没有ssh公钥,所以下载不了,

解决方式很简单,按照上述普通用户的来一遍,把root的ssh公钥再加到github里就好了

git操作项目上传与下载-1

一开始用这几个命令是基本上够用的,后边遇到问题顺着自然就解决了.

git pull 命令 | 菜鸟教程 (runoob.com)

上传

大致分三步,添加,提交,把本地分支传到指定远程地址的指定分支

git init
git add .
git commit -m "随便输入点什么"
git push
git remote add origin "xxx.git"
git push origin master:center_node

下载

比如说我在本机上上传了,在虚拟机上下载,可以这样

  • 先建仓库后同步

    git init 
    git remote add origin "xxx.git"
    
    #git pull <远程主机名> <远程分支名>:<本地分支名>
    git pull origin ubuntu:master
    

    如果是在虚拟机上,可能一下子切换分支会卡,重新加载一下或者是等一下就好了

  • 先同步再选择仓库

    也可以是切换分支

    git clone "xx"
    cd xx
    git checkout ubuntu
    

大概这几个用法就可以满足项目上传下载,合并分支,基本上就够我满足绝大部分使用需求了

git版本控制

版本回退

[Git如何版本回退? - 腾讯云开发者社区-腾讯云 (tencent.com)](https://cloud.tencent.com/developer/article/1483845#:~:text=每个记录都有一个与之对应的commit id,所以可以使用命令git reset --hard,commit_id来回退到相应的版本。 除此之卡,在Git中,使用HEAD来代表当前版本,如需回退到前一个版本,可以使用命令git reset --hard HEAD^,前两个版本则用HEAD~2表示,以此类推。)

有时候手残或者是脑子抽抽了,一顿乱写,发现把代码改废了,这个时候可以把版本往前退一下

git log --oneline
#这里就会显示每次提交的信息和版本号
git reset --hard 版本号

​ 会这么一手,就很舒服,后边用git再折腾的时候,就不担心把原来的代码玩坏了,因为可以随意重置.

安装gitlab

.gitignore

日常使用的时候,一开始加不加.gitignore都没啥事,但是,后边多用几次发现还是挺难受的.

比如说我在ubuntu上边运行一个pycharm,在windows下运行一个pycharm,树莓派上边运行一个pycharm,这三个里边都有一个虚拟环境(有时候虚拟环境还比较大),还有.idea的配置文件,这个时候,如果我无脑把所有东西都push过去,再下载,就会比较难受,pull下来之后肯能还会破坏掉原来的虚拟环境

在git里,其实是可以选择忽略一些文件不上传的,我们只需要把忽略的文件或者是文件夹写到.gitignore里边就行.

写法其实也很简单,

对于常用的gitignore模板,可以去下载一个插件,

(45条消息) pycharm之gitignore设置_zt3032的博客-CSDN博客

这个插件提供一些python不同架构下通用的模板,在模板之上加自己的东西就好了

.gitignore的生效机制:

(45条消息) Git忽略文件.gitignore详解_ThinkWon的博客-CSDN博客_忽略gitignore本身

gitignore详细配置:

[Git].gitignore文件的配置使用 - 知乎 (zhihu.com)

Git忽略文件.gitignore的使用 - 简书 (jianshu.com)

gitignore模板:

GitHub - github/gitignore: A collection of useful .gitignore templates

gitignore插件:

(45条消息) pycharm之gitignore设置_zt3032的博客-CSDN博客

我的工程

到这里我的工程文件夹里显然有这么几个想要git不同步过来的文件,

这个时候

工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第7张图片

把它删了,然后强行push上去之后,代码就整洁多了

工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第8张图片

这里有点小瑕疵,就是删了一些之后,那个git commit的信息有点乱,不过问题不大,后续再改代码一点点往里边加就好了.

在使用的时候意外摸索出了一个还不错的方法,赶时间的时候写点屎山先把功能实现了,后续开一个新的分支再慢慢优化,优化完了再把原先的屎山的分支删掉.

gitignore只能忽略那些原来没有被 track 的文件,到这里一般是已经有好多不想要提交上去的文件被track了,这时候清除本地缓存后再提交就好了,

(45条消息) IDEA .gitignore 无法生效_wisdom-chen的博客-CSDN博客_idea ignore不生效

git代码冲突-1

(45条消息) 【秒懂+解决方案】git error: The following untracked working tree files would be overwritten by checkout: …_jaredyam的博客-CSDN博客

解决Git中fatal: refusing to merge unrelated histories-阿里云开发者社区 (aliyun.com)

刚开始用git,难免乱开分支,或者是写出很多屎山,这时候看着这么多屎山分支比较烦,但是直接上传修改会有版本冲突,而且明显是删除了更好,这时候就可以强行合并了

强行把本地分支的代码推到远程仓库分支

git push origin center_node1:center_node --force
#git push 远程分支 本地分支:远程分支 --force

强行行合并:

git强制合并分支 - 简书 (jianshu.com)

git上传与下载-2

遇到冲突强行pull的方法之一:

有这样一个场景,我在本机上开了一个pycharm写代码,很爽.

但是我云服务器有一个,虚拟机有一个,树莓派有一个,这些都是要我把代码放过去运行的.

而且在电脑上写完了代码,不能调试,要放到对应的平台区调试测试,这个时候使用上述那些操作可以愉快的上传下载.

但是这个时候我突然不小心给某个文件加了权限,或者是改了一下,我在本机上又写好了代码,我把代码push到仓库,再从仓库pull,

这时候发现另一个平台上报错,说本地的代码没commit,但是我不想保存那些,因为那不是我想改的代码

这个时候就可以用到之前的reset,把版本回退,然后再pull就好了,有些版本是本地有但是仓库里没记录的,只要跳回到有仓库记录的版本再pull就不会冲突了.

git log --oneline

先看一下之前的版本,看这个head会指向自己在的版本和分支

如果是没保存,head会处于游离状态

工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第9张图片

git reset --hard f124864
#这个版本号记得改成自己的
git pull origin center_node:center_node

工具篇:Git与Github+GitLib常用操作(不定期持续更新)_第10张图片

强行上传:直接push --force 到远程仓库

有时候两端改来改去,电脑又懒得来回pull,比如说开着vnc或者是某些能同步文件的软件,只改一小点来回复制还是最方便的,复制完了提交可能会说有些commit没和云端同步,这个时候特别备注一下再提交其实也蛮方便,但是因为冲突,所以选择强制提交.

git push origin center_node1:center_node --force
#git push 远程分支 本地分支:远程分支 --force

git与Gitlab

有一说一,这软件真不小,还是很吃内存的

安装这个试了一上午,终于装好了,网上各种版本众说纷纭,在这里结合一下并简单说一下我知道的原理,如果后续看我这个跟着来安不上了,通过大致的原理,改几个地址啥的应该就行了.

Download and install GitLab

(45条消息) Ubuntu GitLab仓库服务器搭建 No command ‘deb‘ found, did you mean(转载)_斗转星移3的博客-CSDN博客

gitlab-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

gitlab是一个软件,主要在linux平台上运行,

linux环境需要提前准备一些包,然后再装gitlab

我尝试直接从官网上按照操作下载,在最后一步安装的时候提示我找不到包,

然后从国外的服务器上下载也比较慢,于是从清华源上下载

按照那个运行一遍,出问题了再运行这个.

vi /etc/apt/sources.list.d/gitlab-ce.list  

gitlab-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

底下这个还是要去镜像官网去看,指不定哪天更新一下就换掉了,官网链接附在上边~

在里边写入

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu focal main
sudo apt-get update
sudo apt-get install gitlab-ce

一般会安装最新版的,我这个下载的时候有一个G,正好趁着下载刷一会电影~

启动gitlab

初始化,这初始化比较耗时,可以趁着这个时间继续看一会电影~

sudo gitlab-ctl reconfigure

启动

sudo gitlab-ctl start

然后就可以通过电脑的ip地址访问了

遇到的问题

运行gitlab之后再从虚拟机上开pycharm卡死,原来是gitlab和pycharm都比较吃内存,关闭虚拟机,开机前把4G的内存改成6G就行了.

gitlab简单配置

我的root密码:

OFQ11kMZJsPGYT7papkwEcVqWUwIddwRyCLArst2DrU=

https://blog.51cto.com/u_15065852/4106847

(45条消息) Gitlab实战3:Gitlab用户注册及管理_yanqs_whu的博客-CSDN博客_gitlab注册用户审核

gitlab开机启动|启动 停止 重启 - 豆浆D - 博客园 (cnblogs.com)

[(45条消息) gitlab 项目加人_Mandy。的博客-CSDN博客_gitlab拉人进项目](https://blog.csdn.net/weixin_43751840/article/details/89234503#:~:text=进入项目后选settings,然后点members就能进入项目成员界面 之后选择Select members,to invite 就可以加人了)

(45条消息) git修改remote地址_FromNowOnUntilTheEnd的博客-CSDN博客_git 修改remote

gitlab与git

基本上用起来和github差不多,不再赘述.

好处是连不到互联网用内网也能用,很舒服.

你可能感兴趣的:(实用工具篇,git,github)