小言_互联网的博客

Git与GitHub的简单使用

392人阅读  评论(0)

概述

项目开发的版本问题

多个人开发同一款软件时,会分不同模块写代码,会频繁删改源码,导致产生很多版本。有的功能暂时不需要,可能后续需要,又不能删除和覆盖,留着标记掉很占篇幅、影响代码的可读性,也不是很合适。这就需要用版本管理工具来实现对源码的集中、统一化管理。

SVN

SVN是集中式,所有版本的代码都上传带SVN服务器,开发者只能上传新版本/下载老版本。类似一主多从的架构,核心是SVN服务器,自然也就存在单点故障的问题。如果SVN服务器部署在局域网,外网只能走V。。。P。。。N。。。来访问它(如果是完全物理隔离的内网,外部也就无法访问)。如果部署在外网又会很慢。这货也无法自动管理多个版本。

Git产生

Linux创始人——大神Linus Torvalds利用C语言编写。果真C语言是地球上最强的语言!!!

Git

Git是去中心化模式,类似区。。。块。。。链。。。这货不需要联网,自己的开发机部署Git后就可以作为本地版本库,利用开发机实现对版本的管理(单机自己管理自己的多个版本)。由于所有开发机都有自己的本地版本库,不需要担心公共版本库故障的问题。当然也可以部署公共的Git版本库,进行分布式开发,实现多台开发机、多个开发者协同工作。由于实现了去中心化,Git公共版本库服务器的压力不会很大。这种做法速度快,也更加灵活。如果开发者产生了冲突也容易解决。不联网也可以实现多版本的管理。

Git组成结构

工作区(Work Dir):该区域用于开发、修改代码。
暂存区(Index):该区域用于临时存放即将提交的版本(所有需要保存的版本必须先添加<add>到暂存区)。
本地版本仓库(Head):用于实现本地的版本管理(所有暂存区的版本都会被提交<commit>到本地版本库)。
远程版本仓库:用于共享项目代码版本。常见Github码云

同步时是从本地版本库上传到公共版本库(或者远程版本库),克隆时是从公共版本库(或者远程版本库)下载回本地版本库。恢复<checkout>是从本地版本库覆盖工作区开发版本的数据。

本地仓库构建

安装好Git工具后就可以构建本地仓库。可以安装汉化包以便使用,但是文件夹的路径一定要纯英文!!!

Git GUI构建

在文件夹空白处右键:


建好后:

目录中也会出现.git的隐藏文件。需要Win10设置下才能看到。


安装完Git后需要重启才能看到这种标记,但是不重启也能用。。。

Git Bash构建

上一种方式的底层就是Bash命令行实现的(毕竟是Linux之父的又一力作):

还是右键,选Git Bash Here,这个Bash用法、命令和Linux差不多。使用:

git init

即可构建本地仓库。

TortoiseGit构建



直接确定几次即可。。。

简单操作

提交

右键→TortoiseGit→添加。

确定后手动右键提交:


不写内容是不能提交的!!!

可以设置常用功能:

修改


修改后会出现这种标记。。。


右键可以查看日志。


功能不全,设置里开启还原后即可还原。

切换

右键→TortiiseGit里可以比较差异、重置版本之类的操作。没有就去设置里开启。

删除

删除文件后可以还原。

删除文件后可以提交,这种做法会记录为新版本。

也可以右键→TortoiseGit→删除并保留本地副本。这种做法会删除索引,后续不会对该文件进行版本控制。

添加整个项目

将项目文件夹拖入之前建好的路径,文件夹右击添加即可。某些不会变更的内容可以设置筛选(忽略掉),取消同步:

暂存区设计

类似购物时,可能会犹豫不决,并不能马上下定决心要不要买,于是出现了+购物车。缓存区也是这种思想,将多个版本的多个文件暂存起来,可以自由组合。

GitHub公共仓库

由于码云限制空间,Github公共仓库对个人不限制空间(但是所有人都可以下载,也可以配置密钥允许特定用户修改源码)。虽然外网比大中华局域网卡了点,但是可以咳。咳。咳。。。科学上网。。。也不是神马大问题。。。

建仓


当然先new一个再说:


吾等庶民也只能用public免费版。。。

配置SSH

Public是所有人都可读(可下载)的,但是有权限的用户才可写(修改代码)。

GitHub已经自动跳转并且给了命令告诉用户具体怎么做。。。照着做就好。。。

右键Git Bash:

ssh-keygen -t rsa


当然pub是公钥,另一个是私钥。。。




把公钥内容写进来(CV大法)。

同步

命令同步

出现了这种问题:

Please make sure you have the correct access rights
and the repository exists.

密钥错了,一大坨教程说需要需要重新生成密钥。。。删掉原先的密钥(.ssh文件、GitHub的密钥),重来一遍。。。

ssh-keygen -t rsa -C "这里写GitHub用户名"

用新密钥配置SSH后:

ssh -T git@github.com

还是不行。。。继续搜度娘,各种教程都是一大坨牛头不对马嘴的辣鸡。。。还是得自己解决问题。。。

仔细观察,是∵该文件夹只能commit给main???什么鬼???

明明其它文件夹都是默认提交给master:

果断换一个文件夹试试。。。

killer@DESKTOP-33S530V MINGW64 ~/Desktop/repository/reps2 (master)
$ git remote add origin git@github.com:killer-ColorfulTiger/respository_test2.git

killer@DESKTOP-33S530V MINGW64 ~/Desktop/repository/reps2 (master)
$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 235 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:killer-ColorfulTiger/respository_test2.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

刷新GitHub页面:

完美!!!

SSH同步

右键Git同步:

点管理→网络,配置SSH路径(Git安装路径下的SSH.exe):

C:\Program Files\Git\usr\bin\ssh.exe

远端→URL填写:

git@github.com:killer-ColorfulTiger/respository_test2.git

Putty密钥选私钥:

点添加/保存,然后保存设置(由于之前已经有origin了,笔者改名叫origin1)。

出现了乌龟🐢旋转着被扔到文件夹的美景:

刷新后:

HTTPS同步

和上一步的操作很像,URL里写:

https://github.com/killer-ColorfulTiger/respository_test2.git

添加/保存后推送,会弹出网页,索要GitHub号和密码。。。填上就能用。。。

克隆

命令克隆

git clone git@github.com:killer-ColorfulTiger/respository_test2.git

如果忘了地址:

从这里可以找到。

在启动Git Bash的目录下克隆出了文件(和自己去GitHub下载的内容是一样的)。

TortoiseGit克隆

shift+右键,点Git克隆。

输入SSH协议的URL:

git@github.com:killer-ColorfulTiger/respository_test2.git


可怜的乌龟🐢又被旋转着扔到了文件夹:

同步成功!!!

冲突问题

多个人使用,难免∵交流不顺导致共用了版本号(但是内容不一致),这种情况后推送的一方会显示推送失败。。。后推送的一方需要拉取,在拉取到的文件夹中找到冲突的文件(不限于.java之类的源码)→手动解决故障并保存好源文件。之后在该文件夹右键→TortoiseGit→解决冲突。写好注释、重新提交后解决成功便可再次推送。这样便解决了冲突引起的不能顺利推送的问题。


转载:https://blog.csdn.net/qq_41990268/article/details/116999579
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场