前言:
svn是集中式版本控制工具
git是分布式版本控制工具
【工作区(add →)暂存区(commit → )本地库】(push → )远程库(gitee, gitlab, github)
【工作区( ←rm )暂存区(←无法撤回)本地库】(无法撤回)远程库
【工作区( )暂存区( )本地库】(←clone )远程库 // 首次获取
【工作区( )暂存区( )本地库】(←pull )远程库 // 2次以后获取
1 Git下载安装
1.1 客户端下载
官网:git-scm.com

下载windows64位

下载完成

1.2 安装
双击执行

下一步




设置默认编辑器

Let Git decide:让git使用默认主分支名(master),无需手动指定

User Git from Git Bash only:仅运行Git Bash 使用Git
Git from the command line and also from 3rd-party software:允许命令行与第三方使用Git

Use bundled OpenSSH:使用Git自带SSH客户端(兼容强)
Use external OpenSSH:使用环境配置SSH客户端(适用于监管严格行业)

Use the OpenSSL library:使用Git内置的SSL进行远程库HTTPS连接
Use the native Windows Secure Channel library:使用Windows原生通道

Check out Windows-style,commit Unix-style line endings:获取时将Linux换行LF自动转换为Windows的CRLF。提交时将Windows换行自动转换为Linux换行。
Checkout as-is,commit Unix-style line endings:提交时转换,获取时不转换
Checkout as-is, commit as-is:提交获取都不转换

Use MinTTY:终端模拟器(支持右键粘贴)

Merge:pull时先快进合并远程分支到本地,本地有更新则合并。

Git Credential Manager:使用系统原生平局管理器(不使用密码)访问远程库


1.3 初始化本地库(可选)
注释:只有用命令行新规项目或文件时才需要,目的是使Git有文件夹管理权限
(1) 创建文件夹:
(2) 进入文件夹右键:Open Git Bash here // 打开命令窗口

(3) 命令:git init // 初始化本地库,使git有当前文件夹控制权限

1.4 配置(可选)
(1) 配置用户名:git config --global user.name 用户名
(2) 配置邮箱:git config --global user.email 邮箱
注释:执行git命令后,会在 c盘/用户/windows用户的文件夹下,生成.gitconfig文件。可以编辑该文件修改用户名和邮箱。(该设置只为区分操作者)
2 远程库
本地查看远程库别名:git remote -v
本地创建远程库别名:git remote add 别名 https远程库.git
2.1 Github
2.1.1 新建仓库
GitHub: 加号 > new repository > 输入项目名 // public(公开), private(5人以内免费)
2.1.2 团队管理
**(1) 邀请团队成员:**登录github, 进入库, settings, manage access, invite a collaborator, 添加成员账号, 复制pending invite(邀请函), 将邀请函发给成员,成员登录github, 访问邀请函url(同意,拒绝) 只有成员才可以push代码
**(2) 夸团队协作:**方式1(将http.git发送给其他团队),方式2(其他团队,github搜索【创建者/项目名】github右上fork (复制项目到自己库), 团队成员(add,commit,push,pull), 其他管理(github, pull requests, new pull request))
**(3) 本地管理:**本地管理者(pull requests), marge pull request(合并其他团队提交),confirm marge(确认合并)
(4) SSH免密登录: 管理者(本地打开git bash here) ,ssh-keygen -t rsa -C github账号,查看.pub(公钥)文件并复制内容,登录github 用户settings, SSH and GPG keys, new ssh key, 起名, 粘贴.pub内容 // 可以用ssh.get替换http.git拉去提交代码
2.2 Gitee
2.2.1 新建仓库
Gitee:加号 > 新建仓库 > 输入仓库名 > 选择(公开,私有)> 创建
2.2.2 管理
(1) 导入Github项目到Gitee: 加号 > 新建仓库 > 导入已有仓库(不用输入名字) > 输入Github连接 > 创建 // 项目更新:项目名右侧强制更新(将Github项目更新到Gitee)
2.3 Gitlab
注释:社区版不允许用于公开或商业用途
2.3.1 下载安装
系统:CenterOS7(需要最低2核,4G(推荐8G,4G不够)内存,否则无法启动服务器)
设施:CenterOS7已经停止更新直接安装会显示错误,按如下配置变更
# 备份原有的配置(防止操作失误无法回退)
sudo mv /etc/yum.repos.d /etc/yum.repos.d.bak
# 创建新的配置目录
sudo mkdir /etc/yum.repos.d
# 下载阿里云提供的CentOS7源配置文件
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 将源地址替换为阿里云的 Vault 归档地址(CentOS7已停更,普通镜像站不再更新)
sudo sed -i 's|http://mirror.centos.org/centos/$releasever|https://mirrors.aliyun.com/centos-vault/7.9.2009|g' /etc/yum.repos.d/CentOS-Base.repo
# 清理旧缓存并生成新缓存
sudo yum clean all
sudo yum makecache
安装依赖:sudo yum install -y curl policycoreutils-python openssh-server openssh-clients postfix
启动并设置开机自启 SSH 和 Postfix:
sudo systemctl enable sshd
sudo systemctl start sshd
sudo systemctl enable postfix
sudo systemctl start postfix
配置防火墙规则:开放 HTTP 和 HTTPS 服务端口,使外部能够访问 GitLab Web 界面
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
手动配置清华大学镜像源(国内速度更快):
# 1 创建配置文件
sudo vim /etc/yum.repos.d/gitlab-ce.repo
# 2 写入以下内容(以清华源为例):
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
# 3 更新缓存:
sudo yum makecache
# 4 执行以下命令安装 GitLab 社区版(CE),文件很大卡在【Installing : gitlab-ce-17.1.1-ce.0.el7.x86_64】10分钟左右,耐心等待
sudo EXTERNAL_URL="http://服务器IP地址" yum install -y gitlab-ce
2.3.2 启动
(1) 执行重配置(耗时较长约20分钟,需耐心等待):sudo gitlab-ctl reconfigure // 此过程会自动安装 Nginx、PostgreSQL、Redis等组件并初始化数据库
(2) 检查状态:sudo gitlab-ctl status // 所有组件状态显示为 run,则说明服务启动成功

2.3.3 访问
(1) 首次访问:配置的服务器IP地址(默认端口8080)
(2) 输入用户名密码:用户名(root),密码(sudo cat /etc/gitlab/initial_root_password)查看 // 初始密码会在24小时后删除,首次访问需修改密码


(3) 修改密码:个人头像 > Preferences > Password
2.3.4 新建仓库
Gitlab:new project > create a blank project > 输入项目名 > create project
2.3.5 新建用户
方式1:登录页面注册(需管理员同意,同意页面如下)
方式2:管理员创建 // 17.1版本,页面左上角用户图标 > Administrator > 右上用户标(view user in admin area) > Overview > Users > New User
注释:也可直接访问URL:ip地址/admin/users,创建用户或同意用户注册请求
用户权限:
Guest(访客):仅能查看公开的项目信息,无法访问代码仓库,适合外部协作人员。
Reporter(报告者):Guest之上还可以克隆/查看代码仓库、查看下载构建产物,适合测试等非代码开发岗位
Developer(开发者):拥Reporter的之上还可创建新分支、提交推送代码到非保护分支、发起合并请求,是普通开发人员的默认角色。(非保护分支:main 或者 master 之外分支默认非保护)
Maintainer(维护者):拥有Developer的全部权限,可管理项目设置、调整保护分支规则、管理项目成员、合并代码到受保护分支、配置CI/CD流水线,是项目的核心运维管理者。
Owner(所有者):拥有Maintainer的全部权限,可删除项目、转移项目所有权、管理所有成员权限,仅项目创建者或被提升的用户可拥有该角色。
2.3.6 添加用户到项目
Group > Manage > Members > Invite members > 输入用户名(输入只是检索,必须点一下选择)> 输入权限,输入过期时间
3 操作Git(自带Git Bash)
3.1 linux命令
注释:git命令窗口可以执行部分linux命令
(1) 创建文件:touch 文件名
(2) 编辑文件:vim 文件名
3.2 提交撤回
(1) 添加暂存区:git add 文件名
(2) 取消暂存区:git rm --cached 文件名
(3) 提交本地库:git commit -m "提交注释" 文件名
注释:控制台显示 warning: in the working copy of 'test.txt', LF will be replaced by CRLF the next time Git touches it(可在项目根目录添加.gitattributes文件,设置window和linux文件的换行符)
# 将所有文本文件标准化为 LF
* text=auto
# 对于特定的 Windows 脚本文件,强制使用 CRLF
*.bat text eol=crlf
*.cmd text eol=crlf
# 对于二进制文件,禁止转换
*.png binary
*.jpg binary
*.pdf binary
3.3 查看命令
(1) 查看版本:git --version //显示git版本信息
(2) 查看状态:git status // 显示当前分支名,本地库(已添加,未添加的文件名)
(3) 查看已提交版本:git reflog // 显示所有分支的提交的履历信息
(4) 查看已提交详细信息:git log // 显示所有分支提交履历信息,包含提交用户提交时间等
(5) 查看分支:git branch -v //查看当前分支名,以及最后提交信息
3.4 分支
(1) 创建分支:git branch 分支名
(2) 切换分支:git checkout 分支名
(3) 切换版本:git reset --hard 7位版本号 // 版本号可通过 git reflog查看。例如版本1,2,3,当版本切换回2之后,修改文件再次提交,会覆盖履历3,最后只显示1,2,4

(4) 合并分支到当前分支:git merge 分支名
注释:合并冲突时,需要手动修改文件,添加,提交
3.5 远程库
(1) 推送本地代码到远程库:git push 远程库别名 本地库分支名 // 没有windows凭据管理器,则需弹窗登录github

(2) 首次获取远程库代码:git clone https...git // 克隆会拉代码,初始化本地库,自动起别名(origin)。克隆可直接进行不需要提前初期化本地库

(3) 更新远程库代码到本地:git pull 远程仓库名称 远程分支名称 // 不要与clone命令在同一级执行,否则会将clone工程,与拉去内容生成在同一级文件夹

4 操作Git**(TortoiseGit** )
注释:只作为Windows工具使用,需提前安装Git环境
4.1 下载
官网:Download -- TortoiseGit -- Windows Shell Interface to Git


4.2 安装
双击执行

下一步






电脑重启后显示图标

4.3 操作
4.3.1 创建文件

4.3.2 提交撤回
(1) 添加暂存区:Add


(2) 取消暂存区:


(3) 提交本地库:Commit




(4) 文件修正:

注释:撤销修正与提交 同新规一样
4.3.3 查看
(1) 查看状态:
新规

添加暂存区

已提交

有修正

(2) 查看已提交版本:Show RefLog


(3) 查看已提交详细信息:Show log


(5) 查看分支:


4.3.4 分支
(1) 创建分支:Create Branch


(2) 切换分支:Checkout


(3) 取消提交:Reset

(3) 切换版本:Checkout to this // 会生成新分支


(4) 合并分支:Merge



4.3.5 远程仓库
(1) 推送本地代码到远程库:push(先commit)


(2) 首次获取远程库代码:clone


(3) 更新远程库代码到本地:pull

5 操作Git(eclipse)
先克隆远程库到本地,导入eclipse项目
5.1 提交代码
Window > Show View > Other > GitStaging
(1) 添加暂存区

(2) 提交并推送远程库

5.2 获取代码
(1) 拉取远程库代码

(2) 切换分支

5.3 查看履历
Window > Show View > Other > History

5.4 忽略文件
项目根目录创建.gitignore文件,指定忽略的文件及文件
/build/
/.settings/
.gitignore
.classpath
.project
6 操作Git(IDEA)
待完成