前言
最近复习了Git,算是掌握了Git的基本原理和使用方法,写篇文章进行汇总记录吧。
Git简介
版本控制
版本控制(Revisioncontrol)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。版本需要迭代,需要版本管理器。
有什么作用呢?
实现跨区域多人协同开发
追踪和记载一个或者多个文件的历史记录
组织和保护你的源代码和文档
统计工作量
并行开发、提高开发效率
跟踪记录整个软件的开发过程I
减轻开发人员的负担,节省时间,同时降低人为错误
版本控制分类
本地版本控制:记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。
集中版本控制:所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS。
分布式版本控制:所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。不会因为服务器损坏或者网络问题,造成不能工作的情况!每个人都拥有全部的代码。有安全隐患。代表产品:Git。
Git和SVN

Git可以直接看到更新了哪些代码和文件!
Git的历史

Linux社区中存在很多的大佬!破解研究BitKeeper!

Git下载、安装
找镜像网站进行下载。安装包就一直下一步就行了,安装完毕就可以使用了。
安装成功后在开始菜单中会有Git项,菜单下有3个程序:任意文件夹下右键也可以看到对应的程序!

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
GitGUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
Git必要的配置
git config -l 查看配置清单。虽然已经配置了用户信息,但是新的电脑上面是没有的。

git config --system --list 查看系统配置。

git config --global --list 查看本地配置,必须要配置用户名和邮箱,因为不配置的话,就不知道是谁在提交了。其实就这一步比较关键,只搞这一步就行了,就是配置全局用户名、全局邮箱。

# 设置全局用户名(替换成你的名字,比如 "张三" 或 GitHub 用户名)
git config --global user.name "Your Name"
# 设置全局邮箱(替换成你的邮箱,比如注册 GitHub/Gitee 的邮箱)
git config --global user.email "your_email@example.com"两个核心配置文件,使用命令修改,就和打开本地的这些文件,然后修改,是一样的。


Git原理与工作流程
Git原理
了解即可。


工作流程

Git项目的搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
本地化搭建就是:
git init远程克隆就是:
git clone urlGit文件的操作
文件的4种状态
了解即可。

举例说明
先git init初始化本地仓库。然后新建一个hello.txt,使用命令查看文件的状态。
# 查看文件状态,不加文件名就是查看所有文件状态
git status[filename] 
显示没有被跟踪。
# 添加所有文件到暂存区
git add .添加到暂存区,变成待提交的状态。

最后提交暂存区中的内容到本地仓库。
# 提交暂存区中的内容到本地仓库 -m 提交信息
git commit -m "xxxxxxxxx"如何忽略文件

一般项目中,只要用了git管理,都有这个文件,按语法可以自己来配置哪些文件可以忽略。

★上传本地仓库到Github
两种方法
github是有墙的,比较慢,在国内的话,我们一般使用gitee,公司中有时候会搭建自己的gitlab服务器。自己搭建的话,就使用gitlab,不难。
先注册Github账号,然后有多种方法可以实现上传本地仓库到Github。
方法 1:先克隆远程仓库 → 再放本地代码(最适合新手、最不容易出错) http协议
方法 2:先建本地仓库 → 再关联远程(标准流程、适合懂一点 Git 的人) ssh协议
方法二是标准 Git 工作流,适合已经有本地项目,不想先 clone 再拷文件的人。
配置SSH
为什么要配置SSH?
因为你用的远程地址是这种:
git@github.com:用户名/仓库名.gitGitHub 不认 “你是谁”,只认密钥对。只要你用 git@github.com:... 这种地址,push /pull 都要 SSH 认证。
日常开发、长期用、想省事 → 优先用第二种方法(本地 init + SSH),因为方法一,每次 push 可能要输账号密码。临时传个项目、不想折腾、纯新手 → 用第一种方法(先 clone)
配置SSH的步骤:
1.Windows:打开 Git Bash(必须用这个,别用 cmd)
2.复制下面这条命令,直接粘贴运行:
ssh-keygen -t ed25519 -C “你的GitHub注册邮箱”
把里面的邮箱换成你自己的 GitHub 邮箱!
然后一路按 回车 3 次,不需要输入任何东西。
3.复制这条命令运行:
cat ~/.ssh/id_ed25519.pub4.把公钥粘贴到 GitHub:
打开 GitHub → 右上角头像 → Settings
左侧找到 SSH and GPG keys
点击 New SSH key
Title 随便填(比如:我的笔记本)
Key 类型选 Authentication key
把刚才复制的公钥粘贴到下面的大框里
点 Add SSH key → 完成!
5.测试是否成功:
回到终端,输入:ssh -T git@github.com
如果出现:
Hi xxx! You've successfully authenticated...推送本地项目

可能遇到的问题
1.分支问题
你的分支是 master,不是 main
使用:
git push -u origin master2.端口问题
22 端口被墙 / 被封 → SSH 连不上 GitHub
原因是:国内网络把 GitHub 的 22 端口屏蔽了,不是你配置错了!
一步解决:让 SSH 走 443 端口(绕过封锁)
nano ~/.ssh/config打开后,把下面这段完整粘贴进去:
Host github.com
HostName ssh.github.com
User git
Port 443
IdentityFile ~/.ssh/id_ed25519
粘贴好后:
Windows / Mac 按
Ctrl + O→ 回车保存再按
Ctrl + X退出
现在测试连接!
ssh -T git@github.com
如果出现:
Hi xxx! You've successfully authenticated...✅ SSH 成功复活!
最后再推送你的代码
git push -u origin master直接成功!
GitHub 官方提供了 443 端口的 SSH 服务
443 是网页端口,不会被墙
我们只是让 Git 换个出口,密钥不用改、配置不用动
IDEA中使用Git操作
点击左边这个按钮,就可以提交文件了,这里其实默认就是直接提交到本地仓库了,不需要先暂存区,在本地仓库。还可以填提交信息。每次修改代码,都需要提交以下,然后写提交信息。

左下角点分支,可以看到提交的记录:

还能进行还原之前的提交:

绑定远程的Github仓库地址,可以添加和删除远程仓库地址。


有远程仓库后,就可以直接进行提交并推送了:

最上面还可以调分支:

Git的分支、团队合作
一个项目可能有多个分支。

分支在GIT中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!

如果了冲突了就需要协商即可!
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择保留他的代码,还是你的代码,保留谁的修改! master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。