GIt面试宝典

文章来自帅地玩编程

Git最小配置

1、配置全局账户,也就是该账户对所有的Git仓库都有效

git config --global user.name '你的账号名称'

git config --global user.email '你的Email'

2、配置局部账户,也就是该账户对当前的Git仓库有效

git config --global user.name '你的账号名称'

git config --global user.email '你的Email'

一个是global(全局)一个是local(本地)

3、查看相关配置情况 配置了了之后,显然有时候是需要查看我们当前配置的相关情况的,可以使⽤用如下命令 1、查看 global 类型的配置情况

git config --global --list

2、查看某个仓库下的配置情况

git config --global --list

⼆二、本地基本操作 这部分命令有点多,也是使⽤用的最频繁的命令了了,待我⼀一⼀一列列举出来,建议收藏 1、基本操作 1、查看变更更情况

git status

2、查看当前工作在哪一个分支上

git branch -v

3、切换到指定分支

git checkout 指定分支的名称

4、把当前目录及其子目录下所有变更都加入到暂存区。

git add.  //注意:add后面是一个.

5.把仓库内所有变更更都假如到暂存区

git add -A

6、把指定⽂文件添加到暂存区

git add 文件1 文件2 ... 文件n

7、创建正式的 commit,也就是把当前的数据提交上去

git commit

2、比较差异

1、⽐比较某⽂文件⼯工作区和暂存区的差异

git diff 莫文件

2、⽐比较某⽂文件暂存区和 HEAD 的差异

git diff --cache 莫文件

3、比较工作区和暂存区的所有差异

git diff

4、比较暂存区和HEAD的所有差异

git diff --cache

三、加塞临时任务处理理 1、把未处理理完的变更更先保存到 stash 中

git stash

2、临时任务处理理完后继续之前的⼯工作

git stash pop //pop相当于栈的出栈和入栈一样,把之前的任务弹出来
git stash apply//和pop不同的是,apply相当于从栈顶把任务取出来,但是会在栈中被移除

 先说git stash:

git stash 命令可以将在当前分支修改的内容放到缓存区中,并会自动建立一个缓存的list集合,方便管理。

如果想将修改的内容重新释放出来,git stash apply 和 git stash pop 都可以达到这个目的。

但是两者有什么区别呢。

刚才说过,git stash 可以形成list 集合。通过git stash list 可以看到list下的suoy

使用git stash apply @{x} ,可以将编号x的缓存释放出来,但是该缓存还存在于list中

而 git stash apply,会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录还存在list中

而 git stash pop,也会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录不存在list中

3、查看所有的stash

git stash list

4、取回某次stash的变更

git stash pop stash @{数字n}

四、修改个⼈人分⽀支历史

我们的仓库的内容每次变更更执⾏行行 commit 的时候,都会⽣生成⼀一个新的 commit,不不过有时候,我们不不想 产⽣生新的 commit,⽽而是想要通过修改之前的 commit 来变更更仓库的内容,那么就可以使⽤用如下命令了了 1、修改最后⼀一次 commit

git add //提交最近一次修改
git commit --amend//最近一次修改覆盖

改变当前分支最近的一次提交的最简单方法之一是使用 git commit –amend。

先改正工作目录,然后跟任何提交一样,使用命令更新索引,如 git add 或 git rm。然后发出 git commit-amend 命令。

git commit-amend 并没有添加新的提交,而是用新提交取代了原始提交。

五、查看变更更⽇日志等 1、当前分⽀支各个 commit ⽤用⼀一⾏行行显示

git log --online

2、显示最近的n个commit

git log -n

3、用图显示所有的分支历史

git log --online --graph --all

4、查看涉及到莫文件变更的所有commit

git log 莫文件

5、某文件各行最后修改对应的commit以及作者

git blame 某文件

  git-blame - 显示文件的每一行最后修改的版本和作者

六、分⽀支与标签

1、创建新分⽀支 基于当前分⽀支创建新分⽀支

git branch 新分支

基于指定分支创建新分支

git branch 新分支 已有分支  

基于某个commit创建分支

git branch 新分支 某个 commit 的id

创建分支并且切换到该分支

git chechout -b新分支

2、列出分支

列出本地分支

git branch -v

列出本地和远程分支

git branch -av

列出远程所有分支

git branch -rv

列列出名称符号某样式的远端分⽀支

git branch -rv -l '某样式'

 3、删除分⽀支

安全删除本地某分⽀支

git branch -d 要删除的分支

强行删除的分支

git branch -D
要删除的分支

删除远端 origin 已不不存在的所有本地分⽀支

git remote prune origin

4、打标签

从commit打上标签

git tag 标签名 commit 的id

七、git 中一些选项解释

-d --delete:删除

-D --delete --force的快捷键

-f --force:强制

-m --move:移动或重命名

-M --move --force的快捷键

-r --remote:远程

-a --all:所有

-v 分支

八、两分支之间的集成

git merge b git cherry-pick可以bai选du择某一个分支中的一个或几个commit(s)来进行zhi操作。例如,假设我 们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0 中的功能到v2.0中,这里就可以使用cherry-pick了。 # 先在v3.0中查看要合并的commit的commit id git log # 假设是 commit f79b0b1ffe445cab6e531260743fa4e08fb4048b # 切到v2.0中 git check v2.0 # 合并commit git cherry-pick f79b0b1ffe445cab6e531260743fa4e08fb4048b git rebase有点类似git merge,但是两者又有不同,打个比方,你有两个抽屉A和B,里面都装了衣服,现在想把B中的衣服放到A中,git merge是那种横冲直撞型的,拿起B就倒入A里面,如果满了(冲突)再一并整理;而git rebase就很持家了,它会一件一件的从B往A中加,会根据一开始放入的时间顺序的来加,如果满了你可以处理这一件,你可以继续加,或者跳过这一件,又 或者不加了,把A还原。所以merge适合那种比较琐碎的,简单的合并,系统级的合并还是用rebase吧。 专业的区别请移步到这里合并和衍合 # 合并b git rebase b # 处理完冲突继续合并 git rebase –continue # 跳过 git rebase –skip # 取消合并 git rebase –abort

八、和远端交互

1、列列出所有 remote

git remote -v

2、增加remote

git remote add url地址

3、删除remote

git remote remove remote的名称

4、改变remote的name

git remote rename 旧名称 新名称

5、把远程分支的变更拉到本地,且merge到本地分支

git fetch remote

6、把远端分⽀支的变更更拉倒本地,且 merge 到本地分⽀支

git pull remote名称 分支名 

关于 pull 和 fetch 的区别不不懂可以看这篇⽂文章

https://mp.weixin.qq.com/s/r0FBPWKfQUk3nOBRHhPa8g

https://blog.csdn.net/dongapple/article/details/80451249

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java面试宝典

    允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点:

    Java团长
  • Python 面试宝典

    步入 9 月,徐徐的秋风给酷热的天气带来丝丝凉意。同时,也吹来一股招聘高潮。俗话说“金九银十”,每年的 9、10 月都是招聘高潮。有些小伙伴会参加秋招,有些小伙...

    sergiojune
  • Python 面试宝典

    步入 9 月,徐徐的秋风给酷热的天气带来丝丝凉意。同时,也吹来一股招聘高潮。俗话说“金九银十”,每年的 9、10 月都是招聘高潮。有些小伙伴会参加秋招,有些小伙...

    猴哥yuri
  • 前端面试宝典 v1

    apply的参数是数组形式,call的参数是单个的值,除此之外在使用上没有差别,重点理解这两个函数调用的this改变

    李才哥
  • 前端面试宝典(四)

    Hello小伙伴们,我又来了,来的太不频繁,兔妞也自惭形秽!但是真的是有机会就更新啦~最近烦心事也很多,不过还是要努力开心呀,每天都是愉快的新的一天!

    萌兔IT
  • 前端面试宝典(三)

    Hello小伙伴们大家好,这周事情有点多,没有及时更新,就请大家原谅兔妞吧,真的是作息紊乱,还心累,,,呜呜,,,苍天啊,大地啊,兔妞是多么的想更新啊。那么今天...

    萌兔IT
  • Python 【面试强化宝典】

    IT茂茂
  • 前端面试宝典(二)

    Hello小伙伴们,上次的题目做的如何呀~是不是觉得对知识点有了更深层次的理解了呢?我们今天还是6道题目哦!

    萌兔IT
  • 前端面试宝典(一)

    Hello大家好,兔妞想着咱们分享也有好多了,而且新一轮的秋招又快到了,要不咱收集收集题目,也好自己查缺补漏一下吧~所以最近会有一些面试题目分享给大家,答案也会...

    萌兔IT
  • 【面试宝典】final 关键字

    面试官:你刚毕业? 小白:还没有,大四学校没有课,就想着出来找实习单位多学习学习。 面试官:很好嘛年轻人,早点出来锻炼确实是快速提高自己的一个好方法,那咱们就简...

    程序员互动联盟
  • 【面试宝典】static 关键字

    面试官:static关键字你了解吗?说一下你的认识。 小白:啊.....有点晕呀,这么宽泛的问题,我该从哪回答呢?头脑一片空白。让我想想...... 面试官:没...

    程序员互动联盟
  • 【面试宝典】continue、break和return

    面试官:continue会用吧。 小白:用来结束当前循环的。 面试官:那break呢? 小白:也是用来结束循环的。 面试官:那么它们的区别呢? 面试解析: 面试...

    程序员互动联盟
  • Java面试通关宝典(一)

    前言 年后是跳槽的高峰期,相信有不少朋友已经跃跃欲试了。想要找到好工作,离不开充分的面试准备。刚好沉思君最近在网上看到一份Java面试知识点,觉得很不错,所以...

    Bug开发工程师
  • Java面试通关宝典(二)

    前言 在之前的文章《Java面试通关宝典(一)》中,沉思君为大家介绍了几道常见的面试题与参考答案,有些题目还附有延伸问题,如果不清楚这些题目的思路,可以申请进...

    Bug开发工程师
  • Java面试通关宝典(三)

    前言 在之前的文章《Java面试通关宝典(一)》和《Java面试通关宝典(二)》中,沉思君为大家介绍了部分常见的面试题,涵盖Java基础、web基础和多线程,...

    Bug开发工程师
  • 前端面试宝典(五)—— Vue

    MVVM是Model-View-ViewModel的简写,Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑;View 代表 UI...

    萌兔IT
  • 【面试宝典】谈谈面向对象

    面试官:知道面向对象吧。 小白:嗯,知道,面想对象就是封装继承多态呀。 面试官:回答了一部分,还能谈谈除了封装、继承、多态之外的吗,比如说怎么抽象,抽象的思想是...

    程序员互动联盟
  • Linux面试题基础宝典==面试必备

    另外,du 命令也可以做类似的事情,可以看看 《查找 Linux 系统中的占用磁盘空间最大的前 10 个文件或文件夹》 文章。

    心跳包
  • 2019Java面试宝典 -- JavaWeb框架篇

    1、Struts2 是类级别的拦截,一个类对应一个 request 上下文,SpringMVC 是方法级别的拦截,一个方法对应一个 request 上下文,而方...

    浩Coding

扫码关注云+社区

领取腾讯云代金券