Git基础操作

一、安装配置

1.1 Git与TortoiseGit安装

Git是一种分布式版本控制系统,用于跟踪文件的变化,特别是代码文件。它允许多人协作开发,提供分支和合并功能,便于管理不同版本的代码。

TortoiseGit是一个基于Git版本控制系统的图形化用户界面(GUI)工具,主要用于Windows操作系统。它是TortoiseSVN(一个Subversion客户端)系列的延续,提供了一个易于使用的界面,方便用户在Windows中管理Git仓库,而无需通过命令行操作。

Git:https://git-scm.com/

TortoiseGit:https://tortoisegit.org/

1.2 commit-msg hook脚本

commit-msg hook 脚本用于在执行 git commit 命令时自动检查提交信息。通过自定义commit-msg脚本,你可以在每次提交代码时强制执行一些规则,比如格式验证、检查是否包含某些关键字、或者确保提交信息符合项目的命名规范。它可以帮助团队规范化提交信息,提高版本控制的质量和一致性。通过自定义hook脚本,你可以确保所有的提交信息都符合团队约定的格式和标准,避免潜在的错误或不一致。简单来说,就是制定提交规范。

具体实现方法需要修改git安装目录下C:\Program Files\Git\mingw64\share\git-core\templates\hooks文件夹下的commit-msg.sample文件

使用的时候需要把后缀.sample删除,脚本才会在你执行git commit命令时自动执行,如果提交信息不符合要求,它会显示错误信息,并阻止提交。

# commit-msg

# 获取提交信息
COMMIT_MSG=$(cat "$1")
#echo "$COMMIT_MSG"

msg_rule="(feature|fix)"

# 检查提交信息是否包含 feature 或 fix 开头
if ! echo "$COMMIT_MSG" | grep -qE "$msg_rule" ; then
  echo "提交信息必须包含 feature 或 fix 开头"
  exit 1
fi

# 如果符合要求,允许提交
exit 0

1.3 配置ssh到gitlab上

  1. 生成密钥信息

  2. 添加ssh公钥到github的ssh配置上

  3. 进入第1步”ssh-keygen -t rsa -C “github上注册的邮箱”“命令中key保存的地址,打开id_rsa.pub,将其中的内容全部复制粘贴到github网页中的 个人ssh-key中

  4. Tortoise Git的ssh配置为git的ssh, 右击->TortoiseGit->Settings->SSH client中输入git安装目录下的\usr\bin\ssh.exe路径

生成密钥信息步骤:
git config --global user.name "github上注册的用户名"

git config --global user.email "github上注册的邮箱"

# 这里会提示输入密码,直接三个Enter就行(可输可不输)
ssh-keygen -t rsa -C "github上注册的邮箱"               

二、git工作原理

Git 的工作原理是通过工作区、暂存区和本地仓库的协作来管理文件的版本控制。通过分支和合并的机制,解决在多人协作时版本冲突问题。Git的分布式特性使得每个开发者都可以拥有完整的项目历史,并且支持高效的离线工作。

Remote:远程仓库,即gitlab服务器上的仓库,提供了网页访问

repository:本地仓库,即clone到自己本地的仓库

index:暂存区,修改保存或者新文件添加的暂存区域,add之后,commit之前

workspace:工作区,特定分支上的修改

三、git基本操作

3.1 分支切换

命令行:git checkout 分支名
Tortoise:所在仓库目录右击 -> TortoiseGit -> switch/checkout下拉框选择需要切换的分支名,也可以切换到某个tag或者commit提交点

3.2 查看当前分支

命令行:git branch -r
Tortoise:所在仓库目录右击 -> TortoiseGit -> show log

3.3 创建分支

拉分支有三种方式:基于分支拉分支;基于标签拉分支;基于某个提交点拉分支

最简单的额方法直接在github页面上操作即可,再git fetch一下,将你本地的仓库的分支切换到你新创建的分支上

同理,也可在本地创建一个新的分支,将新分支推送到远程仓库

命令行:git push origin 分支名称

3.4 代码四连(更新、添加、提交、推送)

命令行:git pull origin "远程分支名":"本地分支名" 
Tortoise:所在仓库目录右击 -> TortoiseGit -> pull

命令行:git add "文件名"(git add . 是表示添加所有文件)
Tortoise:所在仓库目录右击 -> TortoiseGit -> git add

命令行:git commit -m "注释信息"
Tortoise:所在仓库目录右击 -> git commit -> "分支名"

命令行:git push origin "远程分支名":"本地分支名"
Tortoise:所在仓库目录右击 -> TortoiseGit -> push

3.5 创建合并请求

一般在网页上进行操作

3.6 代码合入

3.7 删除分支

合并完成后可以选择删除源分支

此外开发人员需要手动删除自己本地的关联分支。因为远程仓库的分支删除后,本地分支已经失去了和远程分支的联系。后续如果远程仓库创建了同名分支的话,新的同名分支pull到本地时会产生冲突,因此需要手动删除本地分支。

#首先切换到其他分支,如果当前所在分支是需要删除的分支,是无法进行后续操作的
命令行:git checkout master

#然后,删除关联的本地分支
命令行:git branch -d br_xxxx

#最后,删除失效的远程分支
命令行:git fetch -p

#可以使用git branch -a确认分支是否删除成功
命令行:git branch -a

3.8 查看日志

Tortoise:所在仓库目录右击 -> TortoiseGit -> show log
Tortoise:双击文件进入,可查看文件变更前后的代码差异情况(二进制文件无法查看)

3.9 代码回退

3.9.1 revert回退

revert有两种用法:回退工作区(本地已经修改但是还没有commit)的修改;回退已经commit的修改

命令行:git checkout -- 文件名
Tortoise:所在仓库目录右击/需回退的文件 -> TortoiseGit -> Revert change by this commit

命令行:git revert 'commit id'
Tortoise:所在仓库目录右击 -> TortoiseGit -> Show log -> 选择需要回退的点 -> 右击 -> Revert change by this commit

3.9.2 reset回退

git reset回退时,如果commit点已经push到远程分支,必须要有对应远程分支的push权限,且需要加上–force,强推代码修改commit信息

reset分为三种类型:–soft、–mixed(默认)、–hard

–soft回退只是移动HEDA分支,–mixed回退后,是将,确认回退,直接提交生成回退的commit; –hard是直接删除对应的commit点和日志。

命令行:git reset --force 'commit id'
Tortoise:所在仓库目录右击 -> TortoiseGit -> Show log -> 选择需要回退的点 -> 右击 -> Reset"分支名" to this commit

results matching ""

    No results matching ""