git常见面试题
-
配置个人的用户名和电子邮箱
-
对一个文件进行修改,然后推送需要哪几个步骤?
git add git commit git push
这三个步骤缺一不可,add是对修改的add,不是将文件加入到git版本库中。git管理的是修改,不是文件。新建一个文件也是一次版本库的修改。
-
如何克隆远程代码
git clone [远程仓库地址]
-
如何查看本地所有的分支?如何查看远程的所有分支?
git branch
git branch -a
-
如何查看所有的提交记录
git log
-
如何回滚至某个提交?
git reset --hard [提交记录ID]
-
fetch和pull的区别
git pull = git fetch + git merge
-
如何快速地只拉取一个分支的代码?
git clone -b dev [仓库地址]
-
如何拉取所有的分支
git clone [仓库地址]
git branch -a
按照分支名逐个执行:git checkout -b [分支名] origin/[分支名]
-
如何关联远程分支
git remote add origin [仓库地址]
-
如何查看远程地址
git remote -v
-
如何将一个文件从版本库中删除
git rm [file_name]
-
撤销修改过的未提交的文件
git checkout [file_name]
-
修改远程仓库地址
方法一:
- git remote rm origin
- git remote add origin new_address
方法二:
- git remote set-url origin new_address
方法三:
- git remote rename origin old-origin
- git remote add origin 新的仓库地址
方法四:
修改配置文件.git/config/中对应的[remote “origin”]条目的值
-
如何将一个仓库的复制到另一个仓库
- git clone --bare 仓库地址
- 修改远程仓库地址
- git push -u origin --all
-
.git目录下的文件详解
-
如何创建分支
git branch [分支名]
-
删除一个分支
git branch -d [分支名]
-
如何切换分支
git checkout [分支名]
git switch [分支名]
-
如何创建并切换到新的分支
git checkout -b [分支名]
git switch -c [分支名]
-
git合并本地分支
例如要将dev分支的提交,合并到当前分支
git merge dev
-
什么是本地分支冲突
commit1——commit2——commit3 ——commit4 <—— master
|___________________commit5 <—— dev
这种情况,即两个分支在一个相同的版本上,都进行了个自己的修改提交,则会产生冲突。想要在master分支下通过git merge合并另一个分支,会冲突,如下。同时分支名会变为(mater|MERGING)
$ git merge dev Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt # 告知冲突产生的文件 Automatic merge failed; fix conflicts and then commit the result. tensory@DESKTOP-F53T0L7 MINGW64 /e/LearnGit2/LearnGit (master|MERGING) # 显示处于MERGING状态 $ git status On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) You have unmerged paths. (fix conflicts and run "git commit") (use "git merge --abort" to abort the merge) Unmerged paths: (use "git add <file>..." to mark resolution) both modified: readme.txt # 查看master下readme.txt文件 # LearnGit this is a dev branch <<<<<<< HEAD I am master ======= modified in dev branch >>>>>>> dev # 查看dev下的readme.txt # 合并过程中,无法更换分支
-
如何解决本地分支冲突?
在22中,只需要按照文件内容提示,将master分支下的内容修改,然后add,再commit即可解决冲突,同时分支状态名由(master|MERGING)改变为(master)。
-
在合并中途发现冲突,如何放弃合并?
git merge --abort
-
合并过程中谁的改动在前面?
master想合并dev,则master的改动在前面
dev想合并master,则dev的改动在前面
-
如何查看提交记录图
git log --graph
-
FastForward模式是什么?有什么坏处?
# master合并dev的时候,这样会多一条提交记录,可以追踪 git merge --no-ff -m '非Fast Forward模式' dev 区别如下 * 38196de (HEAD -> master) master用noff的方式合并了 |\ | * 27bdac3 (dev) dev的修改 |/ * dc3cf25 试一下with ff 可以看出,no-ff指明了是对dev分支的合并,并且最后合并新增了一条提交记录。 FastForward模式没有保留被合并分支(dev)的信息,看不出来有合并的记录,看不出来是对dev分支的合并
-
如何获取分支dev的最新数据
git pull origin dev # 如果冲突,会提示无法MERGE,并会提示哪些文件冲突,按照冲突解决办法解决即可
-
协作过程:
# 情景一、 A和B为两个开发者,共同修改远程分支dev,A和B本地具有与远程分支dev相同的分支 1. A修改readme.txt,add--commit--push,一切将正常 2. B修改readme.txt, add-commit,push将提示冲突,需要git pull,然后手动合并readme.txt中冲突的文件,合并后,add---commit---push,将正常。 # 情景二、 A和B为两个开发者,共同修改远程分支dev,A和B本地具有与远程分支dev相同的分支 1. A添加文件run.sh,add---commit---push,一切将正常 2. B修改readme.txt, add---commit,push将提示冲突,需要通过git pull合并冲突,会提示输入提交日志,输入保存后,自动合并到本地,并完成commit。再进行push,将正常。
-
多人协作的过程中,开始写代码的第一步操作是什么?
git pull origin dev
合并远程仓库中最新的代码到本地
-
远程分支的请求合并
1. 想将dev分支合并到master分支,在github页面,点击 pull requests,然后按照提示,逐步添加请求。 2. 仓库管理员,收到请求后,决定是否进行合并。确定合并,那么master分支就和dev合并了
-
如何比较本地dev分枝和远程dev分枝的差别?
# 远程的分枝拉取到本地,不执行合并 git fetch origin dev # 显示远程有而本地没有的信息 git log dev..origin/dev # 统计问价的改动 git diff --stat dev origin/dev
-
git rm是什么意思?如何将文件移出管理系统?
-
问题场景:远程的dev在commit10上,而本地分支回退到了上一个版本commit9,现在本地分支进行了修改,push的时候被拒绝,如何解决?
因为远程分支和本地分支出现了分叉,push会被拒绝。做法是将远程分支回退到上一个版本。
-
如何只下载最新的版本?
git clone 地址 --depth=1