前言
本篇文章给出了Git入门技能树中部分的练习题解析,包括分支管理,Git标签,在Mac和Windows上使用Git+VSCode的步骤。强调了git cherry-pick不直接支持从标签中选择提交,git tag -d只能删除本地标签,Mac系统的终端可以安装Homebrew并使用Homebrew安装git。在VSCode中,可以通过命令行或终端直接指定目录,也可以通过拖拽文件夹到VSCode界面来打开目标文件夹。提交变动到Git仅将变更保存在本地仓库,要将这些变更推送到远程仓库,需要执行推送(push)操作。
1 Git简介
题目1:
版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。
下列哪个不是版本控制系统的正确使用方式?
A.管理项目源代码和项目文本文档(特别是MarkDown文件)
B.管理软件项目,使用版本控制系统来管理软件项目是一个明智的选择。
C.管理文档项目,版本控制系统非常适合用来管理文档项目。
D.当做网盘使用,版本控制系统就是用来做网盘的,特别适合存放大量的二进制文件。
答案解析: D.当做网盘使用,版本控制系统就是用来做网盘的,特别适合存放大量的二进制文件。
版本控制系统主要设计用于跟踪文本文件的变化,并提供协作和版本管理的功能。虽然版本控制系统可以管理任何类型的文件,但它并不是专门设计用于替代传统的文件存储和共享方式,如网盘。版本控制系统对于文本文件的变更记录和合并功能更为强大,而对于大量的二进制文件,如图像、视频等,可能会占用更多的存储空间,并且版本比较和合并可能不如对文本文件那么有效。因此,将版本控制系统当做简单的网盘并不是其正确的使用方式。
题目2:
你知道 Git 属于哪种版本控制系统吗?
Git是一款免费、开源的分布式 版本控制系统,用于敏捷高效地处理任何或小或大的项目。
以下哪个是 Git 版本控制系统的类型?
A.本地版本控制系统B.集中式版本控制系统
C.分布式集中控制系统
D.云端版本控制系统
答案解析: C.分布式集中控制系统
Git属于分布式版本控制系统,因此正确的选项是:C.分布式集中控制系统
题目3:
Git简介
Git是一款免费、开源的分布式 版本控制系统,用于敏捷高效地处理任何或小或大的项目。
以下哪个不属于 Git 的优点?
A.免费且开源,Git是一款免费、开源的分布式 版本控制系统。
B.分布式集中控制系统,Git是一款免费、开源的分布式 版本控制系统。
C.开发者有完整的克隆代码仓,其中包含所有变更历史,Git是分布式版本控制系统,每个开发者都拥有完整的仓库及历史记录
D.开发者需要连接到服务器才能查看代码变更历史
答案解析: D.开发者需要连接到服务器才能查看代码变更历史
Git是一款分布式版本控制系统,每个开发者可以在本地拥有完整的仓库及历史记录,不需要连接到服务器就能查看代码变更历史。所以,D选项是描述 Git 优点的错误陈述。
2 Git安装
题目1:
查看 Git 用户名和邮件
Git 安装完之后,通常第一件事就是设置你的用户名和邮件地址。当你配置用户名和邮件地址后,执行git config --list命令时,通常不会看到以下哪个信息?
A.user.name
B.user.email
C.user.name 和 user.email
D.color.ui
答案解析: D.color.ui
当你配置用户名和邮件地址后,执行git config --list
命令时,通常会看到 user.name
和 user.email
信息,但 color.ui
是用于配置 Git 输出中的颜色信息的,与用户名和邮件地址无直接关系。
题目2:
Git忽略文件.gitignore
把要忽略的文件名添加到 .gitignore 文件中,Git 在每次进行提交的时候就会自动忽略这些文件。 以下哪个不是 .gitignore 配置文件的正确写法?A…*,这个表示排除所有.开头的隐藏文件
B.!.gitignore,这个表示不排除.gitignore
C…class,这个表示排除所有.class文件
D.#app,这个表示 app 会被git执行
答案解析: D.#app,这个表示 app 会被git执行
在.gitignore
文件中,行首以井号(#)开头的内容被视为注释,而不是用于匹配要忽略的文件。因此,#app
不是正确的写法,它会被当作注释而不是忽略规则。
题目3:
Git 配置别名
配置 Git 别名的命令格式为 git config --global alais.XXXX ‘git-origin-commands’。 以下哪个是 git 别名的配置方法?A.git add -f App.class
B.git config --global alias.last 'log -1’
C.git config --global user.email li@csdn.net
D.git reset HEAD file
答案解析: B. git config --global alias.last 'log -1'
这命令会配置一个 Git 别名,使得可以通过 git last
来代替 git log -1
。
3 Git使用
题目1:
Git 仓库创建
以下哪个命令不能用于创建 git 仓库?A.git checkout 可直接将一个远程git仓库签出到本地。
B.git clone 可用于克隆已经存在的 git 仓库。
C.git init 可在已经存在的目录中创建一个新的 git 仓库。
D.git init 初始化一个空的新项目,然后通过 git remote add origin https://gitcode.net/example-project.git 和某个远程git仓库关联起来。
https://profile-avatar.csdnimg.cn/bdfd05e0bbe246e2966901c2a81b12bd_community_717.jpg!1
https://profile-avatar.csdnimg.cn/bdfd05e0bbe246e2966901c2a81b12bd_community_717.jpg!1
答案解析: A. git checkout 可直接将一个远程git仓库签出到本地。
git checkout
主要用于切换分支或恢复工作目录中的文件,而不是用于创建新的 Git 仓库或克隆远程仓库。创建新仓库可以使用 git init
,克隆远程仓库可以使用 git clone
。
题目2:
Git查看当前仓库状态变化
用git status命令可以看哪些内容?
- 上次提交的提交信息是什么
- 工作目录中有哪些文件还没有放进暂存区
- 暂存区中有哪些内容还没有提交到仓库
- 上次提交修改了哪些内容
答案解析:2 3
git status
命令可以展示以下信息:
- 工作目录中有哪些文件还没有放进暂存区
- 暂存区中有哪些内容还没有提交到仓库
题目3:
Git使用
以下对 git 分组命令作用描述不正确的是?A.添加文件命令: git add / git commit
B.这组用来创建仓库: git reset / git commit
C.恢复文件: git log / git reset
D.创建仓库命令: git init / git clone
答案解析: B.这组用来创建仓库: git reset / git commit
git reset
和 git commit
不是用来创建仓库的命令。git reset
通常用于撤销之前的提交或更改工作区和暂存区的状态,而 git commit
用于提交更改到仓库。创建仓库通常使用 git init
或 git clone
。
4 版本管理
题目1:
版本管理
上述那些是对 git 版本管理的描述不正确的是?
A.当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file
B.当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git delete
C.已经提交了不合适的修改到版本库时,想要撤销本次提交,可以用命令git reset --hard commit_id,不过前提是没有推送到远程库
D.当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,然后想直接丢弃工作区的修改时,用命令git checkout – file
答案解析: B.当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git delete
正确的命令应该是 git checkout -- file
,而不是 git delete
。 git checkout -- file
用于丢弃工作区中某个文件的修改。
5 分支管理
题目1:
分支管理
git cherry pick 是一个很强大的命令,他可以支持从某次/多次提交、多次连续的提交、分支以及其他远程仓库中进行代码的应用操作。以下哪个是 Cherry Pick 的错误用法
A.git cherry-pick 回答错误,该命令表示应用某个分支的最近一次提交到当前分支。
B.git cherry-pick 回答错误,该命令表示应用多个提交到当前分支。
C.git cherry-pick 该命令表示应用某个tag的提交到当前分支
D.git cherry-pick A^…B 该命令表示应用包含A的多次提交到当前分支。
答案解析: C. git cherry-pick <tag>
该命令表示应用某个tag的提交到当前分支。
Cherry-pick 不直接支持从标签(tag)中选择提交进行应用。 Cherry-pick 主要用于选择某个分支上的提交并将其应用到当前分支。
6 Git标签
题目1:
Git标签
以下描述错误的是?
A.命令git tag -d 可以同时删除一个本地标签和远程标签;
B.命令git push origin 可以推送一个本地标签;
C.命令git tag -a -m 'messages’可以创建一个带附注的标签
D.命令git tag -s -m 'messages’可以创建一个带 gpg 签名的标签
答案解析: A. 命令 git tag -d <tagname>
可以同时删除一个本地标签和远程标签;
这是错误的描述。git tag -d <tagname>
只能删除本地标签,要删除远程标签需要额外的步骤,如使用 git push origin --delete <tagname>
。
7 极简Git+VSCode(Mac)
题目1:
极简 Git+VSCode for Mac(1): 安装Git
第一步,请执行以操作打开Mac下的终端。
- 点按程序坞中的“启动台”图标 ,在搜索栏中键入“终端”,然后点按“终端”。
- 在“访达” 中,打开“/应用程序/实用工具”文件夹,然后连按“终端”。
- 打开的“终端”一般如下图所示:略
第二步,请执行以操作安装Mac下的包管理软件:
brew
。
简单介绍下brew
,brew
是一个包管理软件,用来安装、更新、卸载Mac上的其他工具包和库。
- 拷贝命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 在“终端”里粘贴
- 回车执行,等待brew安装完成,有时候网络慢会等的旧一点,必要时请开VPN。
安装过程如图所示:略
安装成功后,如图所示:略
第三步,请执行以操作,使用刚刚安装的
brew
来安装git
的最新版本。
- 拷贝命令:
brew install git
- 在“终端”里粘贴
- 回车执行,等待brew安装完git。
- 安装成功后,关闭终端并重现打开。
- 重新打开终端后,输入命令
git --version
并回车,查看git的最新版本号。开始安装如图所示:略
安装过程如图所示:略
安装成功如图所示:略
好了,经过上述操作,你已经成功在Mac系统上使用终端安装了git的最新版本。以下说法错误的是?
A.Mac下无法打开终端,Mac下的终端无法安装brew,Mac下的终端即使装了brew也不能使用brew安装git。
B.Mac的终端在“应用程序/实用工具”目录下。C.查看 git 版本号的命令是: git --version
D.使用 brew 安装 git 的命令是: brew install git
答案解析: A. Mac下无法打开终端,Mac下的终端无法安装brew,Mac下的终端即使装了brew也不能使用brew安装git。
这是错误的说法。Mac系统的终端可以打开,并且可以通过终端安装Homebrew(brew),然后使用Homebrew安装git。正确的说法是:
- B. Mac的终端在“应用程序/实用工具”目录下。
- C. 查看 git 版本号的命令是:
git --version
- D. 使用 brew 安装 git 的命令是:
brew install git
题目2:
极简 Git+VSCode for Mac(2): 在GitCode上创建一个Git仓库
第1步:登陆GitCode
- GitCode 是CSDN官方的Git代码仓库中心,网站地址是: https://gitcode.net
- GitCod 的登陆账号就是你的 CSDN 账号。
- 请使用 CSDN 账号登陆 GitCode
登陆前如图所示:
登陆后如图所示,如果在移动端安装了CSDN App,也可以通过 CSDN App 扫码登陆:
点击右上角的用户头像图标,在下拉菜单里点击“个人主页”,进入你的GitCode个人主页:
第2步:创建一个Git仓库
- 在GitCode个人主页右上角,点击+号按钮,在下拉菜单里点击“新建项目”
- 在新建项目页面里选择“创建空白项目”
- 在“创建空白项目”配置页面填写“项目名称”,“项目描述”,并勾选“使用自述文件初始化仓库”
- 最后点击“新建项目”,创建项目。
新建项目按钮如图所示:
选择创建空白项目如图所示:
“创建空白项目”配置页面填写“项目名称”,“项目描述”,并勾选“使用自述文件初始化仓库”。例如这里第一个项目起名叫做“hello_git”
点击“新建项目”后,如图所示:
第3步:使用Git命令克隆仓库到本机
- 在Git项目页面上拷贝仓库地址。
- 在本机适用 Git 命令将仓库克隆下来。
如图所示,点击仓库页面上的“克隆”按钮,选择“通过 HTTPS Clone 项目”的地址,并拷贝。这里示例的是:https://gitcode.net/huanhuilong/hello_git.git
如图所示,在本机打开“终端”,输入命令
pwd
,并回车,查看当前终端环境下的工作目录位置,下图显示当前目录在Mac系统个人用户目录下。如图所示,我们希望将终端环境的工作目录切换到桌面。输入命令
cd /Users/feilong/Desktop
,并回车,进入到桌面。再次输入pwd
并回车可以看到工作目录已经切换到了桌面。(注意这里的"feilong"应该替换为你自己的Mac系统用户名)如图所示,现在我们使用 Git 命令来克隆前一节创建的 Git 仓库。输入命令
git clone https://gitcode.net/huanhuilong/hello_git.git
,并回车。如图所示,Git 会将在GitCode上创建的仓库克隆到本机:
如图所示,此时Mac电脑的桌面上已经有了"hello_git"这个目录:
第4步:请回答问题:
通过上面的几个步骤,你已经学会了如何在 GitCode 上创建一个Git仓库,并克隆到本机,以下描述错误的是?
A.GitCode 上创建Git仓库时,可以选择创建空白项目,并配置“项目名称”,“项目描述”,创建时可以勾选“使用自述文件初始化仓库”以简化仓库数据初始化。
B.GitCode 上可以创建并托管一个Git仓库。C.GitCode 不用登陆就可以创建Git仓库,并且会自动将Git仓库从远程克隆到本机。
D.GitCode 可以使用 CSDN 账号登陆。
答案解析: C. GitCode 不用登陆就可以创建Git仓库,并且会自动将Git仓库从远程克隆到本机。
这是错误的描述。通常,在大多数代码托管平台,包括 GitCode,创建Git仓库时需要先登录账号。并且,创建仓库后你需要手动克隆到本机。
题目3:
极简 Git+VSCode for Mac(3): 安装VSCode并打开Git仓库
- 打开 https://code.visualstudio.com/ 下载 VSCode Mac版
- 解压 VSCode-darwin-universal.zip,得到 Visual Studio Code.app
- 将 Visual Studio Code.app 拖放到 Mac 的“应用程序”里
- 在应用程序里双击Visual Studio Code打开 VSCode
- 在VSCode 里按快捷键“command+shift+p”
- 在打开的输入框里输入 “shell command”
- 点击下拉菜单:“Shell Command: install ‘code’ command in PATH”
- 这样我们就在终端里安装了一个命令
code
,通过这个命令可以在终端里使用code {dir}
来使用VSCode打开指定目录。- 例如打开Mac的终端,输入
cd /Users/feilong/Desktop/hello_git
进入到上一节克隆到本机的Git仓库目录。- 然后执行命令:
code .
,并回车,就会使用VSCode打开 hello_git 仓库目录。- 当然,也可以在打开VSCode后,通过菜单“文件->打开文件夹”的方式打开 hello_git 目录。取决于你更喜欢命令行还是GUI操作。
如图所示,下载VSCode并安装:
如图所示,安装code命令到终端:
如图所示,在命令下使用
code .
命令打开仓库,这里的.
表示当前目录。如果所示,VSCode里打开了仓库目录,会提示是否信任目录,点击信任。
如图所示,VSCode打开了 hello_git 仓库,点击“README.md”文件并显示
经过上述操作,你已经学会安装VSCode并打开Git仓库了,以下描述错误的是?
A.VSCode 可以通过菜单 文件->打开文件夹 来打开目标文件夹。
B.Mac下安装VSCode实际上就是把VSCode程序拷贝到Mac访达里的的“应用程序”下即可。C.VSCode 只能通过菜单 文件->打开文件夹 来打开目标文件夹。
D.VSCode 可以通过注册
code
命令到终端,在终端里使用code {dir}
的方式打开目录。
答案解析: C. VSCode 只能通过菜单 文件->打开文件夹 来打开目标文件夹。
这是错误的描述。事实上,除了通过菜单,VSCode 还可以通过命令行或终端直接指定目录,也可以通过拖拽文件夹到 VSCode 界面来打开目标文件夹。所以选项 C 中的说法是不准确的。
题目4:
极简 Git+VSCode for Mac(4): 使用VSCode添加MarkDown文件到Git仓库
如图所示,在VSCode的左侧导航列表里,使用右键菜单新建一个目录:doc,并在doc目录下新建一个MarkDown文件
test.md
如图所示,在
test.md
里编辑几行MarkDown文本(MarkDown语法请学习本技能树第二章),并保存。如图所示,点击VSCode左侧的“Git面板按钮”,切换左侧导航栏。可以看到按钮上也显示里一个数字1,表示有一个文件发生变动。这里是新增了一个test.md文件。
如图所示,在“源代码管理”下的输入框里输入一个提交信息,这里输入“第一次提交”。
如图所示,在打勾图标的“提交”按钮,将文件的变动提交到Git本地。注意这里的提交只是将变动的文件提交到Git的本地索引系统里,还并不是提交到Git远程仓库。
如图所示,弹框会提示你还没有可提交到暂存更改。这是由于将文件变动提交到Git本地索引是需要两个步骤的,先将文件变动加入到暂存更改,再将暂存更改提交到Git本地索引。这里只需要点击「是」,VSCode会自动把两个步骤都做掉。
如图所示,提交后,VSCode左侧按钮栏的“Git面板按钮”上的数字消失了。我们希望将本地修改推送到GitCode的远程仓库。但是GitCode仓库上,仓库的其他成员可能也添加了文件,因此一般需要在推送前先拉取下变动到本机,如果拉取的过程中远程仓库的文件和本地的文件有冲突,则需要解决冲突,如何解决冲突不在本节考虑的范围。
如图所示,我们进一步点击下来菜单,点击“推送”按钮,将Git仓库的本地索引变动推送到GitCode上的远程仓库。
如图所示,Mac系统可能会提示你输入GitCode仓库的用户名密码,或者之前已经配置过,但是首次推送也会提示是否允许使用。根据提示做相应的授权即可。
如图所示,推送成功后,打开GitCode的 hello_git 仓库,可以看到新增的doc/test.md文件已经提交到仓库。
经过这些操作,你已经学会了在VSCode里给Git仓库添加文件,提交到Git本地索引,拉取远程Git仓库变动到本机,再推送本地Git仓库的变动到远程仓库。以下描述错误的是?
A.VSCode 里文件变动后直接点提交实际上会提示你是否先将文件变动添加到Git的暂存区,再进一步将暂存区变动提交到Git本地索引。
B.一般情况下推送数据到远程仓库之前,最好先拉取下远程仓库的变动到本地,可能的话需要解决冲突。C.Git 仓库的文件发生变化后,VSCode左侧的Git面板按钮上会显示有变动的文件个数。
D.Git仓库文件编辑后,提交变动到Git后,文件就已经推送到了远程仓库。
答案解析: D. Git仓库文件编辑后,提交变动到Git后,文件就已经推送到了远程仓库。
这是错误的描述。提交变动到Git仅将变更保存在本地仓库,要将这些变更推送到远程仓库,需要执行推送(push)操作。提交(commit)和推送(push)是两个独立的步骤。
8 极简Git+VSCode(Windows)
题目1:
极简 Git+VSCode for Windows(3): 安装VSCode并打开Git仓库
- 打开 VSCode下载页面 下载 Windows 版,安装
System Installer
对应的版本。- 双击 VSCodeSetup-x64-x.yy.z.exe 开始安装
- 在开始菜单中找到 Visual Studio Code 打开 VSCode
- 打开VSCode后,通过菜单“文件->打开文件夹”的方式打开 hello_git 目录。
如图所示,打开 https://code.visualstudio.com/ 下载 Windows 版:
如图所示,安装 vscode:
如果所示,VSCode里打开了仓库目录(如提示是否信任目录,点击信任)
如图所示,VSCode打开了 hello_git 仓库,点击“README.md”文件并显示
经过上述操作,你已经学会安装VSCode并打开Git仓库了,以下描述错误的是?
A.VSCode 可以通过菜单 文件->打开文件夹 来打开目标文件夹。
B.VSCode Windows 版本可以在官方网站上免费下载使用。C.VSCode Windows 版本只需要根据安装向导同意协议并点击下一步即可完成安装。
D.VSCode 只能通过菜单 文件->打开文件夹 来打开目标文件夹。
答案解析: D.VSCode 只能通过菜单 文件->打开文件夹 来打开目标文件夹。