1.git常见命令作用

git init
在哪一目录下,就会在该目录下生成.git目录.
注意:git init命令会把当前目录当作库。
git status
查看本地库的状态
git add .
将所有发生改变的文件添加到暂存区
这里的"."可以被替换成具体文件名,以表示只添加该文件
git commit -m 'git_initCommit'
将暂存区的文件实际保存到仓库的历史纪录,通过这些历史记录,我们就可以在工作树中复原文件.
-m后的是提交信息,是对这个提交的概述;如果不加-m'',会启用vim编辑录入提交信息.
提交信息非常关键,当你查看你的工作树时,需要通过提交信息来判断这次commit具体做了哪些改变.
git log
查看提交日志
git branch
将分支名列表显示,并确定当前所在分支
左侧标有*的表示这是我们当前所在的分支
git diff
查看工作树与暂存区的差别
没有执行"add ."即没有添加暂存区的话,暂存区为空,显示的是工作树与最新提交状态之间的差别
git diff HEAD
查看工作树与最新提交的区别
git checkout -b feature-A
创建切换分支
git branch feature-A
创建分支,这里的feature-A是我的分支名
git checkout feature-A
将当前分支切换到该分支
git checkout -
切换回上一个分支
培育分支:不断对一个分支进行提交的操作
创建分支的作用:可以在互不影响的情况下进行多个功能的开发
git merge --no-ff feature-A
合并分支,这里的feature-A是我的分支名
具体看:--no-ff
这个指令会进入vim编辑器,需要输入此次合并的信息,同样会出现在历史记录中.
vim操作:使用ZZ保存退出,ZQ不保存退出
git reset --hard
回溯历史版本
git commit -am ""
先暂时理解为add操作与commit操作的合并,但他远不止这样.
在windows环境下这个指令的提交信息要使用""包含.
git rebase -i HEAD~2
压缩历史,就是说将多个历史纪录压缩为一条历史纪录.
这里历史的压缩,压缩历史发生冲突后,会让你解决问题.
解决冲突:修改、add、commi.
为解决冲突这一操作添加的信息会变成最终的信息。
git clone +项目的url
该命令会把远程的库克隆到本地库目录下,与.git目录同级

2.git中stash命令作用以及相关其他命令

当你想要保存当前的暂存区和工作区的状态的时候,你可以使用git stash命令。比如:你正在开发一个新功能,写了一些代码(保存暂存的和没有暂存的或没有记录的),现在需要去修复一个紧急bug,你又不想提交,这时你可以选择保存当前工作区和暂存区的内容,需要的时候恢复。
这个命令会保存当前的暂存区和工作区的状态,然后返回到HEAD(git reset —hard HEAD)。最新的stach可以在.git/refs/stash中看到。
git stash save save [-p|—patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|—all] [-q|—quiet] [message]
[ ]代表这个参数是可选的
-k|--keep-index 表示 stash之后,所有对暂存区的改变会维持不变(比如你之前add 了一个file,提交之后,git status还是能够在暂存区看到你的 add),如果是—no-keep-index的话,stash之后的状态就是git reset —hard HEAD。
-p|—patch 不太了解,只知道用了会开启一个交互式的界面让你选择
-u|--include-untracked 会把没有记录到的文件也保存下来(比如你新建了一个文件,但是还没有git add,stash也会把这个文件保存下来)
-a|—all 会把忽略的文件也保存下来(.gitignore中的)
-q|—quiet 终端不打印输出
message 一个对这个stash的描述,如果执行git stash list,我们能够看到这个描述 git stash list list [options]
不加options,会列出所有的stash,你也可以指定某个stash(stash@{0}代表最近的stash) git stash show [stash]
显示和他parent的差异
git stash pop pop [—index] [-q|—quiet] [stash]
与git stash save执行相反的操作,从stash list中移除这个stash,恢复工作区
—index 如果指定了这个参数,那么不仅恢复工作区,也会恢复暂存区 git stash apply apply [—index] [-q|—quiet] [stash]
和pop类似,区别在于apply不会吧stash从stash list中移除 git stash branch branch [branchname] [stash]
以这个stash被创建的那个commit为起点,创建一个叫branchname的分支,然后再在这个分支执行git stash pop —index stash git stash clear
清空当前所有的stash
git stash create
创建一个stash,并返回他的commit对象,但并不在refs中存储这个对象
git stash store
存储通过create创建的stash。(可以在refs的stash和log/refs下看到这个stash)

3.git 中 merge 和 rebase命令 的区别。

1.采用merge和rebase后,git log的区别,merge命令不会保留merge的分支的commit:
2.处理冲突的方式:
(一股脑)使用merge命令合并分支,解决完冲突,执行git add .和git commit -m'fix conflict'。这个时候会产生一个commit。
(交互式)使用rebase命令合并分支,解决完冲突,执行git add .和git rebase --continue,不会产生额外的commit。这样的好处是,‘干净’,分支上不会有无意义的解决分支的commit;坏处,如果合并的分支中存在多个commit,需要重复处理多次冲突。
3.git pull和git pull --rebase区别:git pull做了两个操作分别是‘获取’和合并。所以加了rebase就是以rebase的方式进行合并分支,默认为merge。 注意:只有在冲突的时候,解决完冲突才会自动产生一个commit。
如果想在没有冲突的情况下也自动生成一个commit,记录此次合并就可以用:git merge --no-ff命令,
如果不加 --no-ff 则被合并的分支之前的commit都会被抹去,只会保留一个解决冲突后的 merge commit。

4.公司如何基于git做的协同开发?

5.如何基于git实现代码review?

...

6.git如何实现v1.0 、v2.0 等版本的管理?

...

7.什么是gitlab?

...

8.github和gitlab的区别?

GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源,与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等(https://github.com/gitlabhq/gitlabhq 基于MIT协议)。
不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?
简单来说可把GitLab看作个人版的GitHub。

9.如何为github上牛逼的开源项目贡献代码?

..

10.git中 .gitignore文件的作用?

...

...
...

15.Git面试题的更多相关文章

  1. 面试指南」JS 模块化、组件化、工程化相关的 15 道面试题

    JS 模块化.组件化.工程化相关的 15 道面试题 1.什么是模块化? 2.简述模块化的发展历程? 3.AMD.CMD.CommonJS 与 ES6 模块化的区别? 4.它们是如何使用的? 5.exp ...

  2. 11 个 Git 面试题

    源自:https://mp.weixin.qq.com/s/ghF27N0XjgG0pw2XpGDCYA 在今年的 Stack Overflow 开发者调查报告中,超过 70% 的开发者使用 Git, ...

  3. 15.Git四种协议-本地协议(local)、HTTP协议、SSH协议、Git协议

    1.本地协议(loacl) 最基本的协议,其远程仓库其实就是硬盘内部的一个目录(例如D:\\project).常见于团队内的人对一个共享的文件系统(例如NFS)具有访问权限,或者多人共用一台电脑的情况 ...

  4. 15.Git

    1.Git介绍 1.1版本控制(理解) 无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况 1.2开发中存在的问题(理解) 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间 ...

  5. 「建议心心」要就来15道多线程面试题一次爽到底(1.1w字用心整理)

    . 本文是给**「建议收藏」200MB大厂面试文档,整理总结2020年最强面试题库「CoreJava篇」**写的答案,所有相关文章已经收录在码云仓库:https://gitee.com/bingqil ...

  6. 15 道超经典大厂 Java 面试题!重中之重

    从超高频的后端面试题出发,指明学习方向 大家好,我是鱼皮. 还记得我的老弟小阿巴么?他目前正值大一暑假,在家自学编程(刷短视频)中. 他整个大一期间基本都在学习前端.后来,我带他写了一次后端,结果就崩 ...

  7. Python 爬虫面试题 170 道:2019 版

    引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不是很满意,一个是有些部分还是 Python ...

  8. 170道python面试题(转)

    作者:麋鹿链接:https://www.zhihu.com/question/54513391/answer/779646691来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  9. Python 最常见的 170 道面试题解析:2019 最新

    Python 最常见的 170 道面试题解析:2019 最新 2019年06月03日 23:30:10 GitChat的博客 阅读数 21329 文章标签: PythonPython入门Python面 ...

随机推荐

  1. Integer.valueOf

    一. 深入代码   在创建数字 1 的对象时, 大多数人会使用 new Integer(1), 而使用 Integer.valueOf(1) 可以使用系统缓存,既减少可能的内存占用,也省去了频繁创建对 ...

  2. 详解MathType中如何批量修改公式字体和大小

    MathType应用在论文中时,有时会因为排版问题批量修改公式字体和大小,一个一个的修改不仅费时费力,还容易出现错误,本教程将详解如何在MathType公式编辑器中批量修改公式字体和大小. MathT ...

  3. mysql数据库中,通过mysqladmin工具,创建数据库

    需求描述: 今天接触到了mysqladmin工具,主要是一个客户端工具,用来管理mysql server的 可以通过mysqladmin直接创建数据库,而不需要登录到mysql控制台中,在此记录下. ...

  4. Effective C++ Item 17 Store newed objects in smart pointer in standalone statements

    If you trying to do multiple things in one statement, you should think carefully abnormal behavior e ...

  5. Linux命令之乐--grep

    正则表达式基本组成部分 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* St ...

  6. VMware克隆虚拟机后网络不能正常使用的解决方法

    1.问题情况 在vmware中克隆一个虚拟机后,新的虚拟机网络无法使用,并用原操作系统中的网卡eth0在克隆出来的新系统中,网卡号变成了eth1,并且IP地址也丢失了,网络不可正常使用. 2.环境情况 ...

  7. C文件流

    在Linux系统中,系统默认认为每个进程打开了3个文件,即每个进程默认可以操作3 个流,即标准输入了流(/dev/stdin),标准输出流(/dev/stdout),标准错误输出流(/dev/stde ...

  8. git的常见问题

    今天把电脑清理了下再push就出问题了 ,报这个错Failed with error: fatal: unable to access 'https://git.oschina.net/dubo_/G ...

  9. php学习十:继承

    在php中,我们常常会定义许多类,当多个类里面的方法或者属性出现重复的时候,会常常造成代码重复和冗杂的弊端,这个时候,我们可以用到继承(extends) 继承的特性: * 1.子类可以扩充属性* 2. ...

  10. 硝烟中的Scrum和XP-我们如何实施Scrum 12)发布计划 13)组合XP

    12 怎样制定发布计划, 处理固定价格的合同 一次只计划一个sprint的事情会显得提前量不足, 提前做计划是个好习惯; 尤其是签了固定价格的合同之后, 不得不预先计划好, 防止无法按期交付的危险情况 ...