zoukankan      html  css  js  c++  java
  • 转 从 SourceTree 切回命令行git操作

    https://www.cnblogs.com/gwf93/p/15190193.html

    一、git 常见概念

      1、工作区 (working directory),工作的区域。对于git而言,就是的本地工作目录。工作区的内容会包含提交到暂存区和版本库(当前提交点)的内容,同时也包含自己的修改内容。

      2、暂存区(stage area, 又称为索引区index)。修改提交版本库前的一个过渡阶段。查看GIT自带帮助手册的时候,通常以index来表示暂存区。在工作目录下有一个.git的目录,里面有个index文件,存储着关于暂存区的内容。git add命令将工作区内容添加到暂存区。

      3、本地仓库(local repository),版本控制系统的仓库,存在于本地。当执行git commit命令后,会将暂存区内容提交到仓库之中。在工作区下面有.git的目录,这个目录下的内容不属于工作区,里面便是仓库的数据信息,暂存区相关内容也在其中。这里也可以使用merge或rebase将远程仓库副本合并到本地仓库。图中的只有merge,注意这里也可以使用rebase。

      4、远程版本库(remote repository),与本地仓库概念基本一致,不同之处在于一个存在远程,可用于远程协作,一个却是存在于本地。通过push/pull可实现本地与远程的交互;

      5、远程仓库副本,可以理解为存在于本地的远程仓库缓存。如需更新,可通过git fetch/pull命令获取远程仓库内容。使用fech获取时,并未合并到本地仓库,此时可使用git merge实现远程仓库副本与本地仓库的合并。git pull 根据配置的不同,可为git fetch + git merge 或 git fetch + git rebase。

    二、常见 git 命令

    复制代码
    新增文件:git add <name> 添加指定文件 或者  git add .   添加全部文件

    提交文件:git commit -m 或者 git commit -a ( 相当于git add + git commit -m )

    查看工作区状态:git status 或者 git status -s / --short 更精简的格式展示状态

    合并指定分支到本地: git merge <name>

    拉取分支:git pull 或者 git fetch

    查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name>或者git switch <name> 创建+切换分支:git checkout -b <name>或者git switch -c <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name>

    分支合并情况:git log

    分支提交情况:git l 或者 git lg 或者 git llg 展示不同层次下的信息 依次深入到当前分支

    查看分支合并图:git log --graph

    复制代码

    ① git pull 和 git fetch 的区别 (分布式的版本管理系统)

    ② git merge 和 git rebase的区别

      git merge(一股脑)使用merge命令合并分支,解决完冲突,执行git add .git commit -m'fix conflict'。这个时候会产生一个commit。

      git rebase(交互式)使用rebase命令合并分支,解决完冲突,执行git add .git rebase --continue,不会产生额外的commit。这样的好处是,‘干净’,分支上不会有无意义的解决分支的commit;坏处,如果合并的分支中存在多个commit,需要重复处理多次冲突。

    ③ git merge --no-ff 和 git merge

      --no-ff  表示强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

      比如 我从test1上新建两个分支 test2 和 test3,分别在两个分支上添加一些提交,然后分别使用 git merge --no-ff -m 'merge2' test2 和 git merge test3,提交之后,把两个分支删除,这个时候,test1的提交历史里,就只有test2的分支合并信息,并没有test3的合并commit。

  • 相关阅读:
    Head of a Gang
    如何实现可以获取最小值的栈?
    多项式函数的极值点与拐点判别及个数公式
    解决Windows10下小娜无法搜索本地应用的问题
    Oracle中常用的语句
    [HTML]在页面中输出空格的几种方式
    [JavaScript]JS中的变量声明与有效域
    JAVA中时间格式转换
    Context initialization failed org.springframework.beans.factory.BeanCreationException
    Spring整合Mybatis SQL语句的输出
  • 原文地址:https://www.cnblogs.com/dhjy123/p/15439696.html
Copyright © 2011-2022 走看看