美文网首页
GIT 总结

GIT 总结

作者: VincentLeon | 来源:发表于2020-03-23 17:49 被阅读0次

    1、最核心的区别Git是分布式的,而SVN属于集中化的版本控制系统。

    2、Git把内容按元数据方式存储,而SVN是按文件:因为.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。.git目录的体积大小跟.svn比较,你会发现它们差距很大。

    3、Git没有一个全局版本号,而SVN有:目前为止这是跟SVN相比Git缺少的最大的一个特征
    ————————————————
    Git使用

    一、Git 常用指令
    1、$ git init                               // 通过git init命令把当前目录变成Git可以管理的仓库
    2、$ git clone url                     // 使用 git clone 拷贝一个 Git 仓库到本地
    3、$ git add  -u                     // 添加文件到暂存区
    4、$ git commit -a                    // 把暂存区的所有修改提交到分支
    5、$ git status                      // 显示所有变更信息
    6、$ git diff                        // 显示工作区所有修改文件的内容
    7、$ git diff --cached               // 显示暂存区所有修改文件的内容
    8、$ git log                         // 显示当前分支的版本历史
    9、$ git show "git 版本号"            // 显示当前版本所修改的内容
    10、$ git reflog                     // 显示当前分支的最近几次提交
    11、$ git remote -v                  // 显示所有远程仓库
    12、$ git pull [remote] [branch]     // 取回远程仓库的变化,并与本地分支合并
    13、$ git push [remote] [branch]     // 上传本地指定分支到远程仓库
    14、$ git checkout [file]            // 恢复暂存区的指定文件到工作区
    15、$ git checkout [commit] [file]   // 恢复某个commit的指定文件到暂存区和工作区
    16、$ git checkout                   // 恢复暂存区所有文件到工作区
    17、$ git reset [file]               // 重置暂存区的指定文件,与上一次commit保持一致,工作区不变
    18、$ git reset --hard               // 重置暂存区与工作区文件,与上一次commit保持一致
    19、$ git merge                      // 合并分支
    20、$ git branch --set-upstream_to = [路径]     // 关联远程分支
    21、$ git commit --amend                       // 修改上一次提交
    22、$ git remote update                        // 更新远程分支在本地显示
    23、$ git remote prune [远程分支项目]           // 清除远程分支在本地无效分支
    24、$ git push origin [本地新建分支]            // git本地分支给远程仓库创建该分支
    25、$ git branch -D br                        // 删除本地分支
    26、$ git push origin :br                     // 删除远程分支
    27、$ git branch                              // 查看本地分支
    28、$ git branch -r                           // 查看远程分支
    29、$ git branch -a                           // 查看所有分支(本地+远程)
    30、$ git branch [新分支名]                    // 创建分支
    31、$ git checkout [分支名]                    // 切换分支
    32、$ git checkout -b [分支名]                 // 创建新分支并切换到该分支下
    33、$ git stash                               // 将工作区所修改的文件缓存到队列
    34、$ git stash list                          // 查看缓存队列
    35、$ git stash pop                           // 从队列中恢复
    36、$ git stash drop stash@{0}                // 这是删除第一个队列
    37、$ git stash clear                         // 删除所有队列缓存内容
    

    Git常见面试题

    1、fetch和merge和pull的区别

    pull相当于git fetch 和 git merge,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支。
    git fetch:相当于是从远程获取最新版本到本地,不会自动merge
    git merge : 将内容合并到当前分支
    git pull:相当于是从远程获取最新版本并merge到本地

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

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

    3、fork、 branch、clone 之间的区别

    fork:是对存储仓库(repository)进行的远程的,服务器端的拷贝。复刻不是git范畴。
    clone:不是复刻,克隆是对某个远程仓库的本地拷贝。克隆时,实际上是拷贝整个存储仓库,包括所有的历史记录和分支。
    branch:是一种机制,用于处理单一存储仓库中的变更,并最终目的是用于与其他部分代码合并。

    4、pull request 和branch之间有什么区别

    branch:代码的一个独立版本。
    pull repuest:拉取请求:是当有人用仓库,建立了自己的分支,做了些修改并合并到该分支(把自己修改应用到别人的代码仓库)。

    5、Git恢复先前的提交

    git reset –hard HEAD~1

    6、git cherry-pick

    命令git cherry-pick 通常用于把特定提交从存储仓库的一个分支引入到其他分支中。常见的用途是从维护的分支到开发分支进行向前或回滚提交。
    合并(merge) 变基(rebase)

    7、forking的工作流程的优点

    它不是用单个服务端仓库充当“中央”代码库,而是为每个开发者提供自己的服务端库。forking工作流程最常用于公共开源项目中。
    Forking工作流程的主要优点是可以汇集提交贡献,又无需每个开发者提交到一个中央仓库中,从而实现干净的项目历史记录。开发者可以推送代码到自己的服务端仓库,而只有项目维护人员直接推送代码到官方仓库中。
    当开发者准备发布本地提交时,他们的提交会推送到自己的公共仓库中,而不是官方仓库中。
    然后他们向主仓库请求拉取(pull request),这会告知项目维护人员由可以集成的更新。

    8、git中 HEAD、工作树和索引之间的区别

    head:是当前检出分支的最后一次提交的引用或指针。
    该索引/中转区(staging area)是个在/.git/index,单一的,庞大的二进制文件,该文件中列出了分支中所有文件的校验和,时间戳和文件名,它不是个带有文件副本的目录。
    工作树/工作目录/工作空间是你看到的和编辑的(源)文件的目录树。

    9、解释下Gitflow工作流程

    Gitflow工作流程使用两个并行的、长期运行的分支来记录项目的历史记录,分别是master和develop分支。
    Master,随时准备发布线上版本的分支,其所有内容都是经过全面测试和核准的(生产就绪)。
    Hotfix,维护(maintenance)或修复(hotfix)分支是用于给快速给生产版本修复打补丁的。修复(hotfix)分支很像发布(release)分支和功能(feature)分支,除非它们是基于master而不是develop分支。
    Develop,是合并所有功能(feature)分支,并执行所有测试的分支。只有当所有内容都经过彻底检查和修复后,才能合并到master分支。
    Feature,每个功能都应留在自己的分支中开发,可以推送到develop分支作为功能(feature)分支的负分之。
    ————————————————
    版权声明:本文为CSDN博主「IT_Milo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/IT_Milo/article/details/83006859

    相关文章

      网友评论

          本文标题:GIT 总结

          本文链接:https://www.haomeiwen.com/subject/qnkayhtx.html