1.fetch和merge和pull的区别
pull相当于git fetch 和 git merge,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支。
- git fetch:相当于是从远程获取最新版本到本地,不会自动merge ;
- git merge : 将内容合并到当前分支 ;
- git pull:相当于是从远程获取最新版本并merge到本地。
2.tag
tag指向一次commit的id,通常用来给开发分支做一个标记。
- 打标签 : git tag -a v1.01 -m “Relase version 1.01” ;
- 提交标签到远程仓库 : git push origin --tags ;
- 查看标签 : git tag ;
- 查看某两次tag之间的commit:git log --pretty=oneline tagA…tagB ;
- 查看某次tag之后的commit: git log --pretty=oneline tagA…
3.Git和SVN的区别
- Git是分布式版本控制系统;
- SVN是集中式版本控制系统。
4.Git工作流程
- 在工作目录中修改某些文件 ;
- 对修改后的文件进行快照,然后保存到暂存区域;
- 提交更新,将保存在暂存区域的文件快照永久转储到Git目录中。
5.常用命令
- git show : 显示某次提交的内容 ;
- git add :将工作文件修改提交到本地暂存区;
- git rm : 从版本库中删除文件 ;
- git reset : 从暂存区恢复到工作文件 ;
- git reset: 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改;
- 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: 将本地主分支推到远程主分支。
6.说明新建一个GIT功能分支的步骤,提供每个步骤的指令,并对指令进行说明。
- Git branch name : 创建名字为name的branch;
- Git checkout xxx_dev :切换到名字为xxx_dev的分支;
- Git pull 从远程分支拉取代码到本地分支;
- Git checkout -b main_furture_xxx 创建并切换到main_furture_xxx;
- Git push origin main_furture_xxx 执行推送的操作,完成本地分支向远程分支的同步。
7.说明GIT合并的两种方法以及区别。
Git代码合并有两种:Git Merge 和 Git ReBase
- Git Merge:这种合并方式是将两个分支的历史合并到一起,现在的分支不会被更改,它会比对双方不同的文件缓存下来,生成一个commit,去push。
- Git ReBase:这种合并方法通常被称为“衍合”。他是提交修改历史,比对双方的commit,然后找出不同的去缓存,然后去push,修改commit历史。
8.如何查看文件的提交历史和分支的提交历史。
- 使用git log查看文件提交历史 :Git log filename
- 使用git log查看分支提交历史 :Git log branch file
9.我们在本地工程常会修改一些配置文件,这些文件不需要被提交,而我们又不想每次执行git status时都让这些文件显示出来,我们该如何操作?
在Git工作区的跟目录下创建一个特殊的.gitignore文件,然后把忽略的文件名编辑进去,Git就会自动忽略这些文件。
10.git提交代码时候写错commit信息后,如何重新设置commit信息?
可以通过Git commit --amend 来对本次commit进行修改。
11.当GIT出现如下情况时,该如何处理?your-branch-is-ahead-of-origin-master-by-3-commits
Git commit
Git pull
Git push
12.描述清楚冲突产生的原因?git跟其他版本控制器有啥区别?
很多命令都可能出现冲突。但冲突的直接来源是merge和patch(应用补丁)。其它的命令是执行这两个操作导致冲突。
rebase:重新设置基准,然后应用补丁。
pull:会自动merge
repo sync:会自动rebase
cherry-pick:会应用补丁
没有更新代码就进行提交,覆盖别人的代码。
区别:
- Git比svn快,而且更加的流畅。
- Git在本地就可以使用,可以随便保存各种历史记录,不用担心污染服务器。
- Git在branch和branch之间切换非常简单。
- Git没有被lock不能commit 的情。
13.列举工作中常用的几个git命令?
新增文件的命令:git add file或者git add .
提交文件的命令:git commit –m或者git commit –a
查看工作区状况:git status –s
拉取合并远程分支的操作:git fetch/git merge或者git pull
查看提交记录命令:git reflog