Git相关知识

一、偏理论性知识

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 它列出了尚未合并的分支。

posted @ 2024-04-02 20:02  颍2333  阅读(28)  评论(0)    收藏  举报