zoukankan      html  css  js  c++  java
  • 【转】Git命令解说

    3.12. Git branch 
    3.12.1. 总述 
      当第一次执行git init时,系统就会创建一个名为“master”的分支。 而其它分支则通过手工创建。 
    下面列举一些常见的分支策略: 
      创建一个属于自己的个人工作分支,以避免对主分支 master 造成太多的干扰,也方便与他人交流协作; 
      当进行高风险的工作时,创建一个试验性的分支; 
      合并别人的工作的时候,最好是创建一个临时的分支用来合并,合并完成后再“fetch”到自己的分支。 
      对分支进行增、删、查等操作。 
      注意:分支信息一般在.git/refs/目录下,其中heads目录下为本地分支,remotes为对应服务器上的分支,tags为标签。 
    3.12.2. 查看分支 
           git branch 列出本地git库中的所有分支。在列出的分支中,若分支名前有*,则表示此分支为当前分支。 
           git branch –r 列出服务器git库的所有分支。 
    (可以继续使用命令 “ git checkout -b 本地分支名 服务器分支名”来获取服务器上某个分支的代码文件)。 
    3.12.3. 查看当前在哪个分支上 
           cat .git/HEAD 
    3.12.4. 创建一个分支 
    1) git branch 分支名 
      虽然创建了分支,但是不会将当前工作分支切换到新创建的分支上,因此,还需要命令“git checkout 分支名” 来切换, 
    2) git checout –b 分支名 
      不但创建了分支,还将当前工作分支切换到了该分支上。 
    3.12.5. 切换到某个分支

        git checkout 分支名 
      切换到主分支:

        git checkout master 
    3.12.6. 删除分支 
           git branch –D 分支名 
    注意: 删除后,发生在该分支的所有变化都无法恢复。强制删除此分支。 
    3.12.7. 比较两个分支上的文件的区别 
           git diff master 分支名 (比较主分支和另一个分支的区别) 
    3.12.8. 查看分支历史 
           git-show-branch (查看当前分支的提交注释及信息) 
           git-show-branch -all(查看所有分支的提交注释及信息)

    3.12.9. 查看当前分支的操作记录 
           git whatchanged 
    3.12.10. 合并分支 
    法一: 
           git merge “注释” 合并的目标分支 合并的来源分支 
    如果合并有冲突,git会有提示。 
    例如:git checkout master   (切换到master分支) 
           git merge HEAD dev~2 (合并master分支和dev~2分支)或者:git merge master dev~2 
    法二: 
           git pull 合并的目标分支 合并的来源分支 
    例如: git checkout master (切换到master分支) 
           git pull . dev~2(合并当前分支和dev~2分支)

    3.14. Git reset 
      库的逆转与恢复除了用来进行一些废弃的研发代码的重置外,还有一个重要的作用。比如我们从远程clone了一个代码库,在本地开发后,准备提交回远程。但是本地代码库在开发时,有功能性的commit,也有出于备份目的的commit等等。总之,commit的日志中有大量无用log,我们并不想把这些 log在提交回远程时也提交到库中。 因此,就要用到git reset。 
           git reset的概念比较复杂。它的命令形式:git reset [--mixed | --soft | --hard] [<commit-ish>] 
    命令的选项: 
           --mixed 这个是默认的选项。如git reset [--mixed] dev^(dev^的定义可以参见2.6.5)。它的作用仅是重置分支状态到dev1^, 但是却不改变任何工作文件的内容。即,从dev1^到dev1的所有文件变化都保留了,但是dev1^到dev1之间的所有commit日志都被清除了, 而且,发生变化的文件内容也没有通过git add标识,如果您要重新commit,还需要对变化的文件做一次git add。 这样,commit后,就得到了一份非常干净的提交记录。 (回退了index和仓库中的内容) 
           --soft相当于做了git reset –mixed,后,又对变化的文件做了git add。如果用了该选项, 就可以直接commit了。(回退了仓库中的内容) 
           --hard这个命令就会导致所有信息的回退, 包括文件内容。 一般只有在重置废弃代码时,才用它。 执行后,文件内容也无法恢复回来了。(回退了工作目录、index和仓库中的内容) 
    例如: 
    切换到使用的分支上; 
           git reset HEAD^ 回退第一个记录 
           git reset HEAD~2 回退第二个记录 
    如果想把工作目录下的文件也回退,则使用git reset - - hard HEAD^ 回退第一个记录 
           git reset - - hard HEAD~2 回退第二个记录 
    还可以使用如下方法: 
    将当前的工作目录完全回滚到指定的版本号,假设如下图,我们有A-G五次提交的版本,其中C的版本号是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我们执行了'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么结果就只剩下了A-C三个提交的版本 
    clip_image004[5]

    【转自】http://blog.csdn.net/hangyuanbiyesheng/article/details/6731629

  • 相关阅读:
    jeecg多页签的选择切换
    设计模式:工厂三姐妹一网打尽
    设计模式:工厂三姐妹一网打尽
    设计模式:工厂三姐妹一网打尽
    设计模式:工厂三姐妹一网打尽
    三、原子操作
    三、原子操作
    三、原子操作
    三、原子操作
    WebClient HttpWebRequest从网页中获取请求数据
  • 原文地址:https://www.cnblogs.com/meizixiong/p/3218844.html
Copyright © 2011-2022 走看看