Git(学习笔记)

前言:

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)

待完成

相关推荐
蒸蒸yyyyzwd1 小时前
cpp选手备注秋招 MySQL学习笔记 day8
笔记·学习·求职招聘
AI直播技术杂谈1 小时前
本周技术笔记:直播推流的心跳检测与断线重连逻辑
笔记
Aision_2 小时前
代码安全学习手记(二):SCA 软件成分分析原理与 OWASP Dependency-Check 集成实战
运维·人工智能·学习·安全·web安全·网络安全
是隼人3 小时前
buuctf-pwn bjdctf_2020_babystack2题解 整数溢出(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
一技安身3 小时前
【Git】零基础入门实战教程(Windows 完整版,适配竞赛仓库)
windows·git
KhalilRuan3 小时前
UnityCsReference——笔记
java·开发语言·笔记
电子云与长程纠缠4 小时前
UE5 Lyra PocketWorld进行3D内容UI预览 - 上
开发语言·学习·3d·ue5·游戏引擎
shangwen1234 小时前
食品厂无尘车间装修施工工艺笔记:C型钢吊顶加固方案尚文净化
笔记
210Brian4 小时前
STM32学习笔记(六)EXTI外部中断(下)
笔记·stm32·学习