Git面试问题总结

git fetch和git pull的区别

git pull = fetch + merge

使用git fetch是取回所有的最新的远程分支更新,不会对本地执行merge操作,本地内容不会有变动;

git pull会更新你本地代码变成服务器上对应分支的最新版本代码;

git merge和git rebase的区别

参考答案:git merge和git rebase的区别

git reset、git revert 和 git checkout 有什么区别

这个问题同样也需要先了解 git 仓库的三个组成部分:工作区(Working Directory)、暂存区(Stage)和历史记录区(History)。

共同点

用来撤销代码仓库中的某些更改。

不同点

从 commit 层面来说:

git reset 可以将一个分支的末端指向之前的一个 commit 点。然后再下次 git 执行垃圾回收的时候,会把这个 commit 之后的 commit 都扔掉。git reset 还支持三种标记,用来标记 reset 指令影响的范围:

--mixed:会影响到暂存区和历史记录区。也是默认选项;

--soft:只影响历史记录区;

--hard:影响工作区、暂存区和历史记录区。

注意:因为 git reset 是直接删除 commit 记录,从而会影响到其他开发人员的分支,所以不要在公共分支(比如 develop)做这个操作。

git revert 和 git reset 的目的是一样的,但是做法不同,它会以创建新的 commit 的方式来撤销 commit,这样能保留之前的 commit 历史,比较安全。另外,同样因为可能会覆盖本地的修改,所以执行这个指令之前,你需要 stash 或者 commit 暂存区和工作区的更改。

git checkout 可以将 HEAD 移到一个新的分支,并更新工作目录。因为可能会覆盖本地的修改,所以执行这个指令之前,你需要 stash 或者 commit 暂存区和工作区的更改。

从文件层面来说

git reset 只是把文件从历史记录区拿到暂存区,不影响工作区的内容,而且不支持 --mixed、--soft 和 --hard。

git checkout 则是把文件从历史记录拿到工作区,不影响暂存区的内容。

git revert 不支持文件层面的操作。

回答关键点:

对于 commit 层面和文件层面,这三个指令本身功能差别很大。

git revert 不支持文件层面的操作。

不要在公共分支做 git reset 操作。

Git命令

Git配置相关

/*设置用户的姓名,用于每次的commit*/

git config - -globaluser.name "John Simth"

/*设置用户的邮箱,用于每次的commit*/

git config - -globaluser.email john@example.com

Git仓库的创建

/*将现有的项目转变为Git仓库或者新建一个空的仓库*/

git init

/*克隆仓库*/

git clone '远程仓库地址'

Git的基本操作

提交

/*将单个文件添加到暂存区中*/

git add 'filename'

/*将当前所有文件添加到暂存区中*/

git add.

/*提交文件*/

git commit -m "comment"

/*添加并提交文件*/

git commit -a -m"comment"

Git分支操作

创建、删除分支

git branch //查看所有分支

git branch //创建分支

git checkout //切换分支

git checkout -b //创建并切换分支

git branch -d //删除分支,无法删除未被合并的分支

git branch -D//强制删除分支,可以删除未被合并的分支

分支合并

git merge <branch>//将branch分支合并到当前分支,当前分支拥有branch分支的记录,branch分支不变

git merge <branch1><branch2> //将分支branch1合并到branch2

/*git默认使用fast-farward快合并模式,会直接将要被合并的分支指向当前分支; *但是--no-ff不会,它会创建合并点; **/

git merge   --no-ff <branch>

/*将两个分支合并成一个线性的提交*/

git rebase

查看状态或记录

/**

*显示文件的状态: staged,unstaged和untracked三种状态

*untracked:表示版本库中有新创建的文件,但是并为纳入版本库的管理中

*unstaged:将untracked状态的文件执行 git add 命令后文件状态就是unstaged,此时

*意味着git发现这个文件被改动了,但是改动的部分并没有提交到仓库中

*staged:表示文件已经被提交到仓库中了

**/

git status

/*显示当前分支的commit记录*/

git log/

*以图的形式显示当前分支的commit记录*/

git log --graph

比较

/*工作区与暂存区之间的差别,即还没有添加到暂存区的修改,这里比较的是修改内容*/

git diff

/*暂存区与上一次提交的差别*/

git diff --cached

/*比较两次commit之间的差别*/

git diff <commit id1> <commit id2>

/*比较两个分支之间的差别*/

git diff <branch1> <branch2>

回退

/*将HEAD移动到commit id对应的提交点*/

git reset

/*工作区、暂存区和历史记录区都会被重置commit id提交点*/

git reset  --hard <commit id>

撤销

保存修改

git stash//保存当前工作区和暂存区的状态

git stash list//查看所有的stash信息

git stash apply //回复指定stash,但不删除该stash记录

git stash drop //删除指定stash

git stashclear//删除所有stash记录

标签

git tag //给最新提交打标签

git tag //给commit_hash提交打标签

git tag//查看所有标签

git show //查看标签信息

git checkout //切换到标签

git tag -d //可以删除一个本地标签

git push --tags//把本地tag push到远端

git fetch origin tag //获取远程tag

git push origin --deletetag //删除远程tag

Git远程仓库操作

关联远程仓库

git remote add origin git@server-name:path/repo-name.git

git push -u origin master

git push origin master

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355