一、偏理论性知识
1.什么是git?他的主要特点是什么?
Git是一种分布式版本控制系统,用于追踪和管理文件的变化。
①它具有分布式的特点,使每个开发者都有完整的代码仓库副本,可以在本地进行工作,无需依赖中央服务器。
②并且Git通过对文件和内容进行快速哈西计算来实现高效的版本控制。
③强大的分布支持:Git以分支为核心创建、合并和管理分支,方便并行开发和特性隔离。
④完整性和安全性:Git使用SHA-1哈西来确保数据的完整性,并且提供认证和加密功能以确保安全性。
2.Git工作原理
Git基于快照(snapshot)而非差异(diff)的方式来处理文件变化。
它将文件和目录的快照保存在一个称为“仓库(repository)”的数据库中。
当提交(commit)时,Git会创建一个指向该快照的指针,并将该指针添加到版本历史中。
Git使用分支(branch)来指向不同的提交,从而支持并行开发和特性隔离。
3.Git 是用什么语言编写的?
Git使用 C 语言编写。 GIT 很快,C 语言通过减少运行时的开销来做到这一点。
4.提交对象包含什么?(提交命令:git commit)
Commit 对象包含以下组件,你应该提到以下这三点:
一组文件,表示给定时间点的项目状态
引用父提交对象
SHAI 名称,一个40个字符的字符串,提交对象的唯一标识。
5.Git的三种区域
对于任何一个文件,在 Git 内都只有三种区域:工作区,暂存区和本地仓库。
工作区:表示新增或者修改了某个文件,但是还没有提交保存;
暂存区:表示把已经新增或修改的文件,放在下次提交时要保存的清单中;
本地仓库:文件已经被安全地保存在本地仓库中了。
6.分支策略
- 功能分支(Feature branching)
要素分支模型将特定要素的所有更改保留在分支内。当通过自动化测试对功能进行全面测试和验证时,该分支将合并到主服务器中。
- 任务分支(Task branching)
在此模型中,每个任务都在其自己的分支上实现,任务键包含在分支名称中。很容易看出哪个代码实现了哪个任务,只需在分支名称中查找任务键。
- 发布分支(Release branching)
一旦开发分支获得了足够的发布功能,你就可以克隆该分支来形成发布分支。创建该分支将会启动下一个发布周期,所以在此之后不能再添加任何新功能,只有错误修复,文档生成和其他面向发布的任务应该包含在此分支中。一旦准备好发布,该版本将合并到主服务器并标记版本号。此外,它还应该再将自发布以来已经取得的进展合并回开发分支。
二、git命令
1.在 Git 中提交的命令是什么?
用于写入提交的命令是 git commit -a
。加 -a
指示 git 提交已修改的所有被跟踪文件的新内容。
如果是第一次需要提交新文件,可以在在 git commit -a
之前先 git add <file>
2.git config 的功能是什么?
git 使用你的用户名将提交与身份相关联。 git config
命令可用来更改你的 git 配置,包括你的用户名。
例子:
假设你要提供用户名和电子邮件 ID 用来将提交与身份相关联,以便你可以知道是谁进行了特定提交。为此,我将使用:
git config –global user.name “Your Name”
此命令将添加用户名。
git config –global user.email “Your E-mail Address”
此命令将添加电子邮件ID。
3.如何撤销已提交的代码更改?
可以使用git revert
命令,同时它保持版本历史的完整性。另一种方法是使用git reset
命令,但是它会改变版本历史。
4.如何还原已经 push 并公开的提交?
删除或修复新提交中的错误文件,并将其推送到远程存储库。这是修复错误的最自然方式。对文件进行必要的修改后,将其提交到我将使用的远程存储库
git commit -m "commit message"
创建一个新的提交,撤消在错误提交中所做的所有更改。可以使用命令:
git revert <name of bad commit>
5.git pull 和 git fetch 有什么区别?
git pull
命令从中央存储库中提取特定分支的新更改或提交,并更新本地存储库中的目标分支。
git fetch
也用于相同的目的,但它的工作方式略有不同。当你执行 git fetch
时,它会从所需的分支中提取所有新提交,并将其存储在本地存储库中的新分支中。如果要在目标分支中反映这些更改,必须在 git fetch
之后执行git merge
。只有在对目标分支和获取的分支进行合并后才会更新目标分支。方便起见,有以下等式:
git pull = git fetch + git merge
6.如何撤销暂存的文件?
可以使用git restore
命令来撤销暂存的文件。该命令将取消对文件的暂存,并还原文件到最后一次提交的状态。如果要完全丢弃对文件的更改,可以使用git restore --staged <file>
命令。
7.如何解决合并冲突?
合并冲突发生在合并分支时,当两个分支的同一部分产生了不同的更改时。解决合并冲突的一般步骤如下:
• 使用git status
命令查看冲突的文件。
• 打开冲突文件,手动解决冲突并选择要保留的更改。
• 使用git add
命令将解决冲突后的文件标记为已解决。
• 使用git commit
命令提交解决冲突的结果。
8.如何查看提交日志?
可以使用git log
命令查看提交日志。该命令以时间倒序列出所有提交,并显示每个提交的作者、日期、提交消息和哈希值等信息。
9.如何创建和合并分支?
可以使用git branch
命令创建新分支,例如git branch feature
。
创建分支后,可以使用git checkout
命令切换到新分支,例如git checkout feature
。
要将分支合并到当前分支,可以使用git merge
命令,例如git merge feature
。
10.如何查看文件的修改历史?
可以使用git blame
命令查看文件的修改历史。该命令会逐行显示文件的内容,并标记每行的修改作者和提交信息。
11.如何将本地仓库与远程仓库同步?
可以使用git fetch
命令从远程仓库下载最新的提交和分支信息。
然后,使用git merge
命令或git rebase
命令将本地分支与远程分支合并。
最后,使用git push
命令将本地提交推送到远程仓库。
12.如何在Git中标记重要的提交?
可以使用git tag
命令来标记重要的提交。标签可以用于版本发布、里程碑标记等。
可以创建两种类型的标签:轻量标签(仅包含提交哈希)和带注释的标签(包含提交哈希、作者、日期和注释)。
例如,使用git tag v1.0
创建一个轻量标签,使用git tag -a v1.0 -m "Version 1.0"
创建一个带注释的标签。
13.如果分支是否已合并为master,你可以通过什么手段知道?
git branch –merged
它列出了已合并到当前分支的分支。
git branch –no-merged
它列出了尚未合并的分支。