git相关面试题

git相关面试题

1. Git和SVN的区别

GitSVN
1. Git是一个分布式的版本控制工具 1. SVN 是集中版本控制工具
2.它属于第3代版本控制工具 2.它属于第2代版本控制工具
3.客户端可以在其本地系统上克隆整个存储库 3.版本历史记录存储在服务器端存储库中
4.即使离线也可以提交 4.只允许在线提交
5.Push/pull 操作更快 5.Push/pull 操作较慢
6.工程可以用 commit 自动共享 6.没有任何东西自动共享

2. Git工作流程

  1. 在工作目录中修改某些文件
  2. 对修改后的文件进行快照,然后保存到暂存区域
  3. 提交更新,将保存在暂存区域的文件快照永久转储到Git目录中

3. 常用命令

  • git show # 显示某次提交的内容 git show $id
  • git add # 将工作文件修改提交到本地暂存区
  • git rm # 从版本库中删除文件
  • git reset # 从暂存区恢复到工作文件
  • git reset HEAD^ # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
  • git diff # 比较当前文件和暂存区文件差异 git diff
  • git log -p # 查看每次详细修改内容的diff
  • git branch -r # 查看远程分支
  • git merge # 将branch分支合并到当前分支
  • git stash # 暂存
  • git stash pop #恢复最近一次的暂存
  • git pull # 抓取远程仓库所有分支更新并合并到本地
  • git push origin master # 将本地主分支推到远程主分支

4.提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的?

开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。 发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。 发生冲突,也可以使用命令。

  • 通过git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改;
  • 通过git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
  • 通过git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中;

5. 如何在Git中创建存储库?

要创建存储库,先为项目创建一个目录(如果该目录不存在),然后运行命令 git init。通过运行此命令,将在项目的目录中创建 .git 目录。

6.git本地仓库和远程仓库的创建和链接

1. 第一种使用方法

   1 先创建一个远程仓库(也就是在github上创建一个远程仓库)

   2 然后再通过 git clone 远程仓库的地址 克隆到本地

   3 将我们写好的项目放到clone下来的文件夹里

   4 通过 git add . ( . 点是选中所有的文件,也可以改成某个文件名只提交某一个文件)这是添加到暂时存储

   5 通过 git commit -m "(这里边是描述信息)" 推送到本地仓库

   6 通过 git push 将我们的项目推送到远程仓库

2. 第二种使用方法3

   1 先创建一个远程仓库(也就是在github上创建一个远程仓库)

   2 然后在自己电脑上创建一个文件

   3 在自己创建的文件里点右键 选中git bash here进入命令行

   4 在命令行里输入 git init 创建一个本地仓库

   5 再输入 git add . 添加到暂时存储

   6 再输入 git commit -m "(这里是描述信息)"推送到本地仓库

   7 再输入 git remote add 自定义名 远程仓库地址 绑定本地仓库和远程仓库

   8 再输入 git push 自定义名 master 添加到远程仓库

7. 全套学习git示意图

 

git示意图

 

8. Git 是用什么语言编写的?

  • 你需要说明使用它的原因,而不仅仅是说出语言的名称。我建议你这样回答:

    Git使用 C 语言编写。 GIT 很快,C 语言通过减少运行时的开销来做到这一点。

9. Git的工作区域

  • ​ 对于任何一个文件,在 Git 内都只有三种区域:工作区,暂存区和本地仓库。

    • 工作区:表示新增或修改了某个文件,但还没有提交保存;

    • 暂存区:表示把已新增或修改的文件,放在下次提交时要保存的清单中;

    • 本地仓库:文件已经被安全地保存在本地仓库中了。

10. git pull 和 git fetch 有什么区别?

git pull 命令从中央存储库中提取特定分支的新更改或提交,并更新本地存储库中的目标分支。

git fetch 也用于相同的目的,但它的工作方式略有不同。当你执行 git fetch 时,它会从所需的分支中提取所有新提交,并将其存储在本地存储库中的新分支中。如果要在目标分支中反映这些更改,必须在git fetch 之后执行git merge。只有在对目标分支和获取的分支进行合并后才会更新目标分支。为了方便起见,请记住以下等式:<center><h5>git pull = git fetch + git merge</h5></center>

11. git config 的功能是什么?

首先说明为什么我们需要 git config

git 使用你的用户名将提交与身份相关联。 git config 命令可用来更改你的 git 配置,包括你的用户名。

下面用一个例子来解释。

假设你要提供用户名和电子邮件 ID 用来将提交与身份相关联,以便你可以知道是谁进行了特定提交。为此,我将使用:

git config –global user.name "Your Name": 此命令将添加用户名。

git config –global user.email "Your E-mail Address": 此命令将添加电子邮件ID。

12 . 如果分支是否已合并为master,你可以通过什么手段知道?

要知道某个分支是否已合并为master,你可以使用以下命令:

git branch –merged 它列出了已合并到当前分支的分支。

git branch –no-merged 它列出了尚未合并的分支。

13. 什么是SubGit?

SubGit 是将 SVN 到 Git迁移的工具。它创建了一个可写的本地或远程 Subversion 存储库的 Git 镜像,并且只要你愿意,可以随意使用 Subversion 和 Git。

这样做有很多优点,比如你可以从 Subversion 快速一次性导入到 Git 或者在 Atlassian Bitbucket Server 中使用SubGit。我们可以用 SubGit 创建现有 Subversion 存储库的双向 Git-SVN 镜像。你可以在方便时 push 到 Git 或提交 Subversion。同步由 SubGit 完成。

14. Git是什么?

  • ​ Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

    Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

15. 在Git中,你如何还原已经 push 并公开的提交?

有两种方式:
  • 删除或修复新提交中的错误文件,并将其推送到远程存储库。这是修复错误的最自然方式。对文件进行必要的修改后,将其提交到我将使用的远程存储库
git commit -m "commit message"
复制代码
  • 创建一个新的提交,撤消在错误提交中所做的所有更改。可以使用命令:

    git revert <name of bad commit>
    复制代码

16. 如何把本地仓库的内容推向一个空的远程仓库?

首先确保本地仓库与远程之间是连同的。如果提交失败,则需要进行下面的命令进行连通:

git remote add origin XXXX
复制代码

注意:XXXX是你的远程仓库地址。 如果是第一次推送,则进行下面命令:

git push -u origin master
复制代码

注意:-u 是指定origin为默认主分支 之后的提交,只需要下面的命令:

git push origin master
复制代码

18.说明GIT合并的两种方法以及区别。

答:Git代码合并有两种:Git Merge 和 Git ReBase
Git Merge:这种合并方式是将两个分支的历史合并到一起,现在的分支不会被更改,它会比对双方不同的文件缓存下来,生成一个commit,去push。
复制代码
Git ReBase:这种合并方法通常被称为“衍合”。他是提交修改历史,比对双方的commit,然后找出不同的去缓存,然后去push,修改commit历史。
复制代码

19.如何查看文件的提交历史和分支的提交历史。

答:使用git log查看文件提交历史

Git log filename

使用git log查看分支提交历史

Git log branch file
posted @ 2020-05-30 09:26  咸菜缸缸  阅读(660)  评论(0编辑  收藏  举报