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~1
和 git 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 测试用的分支
分支最后会由小组长合并