团队负责人: 可以全面了解Git
个人开发者: 根据需要可以只看GitHub和Git使用
团队成员: 根据情况可以只看Git使用即可,如果有兴趣可以充分了解一下Git

Git简介

玩过MOBA类型游戏的人应该都能理解,一个人靠谱能做的很好,但一群人靠谱才能走的更远。对于多个程序员协同开发项目想要提高效率,必然离不了一个完善的协同工具,而Git就是协同工具中的佼佼者之一。
Git:开源的分布式版本控制系统,相较于SVN、CVS这样的集中式版本控制系统,分布式对服务器的依赖较小。
适用对象:

  1. 开源软件的开发。
  2. 异地的多人协作。
  3. 没有固定办公地点的小团队

注:Git和GitHub并不是一个东西
Git你可以理解为一个软件,可以安装在你的个人电脑、服务器上,并且支持windows,Linux,Mac等主流系统。而GitHub是一个安装了这个软件的服务器,你可以去这个服务器中创建自己的Git项目,并且这个服务器提供很多免费的服务可以去使用。
说的通俗易懂一些我们可以假设Git是一只鸡的话,哪GitHub就是一只香喷喷的炸鸡,你不需要自己加工,直接吃就好了。身为全球最大的同性交友网站(GitHub)我只能用鸡你太美来形容。

Git的搭建

自行搭建Git(创建Git私服)

自行搭建Git不适用于新手,如果你是初次使用Git,可以看下方使用第三方平台的Git(大多数时候外卖的炸鸡都比自己做的好吃,因为人家是专业的)
Git搭建最好是在服务器上,因为相对于我们个人PC,服务器运行更加稳定,以外情况较少,国内有很多服务器,比如说腾讯云,阿里云,百度云,华为云等等,在这里就对服务器不做过多赘述了。
首先我们在服务器上安装git

安装Git

centos的安装命令为:sudo yum install git我之前已经安装完成了
在这里插入图片描述

配置Git用户

我们最好创建一个新用户用来管理Git,使用默认的root超管创建git会有较大的安全风险。
groupadd Git 创建一个名叫Git的组
adduser -g Git git创建一个名叫git的用户并添加到Git组中
passwd git给git用户添加密码
在这里插入图片描述

创建仓库

当切换到git用户下后,我们需要初始化一个git仓库
su - git 切换到git用户
git init --bare field.git 初始化仓库(field是仓库名,这个名字根据自己的需要起就好)
在这里插入图片描述
这时候仓库就已经搭建完成了,仓库的地址为git@服务器ip:/home/git/仓库名.git之后同步要用到此地址

免密处理

完成上述操作后,git可以算配置完成了,但是这时候git同步的时候需要输入密码,比较繁琐,我们可以对指定的人做免密处理。
mkdir .ssh 创建.ssh文件夹
touch authorized_keys 创建authorized_keys文件
vim authorized_keys 打开authorized_keys文件,并将公钥存入其中
可是使用echo ssh-rsa 公钥 >> /home/git/.ssh/authorized_keys方式来将公钥写入其中
su - root 切换回超管用户开始赋权
sudo chmod 700 /home/git/.ssh/ 改变此路径的权限为只有属主有读、写、执行权限。
sudo chmod 600 /home/git/.ssh/authorized_keys 改变此路径的权限为只有属主有读写权限。
在这里插入图片描述
vim /etc/ssh/sshd_config 使用vim打开ssh的配置文件
删除下列几行代码的注释(如果在此文件中没有找到可以自行添加)

RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys

在这里插入图片描述
service sshd restart重启ssh服务

生成公钥

这个公钥很重要,GitHub如果需要免密也要用到这个公钥Linux系统免密登陆也需要此公钥
公钥是做免密处理的电脑的公钥,下列演示如何在windows系统中生成公钥,首先打开windows系统的powershell(cmd也可),输入ssh-keygen,然后一路回车,直到执行完毕
在这里插入图片描述

第三方Git平台

执行搭建Git较为繁琐,我们国内常用的Git有GitHub与码云

GitHub简介

GitHub:全球最大的同性交友网站。
缺点 :

  1. 中国使用GitHub速度同步较慢(但代码普遍不大,速度无需过高)
  2. 部分地区无法正常使用GitHub(比如新疆)

优势:

  1. 功能强大且完善绝大多数功能都能免费使用。
  2. 针对学生有非常不错的待遇,GitHub的学生包基本上可以满足绝大部分程序员(比如说免费私有库,免费域名,各种IDE专业版免费使用)
    GitHub学生包包含福利如果需要领取可以看我的写的如何领取GitHub学生包的博客
    在这里插入图片描述

使用GitHub创建并同步项目

GitHub使用较为简单,点击右上角‘+’的创建选择创建新存储库
在这里插入图片描述
输入仓库名后即可创建仓库
在这里插入图片描述
创建项目结束后GitHub会跳转到一个新的页面上,如下图所示git@github.com:xun-mi-git/auto_look_web_classroom.git就是GitHub提供的用户名与地址,之后同步项目就是使用此地址,需要记住此地址
在这里插入图片描述

GitHub免密处理

打开设置
在这里插入图片描述
在设置中选择ssh并填写公钥,如何生成公钥在之前已经说明,再次就不多赘述了
在这里插入图片描述

Git的使用

下载与安装git

Git下载(新疆等地区可能无法打开,可以在百度上找国内的git资源下载)

在这里插入图片描述
和大多数软件一样,先同意协议,然后选择安装路径
在这里插入图片描述
下一步推荐如图所示选择

原文 翻译
Additional icons 附加图标
On the Desktop 在桌面上(在桌面创建图标,基本用不到)
Windows Explorer integration Windows资源管理器集成(集成到右键菜单)
Git Bash Here 控制台集成到右键菜单
Git Gui Here 图像界面继承到右键菜单(Git的GUI非常难用,不建议使用GUI)
Git LFS (Large File support) Git LFS(大文件支持)
Associate git* configuration files with the default text editor 将git*配置文件与默认文本编辑器关联
Associate sh files to be run with bash 将要运行的sh文件与bash关联
Use a true Type font in all console windows 在所有控制台窗口中使用true Type字体
Check daily for git for windows updates 每天检查git以获取windows更新

在这里插入图片描述
这里是Git的默认编辑器,默认是vim,如果你不了解Linux的vim,相信我,vim对于新人来说简直就是噩梦(您可能会因为vim荣获祖安文科状元)。推荐使用vscode(微软的一款非常强大的编辑器,几乎支持所有的编程语言,而且非常小巧)
在这里插入图片描述
下一步是有关环境变量的,这里一定要选第二个(默认就是第二个),第二个是允许第三方软件调用Git(比如我常用的pycharm与vscode都带非常棒的git组件,比原生的好用很多)
在这里插入图片描述
接下来分别是与安全认证有关的两个,第三个选择控制台时候推荐选择windows控制台,最后一个推荐的三个组件也都是提示效率和安全的,都较为有用,可以全部安装。
在这里插入图片描述

同步仓库

同步语法: git clone 仓库地址
需要同步仓库需要在你的电脑中的一个文件夹中(找一个或者新建一个自己能找到的文件夹用于git项目同步),在文件夹中点击右键选择Git Bash Here或者在powershell中cd到此文件夹中也可。

最基础的Git方法

常用git方法 作用
git init 初始化Git仓库
git remote 查看仓库名称(加上-v参数可以查看仓库详情信息git remote -v)
git remote add url 添加一个远程仓库(git remote)查看当前有哪些分支
git add 将文件添加到本地Git暂存区git add 文件名,可以将新创建的git添加到本地仓库中
git add . : 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git add -u : 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add -a : 提交所有变化
git commit 将文件同步到本地分支,git commit 的-m参数非常重要,用来备注本次,比如git commit -m "寻觅的首次同步"
git push 将本地数据同步到服务器默认推送到当前分支,可以使用 ‘git push origin 分支名’ 推送到指定分支中。
git pull 从数据库中拉去最新版本(每次去使用项目时候推荐都进行一次拉去)

在这里插入图片描述

初次使用git

Git基础配置

设置用户名与邮箱,这一步很重要
git config --global user.name "你的昵称"
git config --global user.email "你的联系邮箱"

新仓库

对于一个新的空仓库来说,推荐创建一个README.md(git开源项目不成文规定README.md为说明文档,并非强制要求),我当前使用pycharm创建了一个项目并用git控制台同步到一个空仓库。

echo "# 项目名称" >> README.md
git init
git add .
git commit -m "首次同步"
git remote add origin git@ip地址:/home/git/库名.git
git push -u origin master

在这里插入图片描述

非空仓库

对于已经有项目的git库我们直接执行git@152.32.251.110:/home/git/text.git 即可拉去
在这里插入图片描述
当仓库已经存在本地后就可以用git addgit commitgit pushgit pull这几个命令同步仓库

这里简单提一下,git pull = git fetch + git merge , git fetch的作用是将服务器中的内容同步到本地,git merge的作用是将本地和服务器中,直接使用git pull他会将服务器中的内容拉去下来后直接自动和本地的进行合并,如果有冲突的地方则抛出冲突需要手动解决。

常用的Git方法

Git分支

分支是一个很常用的功能,我们用的软件,游戏,系统,他们都有不同的版本,比如说:测试版,体验版,稳定版,专业版,免费版,企业版
不同的分支有着不同的功能,有些分支在后期还需要进行合并,比如说测试版在使用测试并修复bug后需要并入稳定版中以供使用。
Git可以创建并合并分支

git分支使用命令 作用
git branch 查看所有分支,并在当前分支前用*标记
git branch [分支名] 创建分支 git branch 'dev' (ps :dev是development开发英语的缩写)
git branch -d [分支名] 删除分支 git branch -d 'text' (ps :dev是development开发英语的缩写)
git checkout [分支名] 进入分支 git checkout 'dev' (使用git checkout -b 'text'可以直接创建并进入分支)
git switch [分支名] 与git checkout效果相同(创建并新分支需要使用-c的参数git switch -c 'text')
git merge [分支名] 将分支合并到master分支上

解决冲突

命令行解决冲突效果并不会,推荐大家使用可视化软件解决冲突的问题,如果想要了解如何在命令行解决冲突可以查看廖雪峰Git教程博客有详细的Git命令行操作的方式,由浅入深非常详细

Git集成组件的使用

命令行操作是比较炫酷,但是个人感觉有些地方使用可视化会有更高的效率,我一直认为能做到简单就已经不简单了,点点鼠标能解决的事情何必去敲一堆命令呢。如果是第一次使用集成组件之前需要先去设置一下名称和邮箱,然后去拉去一下数据。
在这里插入图片描述

vscode的Git组件

使用vscode打开拉去的文件夹
在这里插入图片描述
vscode不需要下载任何插件,自带的Git组件就能完成大部分的Git操作,打开一个项目会在侧栏选择如下图所示的图标,其中就是git操作栏。
在这里插入图片描述

常规拉去推送同步操作

我们如果Git文件夹中有变动,这里都会有对应的显示,我们可以点击文件中的+号,这相当于对文件进行了git add或者点击更改处的+号,相当于git add -a+号左边的相当于撤回。
在这里插入图片描述
和命令行的add相同,我们接下来我们需要将缓存区的文件提交到本地分支
在这里插入图片描述
点击对勾后,我们更改文件和缓存区已经没有文件了,这时候切记,不要忘记将保存的东西推送到服务器中,这样其他人才能拉去。
在这里插入图片描述
vscode右下角的分支边上有个一个同步按钮,这个相当于先执行git pull在执行一下git push和数据库进行一次数据同步,比较好用
这里我要给大家推荐一个vscode的git扩展插件比较好用,下载此插件可以看到每个人在什么时候同步了什么,有哪些分支等等。
在这里插入图片描述

使用vscode处理冲突

当发生冲突,vscode会有如下提示(其中绿色为本地要提交的代码,蓝色为服务器中的代码)
在这里插入图片描述
如果你发现服务器中的代码已经过时,需要使用你的进行完全替换,这时候你就可以选择采用当前更改。

  1. 采用当前更改:保留你写的代码(上图中绿色的代码)
  2. 采用传入的更改:保留服务器中的代码(上图蓝色区域的代码)
  3. 保留双方的代码:顾名思义,两个都保存,会将两行都进行保存。

使用vscode自带git常见报错解决方案

当你选择保留当前更改之后,在进行提交你会发现推送的时候git push会报如下错误,你根据提示去选择拉去
在这里插入图片描述
则会报如下错误。这是因为你之前提交已经把你做的更改进行了提交,你选择保留你代码后,项目文件没有发送变化,vscode就无法再次帮你进行常规提交,因为他认为他已经提交了,但Git冲突却需要你在此进行提交来覆盖服务器中过时的代码
在这里插入图片描述
解决这个问题我们可以打开设置找到git,选择强制提交,之后进行一次强制提交即可但需要注意的是强制提交会覆盖服务器中原本的代码,一定要慎重使用,一定要确定你要覆盖的代码是过时的无用的在进行覆盖!!!在这里插入图片描述

pycharm的Git组件

常规拉去推送同步操作

pycharm的常规操作较为简单,只需点击右上角的提交更改即可进行操作,其中git addgit commitpycharm将其优化到一起进行了执行
在这里插入图片描述
在右上角有拉去按钮,在右下角存在切换分支和对分支进行一些操作的可视化界面
在这里插入图片描述
如果提交的时候没有选择git push 可以在如下图所示的地方选择git push并且右上角有一个提交路线图,制作精良,可以参考使用
在这里插入图片描述

使用pycharm处理冲突

出现如下图所示对话框可能就是出现了冲突了,这时候我们一般都点MERGE(合并),因为REBASE(重做),和取消效果相似,我们需要合并后查看哪里出现的冲突并进行解决
在这里插入图片描述
这里的可视化界面相较于vsc更加人性化,更加简便,我个人非常喜欢。
在这里插入图片描述