1 概述

1.1 背景介绍

Git 是一个快速、可扩展的分布式版本控制系统,它拥有异常丰富的命令集,可以提供高级操作和对内部的完全访问。 Git具有版本控制、分支管理、远程仓库、代码合并、代码回滚、代码比较和代码托管平台等七个主要功能。Git官网:https://git-scm.com。

GitCode 是 CSDN 为开发者提供的开源项目创新服务平台,秉承“创新、开放、协作、共享”的开源价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新时代开发者培养的开源创新生态!支持公有云使用、私有化部署以及软硬一体化私有部署。

通过实际操作,让大家深入了解如何从零开始使用GitCode完成项目的搭建,以及加固Git的命令使用,加固设置自己的项目开发环境。

1.2 适用对象

  • 企业
  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计30分钟。

1.4 案例流程

图片2.png

说明:

① 用户申请并登录云主机;
② 用户注册GitCode并下载项目到云主机;
③ 在云主机上使用git命令来构建项目环境。

1.5 资源总览

本案例预计花费总计0元。

资源名称 规格 单价(元) 时长(分钟)
开发者空间-云主机 4vCPUs | 8GB ARM Ubuntu Ubuntu 24.04 Server 定制版 免费 30
GitCode服务 免费 免费 30

体验完整案例请点这里👉️👉️👉️Git使用指南与GitCode最佳实践

2 GitCode基础使用

2.1 GitCode注册

本案例中,使用华为云GitCode作为云上代码管理平台。登录华为云云主机,在云主机桌面点击GitCode服务图标,

f157c2d03e25fc026ad07e0c0b981b4b.png
点击右上角的“注册”按钮,

a46670a5c659e1931306f9d4302b5771.png

进入GitCode注册页面,根据提示填写注册信息,然后点击“确认”,

5bc80ec6b3b1babd52401dd4e8abff3e.png

登录GitCode首页。

2.2 项目创建

在GitCode首页点击右上角的“新建”按钮,下拉选择“新建项目”,
fe211b9c9342d2ef7bd6a034a3825c68.png

跳转到新建项目页面,根据提示填写项目基本信息,公开项目需要确认公开项目须知,否则请选择私密项目,然后点击“创建项目”按钮,

32262bb0d8e5f704cae691f7d6fb8a14.png

即完成GitCode项目的创建。

96bf8f1e863be8ff5107397b862c4922.png

3 云主机上Git常用基础命令使用

3.1 Git工具安装检查

返回云主机桌面,点击鼠标右键选择“Open Terminal Here”,
938f10645eecf569d3a9a3da36eb39d8.png

打开云主机的控制台,云主机默认会为用户安装Git工具,可以使用以下命令查看Git版本,

git --version

c9c1efd883cb08e49bb8ff413f00dfdf.png

(如若输入该命令没有显示Git版本,请输入命令“sudo apt-get install git”进行安装)

3.2 git config 全局设置

在Git初始化时可以给Git配置用户名和邮箱信息,

git config --global user.name "name"
git config --global user.email "xxxx@qq.com"

其中user.name后面是我们的用户名称,即我们注册GitCode时的用户名,user.email为我们常用的邮箱。–global 全局信息,所有仓库都生效。不加只对当前仓库生效。–system系统配置,所有用户都生效。很少使用。

这些信息都会记录在~/.gitconfig文件中,设置成功后,可以通过以下命令进行查看。

git config --list

e954fb2347da557568a690ffed975758.png

3.3 git clone 创建仓库

接下来进行代码仓库创建,首先在控制台中输入,

mkdir project
cd project

在桌面创建project文件夹用来存放我们的项目代码,然后返回GitCode,在我们创建的项目里点击“clone”按钮,获取仓库下载命令,
d9f3beaab2b99867a6e52c3f603ed1d7.png

然后在控制台中执行复制的命令:

git clone https://gitcode.com/XXX/my_first_project.git

进行仓库的克隆下载。

3.4 git init 仓库初始化

在控制台中输入,

cd my_first_project

进入项目文件夹,然后输入,

git init

将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中。

39d8f83af0493f626b8acc57ebb77fbc.png

3.5 git add/remove 文件添加/删除

接下来我们进行在本地仓库中修改项目代码然后推送代码到远程代码仓库。首先在控制台中执行,

touch test.md

创建一个测试文件,模拟将该测试文件传到远程仓库,然后执行

git add test.md

将文件提交到暂存区,查看缓存区的文件可以通过命令

git diff --cached --name-only

来查看,如果想将所有的更改都提交到暂存区,可以执行

git add .

如果想要文件从缓存区中删除,可以通过执行

git rm --cached file

例如将test.md删除,可以执行

git rm --cached test.md

命令来完成。需要注意的是,–cached仅仅将文件从缓存区中删除,如果使用git rm -f 则会强制将该文件从本地和仓库缓存中都删除,请谨慎使用。

c7c449db74cc8d178b51349c40ac76ea.png

3.6 git commit 代码提交

所有修改的文件都提交到缓存区后,然后执行

git commit -m "my first commit"

将暂存区的内容提交到当前Git分支的仓库区,-m后面为本次的提交信息 该命令默认时将缓存区所有的文件都提交到仓库区,可以通过

git status

来查看本地分支当前的状态,如果像提交个别文件,可以通过执行

git commit file -m "my first commit"

来将指定的file文件传到仓库区。

如果多次提交文件内容不变仅想修改提交信息,可以通过执行

git commit --amend -m "update latest message"

相对的,如果想修改最新的提交而不修改提交信息,可通过执行

git commit --amend --no-edit

来实现,另外我们可以通过执行

git commit -am “update message”

来实现将add和commit步骤合并为一步,其中git commit 是将暂存区的内容提交到本地仓库的命令。

-a 选项表示将所有已修改的文件添加到暂存区,然后进行提交,它可以避免你手动使用 git add 逐个添加修改的文件。但 -a 选项只会将已跟踪的文件添加到暂存区,对于未跟踪的文件不起作用。

-m “update message” 是为本次提交添加的提交信息,这里的提交信息是 “update message”。。

ab7b0bccfcbd532e027923a71286e5e6.png

3.7 git push 代码推送

执行推动前,如果没有添加远程仓库,需要执行

git remote add origin https://gitcode.com/XXX/my_first_project.git

先添加远程仓库,然后再执行,本文档本地代码是基于GitCode仓库拉取下来所以无需添加,直接执行

git push -u

即可完成将本地代码分支上传到远程仓库,-u用来关联分支,关联之后如果再推送即可直接使用

git push

即可进行分支远程推送,也可以通过执行

git push -u origin master

来实现推送指定的分支到远程仓库。

eacc09841a760cc225906e93694f7bc2.png
登录GitCode即可查看到本地文件已上传。
dba8a3b8cff8b0327d4ea105dd6feeb7.png

4 GitCode进阶功能使用

4.1 仓库安全设置

上面案例中,我们创建了的是一个最基本的公开的项目,任何人都可以进行下载上传,如果我们想对我们自己的仓库做安全设置,防止其他未授权的用户修改代码,我们可以通过GitCode提供的一些列安全设置对仓库进行安全加固。

首先返回云主机,在项目详情页面点击“项目设置”标签,
d8fba2353dc28ede537deb1f2f0b882f.png

在项目设置的项目可见性中,将项目设置成私有,然后保存,

设置成私有后,项目拉取,提交均需要使用账号密码来做权限校验了,
f16054d1fb065d86750fa0a007f4ca4f.png

项目账号密码获取,首先点击右上角的头像,下拉菜单中点击“个人设置”,
6b6786d28d695d03b76da59afa42457f.png

跳转到个人设置详细页面,

7232d355a73601e1462798acd97a9d52.png

左上角为我们项目的Username,点击左侧菜单的“访问令牌”,然后点击右上角的“新建访问令牌”来创建我们的Password,输入名称之后,点击“创建访问令牌”,

16287a627b5d91f16d5a270ff6b245f7.png

创建成功后,复制你的个人访问令牌,即我们的Password。

919fb0092db7310c7fb3238108c40d8d.png

返回云主机,输入后即可通过权限认证下载项目代码。

468193ad4250a3d3ad031578cf14c76f.png

包括后续的代码更新提交时都需要输入用户名密码来进行权限的校验。

4.2 仓库提交设置

如果对项目提交文件有要求,我们可以在“项目设置”的提交设置中进行提交规则的配置,

9fdad6ae45a36468d884c6309ba0c5e7.png

5 Git命令补充

5.1 git mv 移动或重命名 Git 存储库文件

git mv命令移动并重命名 Git 存储库文件。来自这些移动和重命名操作的更改也被暂存以提交到存储库。要重命名项目文件,可通过执行

git mv old-name.txt new-name.txt

要将项目文件移动到不同的目录,可通过执行

git mv file3.txt beta/file3.txt

上面的 git mv 操作可以概括为三个子操作:

mv file3.txt beta/file3.txt
git add beta/file3.txt
rm file3.txt

5.2 git branch 列出、创建或删除分支

git branch命令在列出、创建和删除 Git 存储库项目分支时很有用。在 git 存储库中,分支是一条单独的开发线,多个开发人员可以同时为一个项目做出贡献,而不会影响开发主线(主分支)的代码库。

要列出所有存储库项目分支,通过执行

git branch

要创建一个新分支,通过执行

git branch \<new-branch-name\>

参考上面的例子,创建一个新的分支,可以在不干扰主分支上的主要代码库的情况下,独立地处理新的项目特性。

请注意,上述新分支的创建是在当前提交上进行的。

在单独的分支上处理新的项目功能并成功将它们合并到主分支或主分支上后,您将不再需要单独的分支并可能考虑将其删除。

要删除现有分支,通过执行

git branch -d \<branch-name\>

为避免错误,请确保在删除分支之前已离开该分支。例如,如果您仍在一个名为newest的分支上并需要删除它,请先离开该分支并移动到另一个现有分支或主分支上,然后再删除它。

5.3 git status 显示存储库和暂存区的状态

git status命令验证在下一次提交中排队等待暂存的文件是否存在。它突出显示所有添加、修改和/或删除的文件及其绝对路径。

git status

显示 Git 存储库的状态,此命令对Git工作流程(第一步)至关重要,因为它显示存储库文件的当前状态(已修改和未跟踪)。

5.4 git diff – 跟踪文件中的更改

git diff命令在跟踪更改(在代码库中)方面非常有效,因为它显示了两个文件版本之间、提交之间、索引树和工作树之间以及 blob 对象之间的差异。此 Git 命令会突出显示添加、删除和修改的更改。

要展示未暂存但已修改的更改(工作树与索引树),通过执行

git diff

要展示暂存但未提交的更改,通过执行

git diff --staged

显示两个分支之间的差异。

如果要区分两个分支,通过执行

git diff Branch_1...Branch_2

要将分支与当前代码版本进行比较,按q退出。通过执行

git diff branch-name

比较已提交与未提交的文件,按q退出。

要区分已提交和未提交的文件状态,通过执行

git diff file-name

要区分当前版本并提交特定文件的当前版本,通过执行

git diff HEAD\~1 HEAD file-name

5.5 git log 显示提交历史

git log命令显示 git 存储库的历史记录。它为 git 用户提供了已实施的存储库更改的预览。此类更改包括提交更改、作者和日期。

对于当前活动分支的提交历史,通过执行

git log

来实现列出 Git 提交历史,按q退出。如果想按作者过滤日志信息,通过执行

git log --author=author_name

即可完成按作者过滤 Git 日志。

5.6 git checkout 在分支之间切换

大多数软件开发项目都涉及团队合作。在这种情况下,创建了几个特性和开发分支。当你想在分支之间成功切换时,可以通过git checkout来实现。

要切换到另一个现有分支并从当前目录预览它,通过执行

git checkout \<分支名称\>

切换到新分支。要创建并切换到新分支,通过执行

git checkout -b new-branch

在这里,首先创建分支new-branch,然后再切换到它。

如果想要恢复文件的先前版本比如要将名为file3.txt的文件恢复到存储库中当前提交的版本,我们通过执行

git checkout HEAD -- file3.txt

来实现。

5.7 git merge 合并 Git 分支

当在两个不同的分支上工作并需要合并它们时,请考虑使用git merge命令,这对于连接分支之间的开发历史(两个或多个)很有用。

首先需要像主分支一样签出到您的稳定或活动分支(如果还没有),然后合并开发分支。

git checkout \<active-master\>
git merge \<development-branch-name\>

分支间合并可通过执行

git merge -s ours branch1

这里,branch1与当前分支(例如 main)合并。但是,两个分支的更改不会合并。branch1的变化被丢弃,主分支的变化被保留。

当你想避免合并冲突时,可通过执行

git merge -s ours

来实现。但是请注意,此命令将永久丢弃指定的分支更改。

如果想不提交合并分支,通过执行

git merge --no-commit branch2

这里,branch2与当前分支合并,没有自动提交的选项。

5.8 git fetch 下载远程 Git 存储库

git fetch命令下载远程存储库的最新版本并更新此存储库的等效本地副本。它在本地存储检索到的引用、文件和提交,而不将它们与本地存储库合并。通过执行

git fetch \<alias\>

例如,git fetch origin,将origin远程使用最新的存储库版本更新此存储库的等效本地副本。克隆存储库时,会创建一个名为原始远程的默认远程。

5.9 git rebase 更改一系列提交

git rebase命令将 branchA 的更改集成到branchB中。它采用当前分支的本地提交并在更新的代码版本之上重播它们,而不是采用“git merge”命令方法来创建新提交并合并更改。

通过执行

git rebase branch1

在这里,当前分支的提交在branch1 的更新代码版本之上重新应用。需要注意的是只有在没有发生分支冲突时,rebase操作才会完成。否则,需要先解决冲突。

作为git merge命令的替代方法,git rebase创建了一个更易于理解和解释的线性提交历史记录。

5.10 git revert 还原现有提交

当需要恢复现有/以前的提交时,可以通过执行git revert来实现,它可以撤消以前/现有的 Git 存储库更改。

具体命令如下,

git revert \<commit_hash\>

使用此命令需要执行几个步骤。

第一步是检索commit_hash,它是所有已实现提交的唯一标识符。

要获取提交哈希,需要运行以下任一命令:

git log -1 --format=format:"%H"

或者

git rev-parse HEAD

来获取提交哈希。

之后,我们应该通过执行git revert <commit_hash>命令来撤消 Git 提交。

5.11 git reset 还原 Git 存储库提交

要取消暂存特定项目文件并保留当前工作目录更改,通过执行

git reset \<file_name\>

要清除暂存区并根据特定提交重写工作树,可通过执行

git reset --hard \<commit_hash\>

–hard选项丢弃提交并修改工作目录。要放弃提交而不修改工作目录,请使用该–mixed选项。

要既不丢弃提交也不修改工作目录,请使用该–soft选项。

要获取commit_hash,通过执行

git log -1 --format=format:"%H"

或者

git rev-parse HEAD

撤消 Git 存储库提交的另一种方法是使用

git reset HEAD\~1

在上面的命令中,分支指针被移动到当前提交后面的提交,便于删除最近的提交。

5.12 git stash 在本地保存未提交的更改

git stash命令临时搁置项目更改,如跟踪和修改的文件,而用户在返回以重新应用这些项目更改之前处理其他内容(例如切换分支)。这些临时保存的更改不会提交 ( git commit )。

要保存已修改和暂存的项目更改,通过执行

git stash

要使用消息存储项目,可按如下方式使用保存选项,

git stash save "saved changes for branch1"

以上改动是在当前分支中进行的,如果想列出隐藏文件更改,通过执行

git stash list

在本地保存未提交的更改,要在使用 stash 返回分支后重新应用保存的 stash,通过执行

git stash apply

来实现。

5.13 git reflog 跟踪分支的变化

git reflog命令在处理参考日志时很有用。它在显示 Git 存储库中的更改历史记录时引用本地分支。此命令的输出需要提交哈希、执行的操作和与更改相关的分支名称。

对于最近的还原、拉取、提交等的 HEAD reflog,通过执行

git reflog

对于所有引用(refs)的 reflog,通过执行

git reflog show --all

来显示所有 Git 存储库中的更改。对于特定分支的 reflog,例如 main,通过执行

git reflog show main

来实现。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐