Gitlab及Git使用说明

news2024/12/25 14:08:45

目 录
1 Gitlab及Git介绍说明 5
1.1 什么是 Gitlab 5
1.2 什么是Git 5
1.3 Git 家族成员 5
1.4 Gitlab版本 5
1.5 Gitlab 优势 5
1.6 Gitlab 主要服务构成 6
1.7 Gitlab 简单工作流程 6
1.8 Gitlab用户角色 6
2 Gitlab安装与使用 7
2.1 Gitlab安装说明(管理员) 7
2.1.1 安装依赖环境 7
2.1.2 yum 安装gitlab-ce 7
2.1.3 加载配置 8
2.1.4 登录并修改默认的root用户密码 8
2.1.5 优化:用域名访问 9
2.1.6 本地配hosts进行域名解析 9
2.1.7 gitlab日常管理 10
2.2 Gitlab的使用(管理员) 10
2.2.1 Gitlab相关命令 10
2.2.2 gitlab安装目录 10
2.3 Gitlab的使用 11
3 Git安装与使用 14
3.1 Windows Git安装 14
3.1.1 下载Git 14
3.1.2 安装 15
3.1.3 Git配置 28
3.2 Ubuntu Git安装 34
3.3 Git的使用 34
3.3.1 创建项目(代码维护者(Maintainer)) 34
3.3.2 建本地分支并上传分支(代码维护者(Maintainer)) 35
3.3.3 克隆项目(下载代码) 36
3.3.4 切换分支 37
3.3.5 拉取代码 37
3.3.6 提交更改 37
3.3.7 拉取分支代码 37
3.3.8 Git查看远程地址 38
3.3.9 打标签 40
3.3.10 Git常用命令 41
4 TortoiseGit的使用 42
4.1 安装文件 43
4.1.1 下载地址 43
4.1.2 公司内部地址 43
4.2 安装及配置 43
4.2.1 安装 44
4.2.2 配置 44
4.3 克隆代码 48
4.4 比较差异 49
4.4.1 比较目录中所有文件的差异 49
4.4.2 比较单个文件的差异 50
4.5 提交文件 51
4.6 还原文件 53
4.7 追溯历史更改 54
4.8 其他用法 55
5 Git管理流程与方法 55
5.1 管理流程图 55
5.2 管理代码的说明 56
5.3 VIVADO工程代码 56
5.3.1 工程文件内容 56
5.3.2 上传内容 56
5.4 Java工程代码 56
5.4.1 工程文件内容 56
5.4.2 Git管理内容 56
5.5 Vue 工程代码 57
5.5.1 工程文件内容 57
5.5.2 Git管理内容 57
5.6 React工程代码 57
5.6.1 工程文件内容 57
5.6.2 Git管理内容 57
6 附录 57
6.1 极客Gitlab教程 57
6.2 官网Git文档指南 58
6.3 TortoiseGit 详细教程 59
6.3.1 安装包公司内部地址 59
6.4 Git可视化工具-idea插件使用 59
6.5 Vivado 工程文件内容说明 59
6.6 Git拉取某个分支代码步骤 59
6.7 Git如何建本地分支 59
6.8 Git 如何在远程分支上新建分支 59
6.9 分支代码合并到master分支 60
6.10 Git下载指定历史版本的代码 60
6.11 如何撤销 Git 添加命令? 60
6.12 Git回滚版本 62
6.13 撤销commit 65
6.14 Git删除文件 65
6.15 git stash命令用法 65
6.16 获取最近一次提交的作者信息 66
6.17 当commit后,发现之前有人提交,不能push如何处理? 66

正 文

1Gitlab及Git介绍说明

1.1什么是 Gitlab
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发。
开发语言:Ruby,Go
功能:管理项目源代码、版本控制、代码复用与查找、权限管控。

1.2什么是Git
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1]也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
1.3Git 家族成员
Git:是一种版本控制系统,是一组命令,是一种工具,没有可视化界面;
Gitlib:是用于实现 Git 功能的开发库;
Github:是一个在线代码托管仓库,包含一个网站界面,向互联网开放;(同类网站码云,云效,工蜂)
GitLab:是一个基于 Git 实现的在线代码仓库托管软件,提供web可视化管理界面,通常用于企业团队内部协作开发。

1.4Gitlab版本
包括社区免费版和企业收费版。

1.5Gitlab 优势
※开源免费,适合中小型公司将代码放置在系统中,社区版目前提供的功能完全能满足中小型公司的日常使用,如果想升级为收费版也可以无缝对接;
※差异化的版本管理,任何微小的变动都会被记录下来;
※离线同步,不依赖网络通信,可以将本地的所有 Git 操作在有网络的时候同步到 Gitlab 仓库中;
※强大分支管理功能,可以针对不同的环境、不同的业务逻辑创建独立的分支,然后进行并行独立的维护和更新;
※GUI 操作界面
※强大账户权限管理,不同账户的权限各不相同;
※集成度很高,能够集成绝大多数的开发工具,比如 JIRA,Idea;
※支持内置 HA,保证在高并发下仍然可以高可用性,无需搭建第三方高可用服务,保证用户在 7*24 小时均能使用。

1.6Gitlab 主要服务构成
Nginx :静态 Web 服务器:proxy 代理,处理所有 HTTPS 静态访问请求
Gitlab-workhorse :轻量级的反向代理服务器:处理一些较大的文件上传下载,以及我们经常使用的 git push 命令行操作;
Gitlab-shell:用户处理 Git 命令和修改 authorized keys 列表(ssh 公钥列表);
Logrotate:日志文件管理工具,负责Gitlab 日志切割、打包等操作;
Postgresql:数据库,保存所有 Gitlab 数据信息;
Redis:缓存服务器,缓存数据库信息;
sidekiq:用于在后台执行队列任务(异步执行);
unicorn:http服务软件,GitLab Rails应用是托管在这个服务器上面的。

1.7Gitlab 简单工作流程
※创建并克隆项目;
※创建项目某 Feature 分支;
※编写代码并提交至该分支;
※推送该项目分支到远程 Gitlab 服务器;
※进行代码检查并提交 Master 主分支合并申请;
※项目主管审查代码并确认合并申请;
1.8Gitlab用户角色
GitLab的6种角色包括:

  1. 访客(Guest):可以只读的方式访问所有项目;

  2. 报告者(Reporter): GitLab项目的测试人员:该角色在Guest角色权限基础上多了观看、克隆Gitlab项目的代码权限,但是不能提交项目代码,即只能看不能改。可以创建问题、发表评论和查看项目;

  3. 开发者(Developer):GitLab项目的项目开发人员:该角色可以克隆、开发、提交项目代码,以及创建问题和发表评论;

  4. 代码维护者(Maintainer):GitLab项目的管理员,可以管理项目的成员、分支和标签,以及创建、关闭和合并问题;负责代码合并与代码审核。

  5. 拥有者(Owner):拥有项目的所有权限,可以进行项目的管理和设置;

  6. 管理员(Administrator):可以管理所有项目和GitLab实例,包括用户和权限设置等及GitLab日常维护。

2Gitlab安装与使用
2.1Gitlab安装说明(管理员)
注:安装环境为Centos7
2.1.1安装依赖环境

sudo yum install -y curl policycoreutils-python openssh-server openssh-clients perl
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

2.1.2 yum 安装gitlab-ce

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum -y install gitlab-ce

2.1.3加载配置

sudo gitlab-ctl reconfigure

2.1.4登录并修改默认的root用户密码
需要执行以下命令:

cd /opt/gitlab/bin
gitlab-rails console
cd /opt/gitlab/bin
> u=User.where(id:1).first
>User.all
> u.password='123456cs'
> u.password_confirmation='123456cs'
> u.save!
> exit

见下图操作:
在这里插入图片描述

2.1.5优化:用域名访问
修改/etc/gitlab/gitlab.rb的这一个参数:
external_url “http://gitlab.szyt.com”
执行命令,让修改生效:

sudo gitlab-ctl reconfigure

2.1.6本地配hosts进行域名解析
在CentOS7上,可以通过编辑“/etc/hosts”文件来配置主机文件。在该文件中添加以下代码:
IP地址 域名
见图片:

在这里插入图片描述

在完成DNS服务器和主机文件的配置之后,可以通过以下命令来重启网络服务:

systemctl restart network

重启网络服务后,您的CentOS7服务器应该已经配置好了域名解析。

2.1.7gitlab日常管理

  gitlab-ctl start|stop|status|restart

2.2Gitlab的使用(管理员)
2.2.1Gitlab相关命令

gitlab-ctl start #启动全部服务
gitlab-ctl restart#重启全部服务
gitlab-ctl stop #停止全部服务
gitlab-ctl restart nginx #重启单个服务,如重启nginx
gitlab-ctl status #查看服务状态
gitlab-ctl reconfigure #使配置文件生效
gitlab-ctl show-config #验证配置文件
gitlab-ctl uninstall #删除gitlab(保留数据)
gitlab-ctl cleanse #删除所有数据,从新开始
gitlab-ctl tail <service name>查看服务的日志
gitlab-ctl tail nginx  #如查看gitlab下nginx日志
gitlab-rails console  #进入控制台

2.2.2gitlab安装目录
以下是gitlab常用的默认安装目录
※gitlab组件日志路径:/var/log/gitlab
※gitlab配置路径:/etc/gitlab/ 路径下有gitlab.rb配置文件
※应用代码和组件依赖程序:/opt/gitlab
※各个组件存储路径: /var/opt/gitlab/
※仓库默认存储路径 /var/opt/gitlab/git-data/repositories
※版本文件备份路径:/var/opt/gitlab/backups/
※nginx安装路径:/var/opt/gitlab/nginx/
※redis安装路径:/var/opt/gitlab/redis

2.3Gitlab的使用
A 用浏览器登录网站,注册用户或登录,如:http://192.168.188.48/users/sign_in
在这里插入图片描述

B 登入网址

C 选择项目,见下图:
在这里插入图片描述
在这里插入图片描述

D 获取项目地址:选中“克隆”,并复制链接,即得到项目地址,见下图:

在这里插入图片描述

3Git安装与使用
3.1Windows Git安装
注:安装环境Windows、Linux、Mac,本文主要介绍Windows下的安装,版本Git-2.41.0-64-bit。

3.1.1下载Git
https://git-scm.com/download
在这里插入图片描述
在这里插入图片描述

3.1.2安装
※下载完成后,直接点击安装包安装。

在这里插入图片描述

※选择安装目录
在这里插入图片描述

※此处默认即可。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

※设置环境变量PATH
配置一是 “仅从 Git Bash 使用 Git” 。这是最安全的选择,因为您的 PATH 根本不会被修改。您只能使用 Git Bash 的 Git 命令行工具。但这将不能通过第三方软件调用 Git 。

配置二是 “从命令行以及第三方软件启用 Git” 。该选项被认为是安全的,因为它仅向 PATH 添加了一些最小的 Unix 命令解析器,以避免使用时造成系统环境混乱。您将能够从 Git Bash ,命令提示符和 Windows PowerShell 以及在 PATH 中寻找 Git 或是在任何第三方软件中使用 Git 。这也是推荐的选项。

配置三是 “从命令提示符使用 Git 和可选的 Unix 命令” 。警告:这将覆盖 Windows 命令,如:find 和 sort。你只有在了解其含义后才使用此选项。
一般默认即可。
在这里插入图片描述

※选择Https transport backend ,按默认
在这里插入图片描述

※以下内容按默认方式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

※是否启用实验功能
这里不勾选,默认选择,如果想尝试新功能,可官网查阅资料了解即可。

在这里插入图片描述

※开始安装,等待片刻,最后Finish。

3.1.3Git配置
3.1.3.1 配置用户名和邮箱
A 桌面右键——>git bash here
在这里插入图片描述

B为本机设置name和emailname
命令:

#配置用户名
git config --global user.name "test"
#配置邮箱
git config --global user.email  abc@163.com

如图:
在这里插入图片描述

3.1.3.2配置GitLab中的SSH key

A查看是否配置用户名和邮箱

git config --global --list

B查看是否已有SSH key
(1)桌面右键点击弹出,点击Git Bash进入命令行界面
在这里插入图片描述

(2)cat ~/.ssh/id_rsa.pub查看SSH秘钥是否存在,可以看到初次没有生成过

在这里插入图片描述

(3)(生成过可删除,重新生成)找到C:\Users\admin.ssh,admin是当前用户名,删除以下文件

C、生成SSH 密钥

ssh-keygen

输入ssh-keygen,连续3次回车,成功之后id_rsa,id_rsa.pub两个文件默认在C:\Users\ admin.ssh目录下,cmd运行窗口也显示了文件路径。
如下图,一路回车即可生成,会在C:\Users\admin.ssh下生成基于rsa的公钥与私钥对。

在这里插入图片描述

D、 添加SSH key到Gitlab
(1)输入命令,查看公钥并复制以ssh-rsa开头的这段ssh key;

cat ../.ssh/id_rsa.pub    #查看公钥,自己手动复制
cat ~/.ssh/id_rsa.pub | clip #或者直接复制到剪贴板

在这里插入图片描述

(2)将ssh key填写到gitlab ​​​SSH Keys上。见下二图,并点击“添加密钥”:
在这里插入图片描述
在这里插入图片描述

3.1.3.3查看git当前用户
要查看git当前用户,可以通过以下不同的方式实现:

使用git config命令获取当前用户的用户名:

git config user.name

git config user.name

这将返回当前git用户的用户名。

使用git config命令获取当前用户的邮箱:

git config user.email

git config user.email

这将返回当前git用户的邮箱。

3.2 Ubuntu Git安装
安装Debian/Ubuntu的最新稳定版本:

$apt-get install git

3.3Git的使用
3.3.1创建项目(代码维护者(Maintainer))
A上传本地代码文件到git仓库
在代码所在目录下执行下面命令:

$git init (初始化仓库)
$git add . (这里的.表示添加所有文件,也可以自定义添加)
$git commit -m ‘添加的注释信息’// git commit -m ‘原始版本上传’
$git remote add origin ‘url’  //例如:git remote add origin http://192.168.188.48/robingeng/CMMS_test3.git
$git push -u origin master

注:如果项目为管理员或项目负责人创建,那么则不需要自己创建项目,需要管理员提供项目链接,如:http://192.168.188.48/szyt_app/CMMS_APP.git
那么直接git clone 即可。

$git clone -b develop http://192.168.188.48/szyt_app/CMMS_APP.git

如果拉取某个分支,比如develop分支,可用下面命令。

$git clone -b develop http://192.168.188.48/szyt_app/CMMS_APP.git

3.3.2建本地分支并上传分支(代码维护者(Maintainer))
A在当前仓库中,使用“git branch”命令加上分支名称即可创建本地分支。

$git branch develop

这样就建立了一个名为“develop”的新分支。

B 用“git branch”命令可以查看当前所有分支及其状态。

$git branch

当前有二个分支,master与develop,如图:
在这里插入图片描述

其中, “*”号所在的分支就是当前所在的分支,“master”是默认创建的主分支,而“develop”是新建的分支。

C 切换分支
如果需要切换到“develop”分支,可以使用“git checkout”命令进行切换。

$git checkout develop

切换到“develop”分支后,可以在这个分支上进行代码修改和提交。
D 查看当前分支
如果需要查看当前所处的分支,可以使用“git status”命令查看状态信息。

$git status

如图:
在这里插入图片描述

E 从远端目标分支(master) copy代码

$git pull origin master

F 将本地新建的分支(develop)同步到服务器

$git push origin develop

如图:
在这里插入图片描述

这样,在Gitlab端,就看到了分支develop信息。
在这里插入图片描述

3.3.3克隆项目(下载代码)
开始做一个项目时需要克隆项目代码,用下面命令:

$git clone http://192.168.188.48/robingeng/CS66.git
或者
$git clone git@192.168.188.48:robingeng/CS66.git

3.3.4切换分支

$git checkout develop

也可直接克隆分支,如下:

$ git clone -b develop git@192.168.188.48:robingeng/CS66.git

例:git clone -b develop git@192.168.188.48:robingeng/CS66.git

3.3.5拉取代码
开发过程中,要拉取(获取)最新代码,用以下命令:

$git pull

3.3.6提交更改

$git add .     (. 代表所有,也可具体到某一个文件)
$git commit -m ‘注释’
$git push

其中,“git add .”命令将所有修改的文件添加到本地提交中,“git commit -m”命令将提交添加到本地仓库,并为其添加一条注释,“git push”命令将本地提交推送到GitLab服务器。

3.3.7拉取分支代码
在使用Git进行版本控制的过程中,经常需要拉取某个分支的代码。这里将介绍Git拉取某个分支代码的步骤。
前提条件,新建一个目录,在目录下右键启动git bash
A 初始化

$git init

B 克隆代码

$git clone git@192.168.188.48:robingeng/CS66_TSN.git

C获取远程仓库中所有分支信息并保存到本地

$git fetch

D 查看所有分支信息

$git branch -a

E 切换到某个分支

$git checkout < branch_name >

其中,<branch_name>是需要切换到的分支名称。这个命令会将当前分支切换为指定的分支,并更新本地代码。

F 拉取代码

$git pull origin <branch_name>

其中,<branch_name>是需要拉取的分支名称。该命令会从远程仓库获取最新代码,并将代码合并到本地文件夹中。
G 查看当前状态

$git status

3.3.8Git查看远程地址
3.3.8.1查看已配置的远程仓库

$ git remote -v

该命令会显示已经配置的远程仓库的名称和地址。例如,输出可能会类似于:

origin	http://192.168.188.48/szyt_system/devices/CS66.git (fetch)
origin	http://192.168.188.48/szyt_system/devices/CS66.git (push)

3.3.8.2查看远程仓库的详细信息

$ git remote show

该命令会显示远程仓库的地址、分支信息、跟踪分支等详细信息。这对于了解远程仓库的状态和配置非常有帮助。

3.3.8.3查看远程仓库的 URL

$ git config --get remote..url

其中, 是远程仓库的名称。该命令会输出远程仓库的 URL。

3.3.8.4查看远程仓库的所有分支

$ git ls-remote --heads

其中, 是远程仓库的 URL。该命令会列出远程仓库的所有分支和对应的 commit ID。

3.3.8.5查看远程仓库的提交记录

$ git log --oneline

其中, 是远程仓库的名称, 是远程分支的名称。该命令会显示远程分支的提交记录,包括 commit ID 和提交信息。

3.3.8.6查看远程仓库的文件列表

$ git ls-tree --name-only

其中, 是远程仓库的名称, 是远程分支的名称。该命令会列出远程分支的文件列表。

3.3.8.7查看远程仓库的提交差异

$ git diff / HEAD

其中, 是远程仓库的名称, 是远程分支的名称。该命令会显示远程分支和本地分支之间的提交差异。
3.3.9打标签
3.3.9.1查看标签

$ git tag

3.3.9.2打标签
在 Git 中创建附注标签十分简单。 最简单的方式是当你在运行 tag 命令时指定 -a 选项:

$ git tag -a v1.4 -m "my version 1.4"

3.3.9.3将标签推送远程仓库

#推送标签v1.5到远程仓库

$ git push origin v1.5

#将所有标签推送到远程仓库

$ git push origin --tags

3.3.9.4切换标签
git checkout

$ git checkout v1.5

3.3.9.5拉取指定tag

  1. 查看可用的标签:首先,您可以使用以下命令查看可用的标签列表:
    git tag
$ git tag

这将列出所有可用的标签。

  1. 切换到标签:选择要切换到的标签,然后使用以下命令切换到该标签:
    git checkout <tag_name>
$ git checkout v1.0

Git会将您的工作目录切换到标签所指向的特定提交,即切换到标签时的代码状态。

  1. 拉取标签的代码:在切换到标签后,您可以使用以下命令来确保本地仓库是最新的:
    git pull origin <tag_name>
$ git pull origin v1.0 

请注意,标签本身通常不支持拉取操作,因为标签代表一个静态的快照,不会像分支一样更新。所以,使用git pull 命令时,您需要指定远程仓库(通常是"origin")和标签名称来获取与标签关联的最新代码。

现在,您已经成功切换到标签并拉取了该标签的代码。请注意,标签通常用于表示软件的版本或发布,因此它们通常不会改变,如果您希望在标签基础上进行开发,请考虑创建一个新的分支。

3.3.10Git常用命令

用户名: $ git config user.name 
邮箱:$ git config user.email
密码:$ git config user.password  
用户名:$ git config --global --replace-all user.name "要修改的用户名"
邮箱: $ git config --global --replace-all user.email"要修改的邮箱"
密码:$ git config --global --replace-all user.password "要修改的密码"
查看修改状态:$git status
拉取远程仓库代码:$git pull
克隆远程某分支上的代码:$git clone -b 分支名称 http://xxx.git
合并分支到主分支:$git merge 分支名称
创建新分支:$git branch 新分支名
删除分支:$git branch -D 分支名
查看分支:$git branch
分支切换:$git checkout 分支名称
查看记录:$git log
查看地址:$git remote -v
强制合并代码(用于当前版本和历史提交版本不一致的情况):$git pull origin 分支名--allow-unrelated-histories
本地代码覆盖远程分支代码:$git push -f --set-upstream origin 分支名

4TortoiseGit的使用

4.1安装文件
4.1.1下载地址
官网:https://tortoisegit.org/download/

开源地址:https://github.com/TortoiseGit/TortoiseGit
在这里插入图片描述

4.1.2公司内部地址

4.2安装及配置

4.2.1安装
※按要求默认安装即可。
4.2.2 配置
A 鼠标右键选中“设置”,如图:
在这里插入图片描述

B 设置语言
在这里插入图片描述

C 设置用户名和邮箱
在这里插入图片描述

D 通过以下方式,找到key:
1)选中“Open Git GUI here”

在这里插入图片描述

2)选中 help->Show SSH Key
在这里插入图片描述

  1. 点击“Copy to Clipboard”

4.3克隆代码
1)右键选中“克隆”
在这里插入图片描述

2)输入地址

在这里插入图片描述

4.4比较差异
4.4.1比较目录中所有文件的差异
在目录中,点鼠标右键,TortoiseGit->比较差异,从而知道当前目录下,哪些文件做了修改,见下图:

在这里插入图片描述
在这里插入图片描述

4.4.2比较单个文件的差异
选中要对比的文件,点鼠标右键,TortoiseGit->比较差异,从而知道文件哪里做了修改,见下图:

在这里插入图片描述

在这里插入图片描述

4.5提交文件
选中要提交的文件,点鼠标右键,TortoiseGit->提交,输入日志信息,并选择作者,日期信息,提交,见下图:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.6还原文件
如果修改代码有错,需要还原,那么则选中文件,点鼠标右键,TortoiseGit->还原,则回退到上一版本,见下图:

在这里插入图片描述

4.7追溯历史更改
如果想查看以往变动记录,那么则选中文件,点鼠标右键,TortoiseGit->追溯,见下图:
在这里插入图片描述

在这里插入图片描述

4.8其他用法
参见6.3 TortoiseGit 详细教程
5Git管理流程与方法
5.1管理流程图
在这里插入图片描述

5.2管理代码的说明

5.3VIVADO工程代码
5.3.1工程文件内容
(1)工程文件: .xpr
(2)代码文件:srcs目录 /srcs/
.xdc (约束文件)
/srcs/.v (工程文件)
/srcs/
.vh (头文件)
/srcs/.hdl (设计文件)
/srcs/
.bd (模块设计文件)
/srcs/*.xci (ip核文件)
.sdk SDK 环境代码, ZYNQ 设计中关于 PS 端的代码
.sim 仿真文件
(3) *.tcl 控制台脚本文件
(4) .bat (.sh)
5.3.2上传内容
Git管理 .sdk、 .srcs 、.xpr 三个文件即可。

5.4Java工程代码
5.4.1工程文件内容
工程文件夹包含
(1)批处理文件 .bat
(2)源代码文件 .java
(3)Maven文件:
.pom文件
(4)数据库脚本文件:
.sql
5.4.2Git管理内容
.java 、.pom、*.sql

5.5Vue 工程代码
5.5.1工程文件内容

工程文件夹包含:
.json、.html、.css 、 .js 、图片文件、.vue文件
5.5.2 Git管理内容
.json、html、.css 和 .js 、vue文件

5.6React工程代码
5.6.1工程文件内容
工程文件夹包含:
.json、.html、.css 、 .js 、各类图片文件、.jsx、.js.tsx

5.6.2Git管理内容
.json、.html、.css 、 .js 、各类图片文件、.jsx、.js.tsx

6 附录
6.1极客Gitlab教程

网址:
https://geek-docs.com/git/gitlab-tutorials/t_lib_100_gitlab_index.html

6.2官网Git文档指南
网址:https://git-scm.com/book/zh/v2

在这里插入图片描述

6.3TortoiseGit 详细教程
https://zhuanlan.zhihu.com/p/381851207

6.3.1安装包公司内部地址
安装程序:

语言包

6.4Git可视化工具-idea插件使用
https://blog.csdn.net/fox9916/article/details/127912690

6.5Vivado 工程文件内容说明
https://blog.csdn.net/m0_37779673/article/details/120587541

6.6Git拉取某个分支代码步骤
https://m.php.cn/faq/544731.html

6.7Git如何建本地分支
https://m.php.cn/faq/544634.html

6.8Git 如何在远程分支上新建分支
https://blog.csdn.net/weixin_61028990/article/details/128778233

6.9分支代码合并到master分支
要将一个分支的代码合并到master分支,可以按照以下步骤操作:

a.切换到master分支:git checkout master

$git checkout master

b. 拉取最新的代码:git pull

$git pull

c. 合并分支代码到master分支:git merge 分支名

$git merge develop

d. 如果有冲突需要解决冲突,可以使用git status查看冲突文件,手动修改冲突文件,然后使用git add将修改后的文件添加到暂存区,最后使用git commit提交合并结果。

e. 如果合并成功,可以使用git push将代码推送到远程仓库。

$git push origin master

注意:在合并分支代码到master分支之前,需要确保分支代码已经经过测试,没有问题。否则合并后可能会引入新的问题。

6.10Git下载指定历史版本的代码
(详细步骤)
https://blog.csdn.net/zhangbinlong/article/details/126106145

6.11如何撤销 Git 添加命令?
*注:参考文件:
https://cloud.tencent.com/developer/article/2297015?areaSource=102001.12&traceId=0TwFHgNbFmLMdS7pp1ukm

在使用 Git 进行开发时,你可能会意外地添加了一些文件或目录,但尚未提交这些更改。幸运的是,Git 提供了一些命令来撤销添加操作,以便你可以还原到未添加文件的状态。本文将介绍如何在 Git 中撤销添加命令,并提供详细的步骤。

※步骤
以下是在 Git 中撤销添加命令的详细步骤:

步骤1:查看 Git 仓库状态
在撤销 Git 添加命令之前,首先需要查看 Git 仓库的当前状态。执行以下命令来查看仓库状态:

$git status  

这将显示出已添加和未添加的文件。

步骤2:撤销所有添加的文件
如果你意外地添加了多个文件或目录,想要撤销所有的添加操作,可以使用以下命令:

$git restore –staged .  

这将从暂存区(即 Git 的索引)中移除所有添加的文件。

步骤3:撤销单个文件的添加
如果只想撤销某个特定文件的添加,可以使用以下命令:

$git restore –staged <file>  

将 替换为你要撤销添加的文件路径。

步骤4:验证撤销结果
在执行撤销添加命令后,可以再次使用 git status 命令来验证撤销结果。应该会显示出之前添加的文件处于未添加状态。

步骤5:撤销文件修改
如果不仅要撤销文件的添加,还要撤销对文件的修改,可以使用以下命令:

$git restore <file>  

这将撤销对文件所做的所有修改,并恢复到最近的提交状态。

步骤6:撤销所有添加和修改
如果你想完全撤销所有的添加和修改,并返回到最近的提交状态,可以使用以下命令:

$git restore .  

这将撤销所有的添加和修改,并将工作目录恢复到最近的提交状态。

步骤7:慎用撤销命令
在使用撤销命令时,请确保你了解其影响,并且仔细考虑后果。撤销命令会更改你的工作目录和暂存区的状态,因此在使用之前请确保你对操作的影响有清晰的理解。

步骤8:避免添加文件的误操作
除了使用撤销命令之外,还有一些方法可以帮助你避免意外添加文件:

使用 .gitignore 文件:在项目的根目录下创建一个名为 .gitignore 的文件,并在其中列出你不希望 Git 跟踪的文件和目录。这样可以确保这些文件不会被意外添加到仓库中。
定期检查 Git 状态:在执行任何 Git 命令之前,始终检查 Git 仓库的状态。这样可以确保你明确知道哪些文件已添加和未添加。
使用交互式添加:在使用 git add 命令时,使用 -p 或 --patch 选项进行交互式添加。这将让你选择性地添加文件的部分内容,而不是一次性添加整个文件。

结论
撤销 Git 添加命令是一个重要的操作,可以帮助你还原到未添加文件的状态,避免不必要的提交。通过使用 git restore 命令,你可以撤销所有的添加、撤销单个文件的添加,甚至可以撤销文件的修改。但是请谨慎使用撤销命令,并始终了解其影响。此外,为了避免意外添加文件,你可以使用 .gitignore 文件来排除不需要跟踪的文件,并定期检查 Git 仓库的状态。使用这些技巧和步骤,你可以更好地管理和控制你的 Git 仓库中的文件变更。

6.12Git回滚版本
1.使用命令或者在gitlab页面上查看需要回退到的版本号commitID

$git log 

(退出log方式:q)

日志显示如下:

commit bafbef5c3xxxxxxxxxxxxxxxxxxxxx (HEAD -> master, origin/master, origin/HEAD) 
Merge: 249a5c9 ce44efe
Author: san.zhang <san.zhang@xxx.com>
Date:   Mon Jul 17 17:30:04 2023 +0800
 
    Merge remote-tracking branch 'origin/master' into master
 
commit 249a5c9xxxxxxxxxxxxxxxxxxxxx
Date:   Mon Jul 17 17:29:45 2023 +0800
    移除fastjson

commit ce44efxxxxxxxxxxxxxxxxxxxxxx (xxxxx)
Merge: 3d054be c6fdcc9
Author: si.li <si.li@xxx.com>

回退到commitID为ce44efxxxxxxxxxxxxxxxxxxxxxx 的版本上,操作如下:

$git reset –hard ce44ef********** 

其中需要注意下不同参数的区别

–soft: 使用git reset --soft ,HEAD(当前分支)将被移动到指定的提交(commit),暂存区(Index)和工作目录不会被改变。这意味着在这个commit之后的所有提交都会保留在暂存区中,这样你就可以重新提交它们,或者根据需要修改它们。

–mixed: 这是git reset的默认模式,你可以使用git reset --mixed 或者简写为git reset 。在这种模式下,HEAD被移动到指定的提交,暂存区(Index)也会被重置,但工作目录不会被改变。这意味着在这个commit之后的所有提交都会从暂存区中移除,但它们仍然保留在工作目录中。你可以根据需要重新暂存和提交这些更改。

–hard: 使用git reset --hard ,HEAD被移动到指定的提交,暂存区(Index)和工作目录都会被重置。这意味着在这个commit之后的所有提交都将完全丢失,工作目录将恢复到这个commit的状态。这是一个危险的操作,因为它会永久删除未提交的更改,所以在执行此操作之前,请确保你没有未保存的工作。

总结:
–soft:仅移动HEAD,保留暂存区和工作目录。
–mixed(默认):移动HEAD,重置暂存区,保留工作目录。
–hard:移动HEAD,重置暂存区和工作目录,可能导致未提交的更改丢失。。

然后进行强推操作,将远程master分支回退到历史版本

$git push -f origin master

这时候显示错误:

hello@kusha7401 MINGW64 /d/git_vivado_code/CMMS/doc (master)
$ git push -f origin master
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To http://192.168.188.48/szyt_fpga/CMMS.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://192.168.188.48/szyt_fpga/CMMS.git'

一般查找后发现,是因为gitlab中对master设置了保护,需要先解除保护,再推,推完后再加上保护.

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

点击按钮“unprotect”,取消保护,再进行推送,发现正常,推送后再加上保护即可。

注:参考文件
https://blog.csdn.net/zzs1067632338/article/details/131781475 https://blog.csdn.net/zhaohongfei_358/article/details/127729172

6.13撤销commit
https://www.python100.com/html/WK3MW3W340Q7.html

6.14Git删除文件

$git rm *.*
$git add -u
$git commit -m ‘delete discarded files’
$git push

注: 参见:git本地仓库 删除文件
https://blog.csdn.net/david___/article/details/53761050

6.15git stash命令用法
*暂存代码

$ git stash save 'master_index_1101'

*下载最新代码

$git pull

*查看暂存代码

$git stash list

*将暂存代码下载到本地

$git stash pop

注:参见git stash命令用法详解
https://blog.csdn.net/weixin_44799217/article/details/128277154

6.16获取最近一次提交的作者信息
使用git log命令获取最近一次提交的作者信息:

git log -1 --pretty=“%an <%ae>”

git log -1

这将返回最近一次提交的作者名和邮箱。

6.17当commit后,发现之前有人提交,不能push如何处理?
(https://blog.csdn.net/weixin_46713695/article/details/126745646)
当commit后,进行push时,发现有人之前提交,导致不能push,如下图:
在这里插入图片描述

原因分析:
是由于本地和远程仓库两者代码文件不同步,因此需要先pull,进行合并然后再进行push
解决方法:
1、先使用pull命令:

git pull --rebase origin master(分支名,或develop)

2、再使用push命令

git push -u origin master

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2138734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文心智能体应用:美国旅游助手的诞生

创造灵感 在如今的数字化时代&#xff0c;旅行体验越来越依赖于智能技术的辅助。从机票预订到行程安排&#xff0c;再到当地美食推荐&#xff0c;智能助手在旅行中的作用愈发重要。尤其在美国这样一个广袤且多样化的国家&#xff0c;拥有一个智能旅行助手能够极大地提升游客的…

地震勘探原理视频总结(1-6)

目录 一、为什么要学好这门课&#xff1f; 1.1 为什么要学这门课&#xff08;为啥学&#xff09;&#xff1f; 1.2 课程包括哪些主要内容&#xff08;学什么&#xff09;&#xff1f; 1.3 如何学好这门课&#xff08;怎么学&#xff09;&#xff1f; 二、石油的生成与聚集…

网络安全有救了,37所高校新增网络安全空间安全专业

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

Google提出 Speculative RAG:通过草稿机制增强检索增强生成

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【自动化测试】自动化测试的价值和误区以及如何高效实用地落地自动化测试

引言 自动化并不仅仅是机器“点点点”的操作。虽然从表面上看&#xff0c;自动化测试确实涉及到了机器按照预设的脚本进行一系列的操作&#xff0c;但它的内涵远比这要丰富得多 高效实用地落地自动化测试&#xff0c;需要从策略规划、工具选择、团队协作、持续改进等多个方面进…

黑神话悟空:上架27天后,玩家群体分析

按9月13日的统计&#xff0c;仅在steam平台上&#xff0c;售出1900w份&#xff0c;约65亿人民币。 &#xff08;游戏于2024年8月20日发售&#xff09; 由于黑神话的关卡是线性的&#xff0c;即必须一关打过才能打下一关&#xff0c;和游戏的成就系统对应&#xff0c;所以可以…

C++:入门基础

一.C参考文档 https://legacy.cplusplus.com/reference/ https://zh.cppreference.com/w/cpp https://en.cppreference.com/w/ 二.C的第一个程序 #include <iostream> using namespace std;int main() {cout << "Hello world!" << en…

Node.js的学习2——内置模块(一)

Node.js的内置模块 module模块global全局变量Console控制台Errors错误模块捕获异常异步方法通过回调函数传递异常事件触发器对象异常捕获 module模块 使用module模块可以查看Node.js所有的内置模块、在所有模块中都可以使用的全局变量、程序在运行过程中可能会出现的四类错误。…

Git项目管理工具

分布式版本控制系统

快速生成服务器响应json-server的安装和使用

json-server介绍地址:https://www.geeksforgeeks.org/json-server-setup-and-introduction/ 1.json-server是什么? 基于自定义的json文件,快速生成服务端响应,可用于前端调试接口 2.安装和卸载json-server 2.1 安装: 使用npm命令: npm install -g json-server 2.2 卸载 npm …

“药乡”怀化,按下产业向海“加速键”

怀化&#xff0c;这座被火车拖来的城市&#xff0c;拥有什么独特的产业优势吗&#xff1f; 很多人不知道的是&#xff0c;怀化在整个医药领域可是大名鼎鼎的“中国道地药材之乡”&#xff0c;中药材资源蕴藏量居湖南省第一。尤其是怀化靖州&#xff0c;这里年集散茯苓11万吨&a…

Qt入门教程---项目创建全过程内存泄漏解释

目录 1.创建项目的说明 2.代码介绍说明 2.1文件分类介绍 2.2sources文件 2.3widget.ui文件 2.4widget.h文件 2.5中间文件 2.6.pro文件 3.打印输出hello world 3.1图形化界面生成控件 3.2代码生成控件 3.3打印结果展示 4.对于内存泄露的讨论 4.1对象树 4.2与栈开辟…

HTML贪吃蛇游戏

文章目录 贪吃蛇游戏 运行效果代码 贪吃蛇游戏 贪吃蛇是一款经典的休闲益智游戏。本文将通过HTML5和JavaScript详细解析如何实现一个简易版的贪吃蛇游戏。游戏的主要逻辑包括蛇的移动、碰撞检测、食物生成等功能。以下是游戏的完整代码及注释解析。&#xff08;纯属好玩&#…

文心一言 VS 讯飞星火 VS chatgpt (347)-- 算法导论23.2 6题

六、假定一个图中所有的边权重均匀分布在半开区间[0,1)内。Prim算法和Kruskal算法哪一个可以运行得更快&#xff1f;如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在比较Prim算法和Kruskal算法在特定条件下的性能时&#xff0c;我们需要考虑几个因素&#xff…

【大模型专栏—进阶篇】智能对话全总结

大模型专栏介绍 &#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文为大模型专栏子篇&#xff0c;大模型专栏将持续更新&#xff0c;主要讲解大模型从入门到实战打怪升级。如有兴趣&#xff0c;欢迎您的阅读。 &#x1f4…

C语言 | Leetcode C语言题解之第400题第N位数字

题目&#xff1a; 题解&#xff1a; //解题思路&#xff1a;计算当前已经经过了多少位&#xff0c;当第一次超过n时&#xff0c;开始获取第n位 int findNthDigit(int n){int i, j, tem_1 10, tem_2 1, res; long count 0; /*i和j用于循环&#xff0c;count用…

Spring Boot集成Akka Cluster快速入门Demo

1.什么是Akka Cluster&#xff1f; Akka Cluster将多个JVM连接整合在一起&#xff0c;实现消息地址的透明化和统一化使用管理&#xff0c;集成一体化的消息驱动系统。最终目的是将一个大型程序分割成若干子程序&#xff0c;部署到很多JVM上去实现程序的分布式并行运算&#xf…

【计网】从零开始使用UDP进行socket编程 --- 服务端业务实现

在我们每个人都曾经历过“沮丧”时刻里&#xff0c; 如果我们不能对别人说有益的好话&#xff0c; 那我们最好还是什么也别说。 --- 卡耐基 《人性的弱点》--- 从零开始使用UDP进行socket编程 1 前情提要2 单词翻译2.1 业务需求2.2 设计字典类2.3 服务端与客户端逻辑2.4 运…

SQLite安装(含安装包)

安装包&#xff1a; 通过百度网盘分享的文件&#xff1a;sqlite-dll-win-x64-3460100.zip 链接&#xff1a;https://pan.baidu.com/s/1852coiq51QcNkeaHdu1Oyg 提取码&#xff1a;v2y6 解压 设置环境变量 验证安装成功 SQLite设置完成

ros学习笔记.4 Path Planning Part 2 (避障)

避障是如何工作的什么是局部规划器&#xff1f;什么是局部成本图&#xff1f;路径规划回顾如何使用动态重新配置和其他 Rviz 工具 局部规划器 一旦全局规划器计算出要遵循的路径&#xff0c;该路径就会发送给局部规划器。然后&#xff0c;局部规划器将执行全局规划的每个部分&…