zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    c++ stl algorithm: std::find, std::find_if
    mysql---多表关联
    使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象
    Nexon由Xsolla全球支付服务
    configure.ac:20: error: Autoconf version 2.65 or higher is required
    的无线通信网络的学习LTE的关键技术HARQ(20141217)
    JAVA 公众微信的开放源码项目管理合作伙伴招募的版本号
    【工具】JAVA 在单元读取文件并比较
    linux下如何编译python生成libpython2.5.so动态库
    将主机IDS OSSEC日志文件存入MYSQL的方法
  • 原文地址:https://www.cnblogs.com/almm/p/13541847.html
Copyright © 2011-2022 走看看