那些git中常见的面试题及知识点

1.列举工作中常用的git命令

1.新增文件的命令:git add file或者git add .

2.提交文件的命令:git commit –m或者git commit –a

3.查看工作区状况:git status –s

4.拉取合并远程分支的操作:git fetch/git merge或者git pull

5.查看提交记录命令:git reflog

6.创建仓库:git init

7.查看仓库的状态:git status

8.这次相较上次修改了哪些内容:git diff

9.将添加的文件放到栈存区中:git add

10.将栈存区内容提交到代码区中:git commit

11.将远程仓库的代码克隆到本地:git clone git地址

12.查看当前分支:git branch

13.切换分支:git checkout

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

因为在合并分支的时候,master分支和dev分支恰好有人都修改了同一个文件,GIT不知道应该以哪一个人的文件为准,所以就产生了冲突了。

我是直接在js代码中手动解决冲突,将冲突的代码进行手动合并

3.如果本次提交误操作,如何撤销

可以先用git reflog查看历史提交记录

1.软撤销

​ 本地代码不会变化,只是 git 转改会恢复为 commit 之前的状态

​ 不删除工作空间改动代码,撤销 commit,不撤销 git add .

​ git reset --soft HEAD~1 //表示撤销最后一次的 commit ,1 可以换成其他更早的数字

2.硬撤销

​ 本地代码会直接变更为指定的提交版本,慎用

​ 删除工作空间改动代码,撤销 commit,撤销 git add .

​ git reset --hard HEAD~1 //注意完成这个操作后,就恢复到了上一次的commit状态

如果仅仅是 commit 的消息内容填错了

​ 输入git commit --amend

​ 进入 vim 模式,对 message 进行更改

​ 还有一个 --mixed

​ git reset --mixed HEAD~1

​ 意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作

​ 这个为默认参数,git reset --mixed HEAD~1git reset HEAD~1 效果是一样的。

4.git跟其他版本控制器有啥区别

所有除了Git以外的版本控制系统都使用增量存储方式来保存不同版本。

概念上说,所有其他的系统都是以文件为基础来保存信息。这些系统将信息视为一整套的文件以及对这些文件的修改。

Git并不这样看待数据。相反,Git将数据视为一系列的mini filesystem的快照。每次你commit,或者在Git中保存你的项目的状态,它将你的文件在那个时刻的状态做一个快照,并且保存对那个快照的引用。为了更加高效,如果文件本身没有做变更,git并不会重新保存一份,而仅仅重新引用这个已经保存过的文件快照。

这是一个最根本的区别。Git几乎将版本控制的方方面面重新思考和践行。

当然,在概念上Git确实每一个commit都会对修改过的文件做一个整个copy保存,但是实际上,它也是考虑了delta存储的好处,只是做法有点不同

5.我们在本地工程常会修改一些配置文件,这些文件不需要被提交,而我们又不想每次执行git status时都让这些文件显示出来,我们该如何操作?

首先利用命令touch .gitignore新建文件:touch .gitignore

然后往文件中添加需要忽略哪些文件夹下的什么类型的文件:

/target/class
.settings
.imp
*.ini

注意:忽略/target/class文件夹下所有后缀名为.settings,.imp的文件,忽略所有后缀名为.ini的文件。

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

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

git remote add origin XXXX 注意:XXXX是你的远程仓库地址。

2.如果是第一次推送,则进行下面命令:

git push -u origin master 注意:-u 是指定origin为默认主分支

3.之后的提交,只需要下面的命令:

​ git push origin master

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

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

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

8.如何在Git中创建存储库

要创建存储库,先为项目创建一个目录然后运行命令 git init。将在项目的目录中创建 .git 目录。

9.请描述什么是工作区、暂存区和本地仓库?

工作区:个人克隆项目到本地后,项目所在的文件夹目录
暂存区:用于储存工作区中的变更(增删改等改动)的文件的地方.操作时使用git add会将本地所有的变更提交到暂存区中
本地仓库:用于储存工作区和暂存区中提交上来的文件,使用git commit -m ‘提交内容的描述’

10.请写出查看分支、创建分支、删除分支、切换分支、合并分支的命令以及写出解决冲突的思路?

git branch 查看分支 git barnch -a查看所有的分支 git branch -r查看远程所有的分支
git checkout -b创建分支
git branch -d 删除分支
git checkout master 切换分支
git merge 合并分支

在主分支上进行了修改并提交 在次分支上进行了修改并提交 然后在合并的话会发生冲突
解决办法是:
在开发工具vscode中手动选择合并方式 一般都是双方都保留更改
冲突只发生在共同的地方

11.请写出将工作区文件推送到远程仓库的思路?

方案一:
用命令行将本地仓库推送到远程仓库。
首先先创建一个远程仓库待用,然后在本地建立git版本管理,在项目目录下进行以下操作
git init 项目目录下会多一个.git文件
git add . 添加所有文件
git commit -m“first commit” 提交文件
git remote add origin //添加到远程仓库
git push -u origin master //第一次推送到远程仓库需要 -u,将本地master推送到远程master,以后就直接Git push 就好了

方案二:
用命令行创建一个新的仓库
如果已经拉取了git仓库,那我们只需要在该仓库下进行项目的新建等操作即可
首先先创建一个本地文件
然后git init 初始化git
git add 文件 添加本地文件到暂存区
git commit -m“first commit” 提交文件
git remote add origin //添加到远程仓库
git push -u origin master //第一次推送到远程仓库需要 -u,将本地master推送到远程master,以后就直接Git push 就好了

12.请写出团队内部协作开发的流程

首先在github上创建一个项目,然后为小组成员添加权限,给小组长搭好框架,把本地项目上传到远程项目 ,新建一个开发分支,所有成员都切换到开发分支中,在开发分支中进行开发,最后小组长将开发分支合并到master分支上,并解决一些冲突

13.请写出远程跨团队协作开发的流程

首先需要在其他团队里申请到访问权限,然后在其他的团队那里克隆一下文件,然后在本地运行这个文件,创建一个分支,在这个分支里做进一步的操作,最后合并分支解决冲突提交到远程仓库就行

14.请写出配置ssh的思路

首先通过win+r打开命令提示窗口输入
git config –global user.name ‘xxxxx’
git config –global user.email ‘xxxxx’
来设置git的user name和email
然后开始生成密钥
ssh-keygen -t rsa -C ‘之前生成的邮箱’
然后执行cd ~/.ssh看是否存在id_rsa和id_rsa.pub,如果存在说明已经有ssh key
然后在文件中找到生成的.ssh,找到公钥id_rsa.pub在记事本中打开,然后复制里面的内容,然后在github上添加ssh Key,点击用户头像,选择setting,新建一个ssh key,取个名字,把之前复制的密钥粘贴进去就行了

15.请描述什么是GitLab,或者说出你对GitLab的理解

GitLab 是一个用于仓库管理系统的开源项目,是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发

16.请写出你所参与的多人协同开发时候,项目都有哪些分支,分支名是什么,每个分支代表什么,以及分支是由谁合并

mster 主分支用来发布
dev 日常开发用的分支
test 测试用的分支

分支最后会由小组长合并

  • 4
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值