zoukankan      html  css  js  c++  java
  • 版本控制[0] -> git -> 使用 git 进行版本控制

    版本控制 / Version Control


    目录

    1. git-版本控制 / git-Version Control
    2. git-常用命令 / git-Freq Command
    3. git-文件忽略 / git-.gitignore
    4. git-自动补全 / git-Auto Completion
    5. git-衍合原则 / git-Rebase Principle
    6. git-回滚仓库 / git-Reset Repository
    7. git-重命名分支 / git-Rename Branch

    1 git-版本控制 / git-Version Control

    关于 Git 教程及理念可参考 Git 的手册 Pro Git,关于git分支的理解可参考第三章,其本质为指针对象。

    2 git-常用命令 / git-Freq Command

    基本配置

    git config --global user.name "KE LI"                           设置全局用户名

    git config --global user.email "keli@example.com"      设置全局邮箱

    git config --list                                                          查看配置信息

    基本操作

    git help <verb>                                                         查看<verb>使用方法

    git init                                                                       初始化新的git仓库

    git add .                                                                    添加所有文件

    git add <filename>                                                    添加指定文件

    git commit -m"<description>"                                 提交修改操作

    git commit -a                                                            跳过git add提交,可连用-m

    git commit --amend                                                   修改上次提交(补充漏加文件等)

    git clone <url> [<dirname>]                                     从远程仓库进行克隆

    git status                                                                  查看当前目录状态

    git diff[ cached/staged]                                                查看[暂存]更改差异

    git rm --cached <filename>                                         移除缓存区文件,保留源文件

    git mv <file_from> <file_to>                                      改名操作

    git log[ -p -2]                                                            查看提交历史,-p展开,-2查看两条

    git log --graph                                                          查看提交分支图

    git reset HEAD <filename>                                            取消暂存的文件(git add之后)

    git checkout -- <filename>                                           撤销对指定文件的修改

    远程仓库

    git remote[ -v]                                                           查看远程仓库[-v为地址]

    git remote add [shortname] [url]                              添加一个远程仓库,并命名

    git remote show [remote-name]                                   查看某个远程仓库的信息

    git remote rename <from_name> <to_name>                远程仓库改名

    git remote rm <remote-name>                                     移除远程仓库

    git fetch [remote-name]                                             从远程仓库抓取数据

    git push [remote-name] [branch-name]                   推送数据到远程仓库

    git push [remote-name] <from_branch>:<to_branch>   上传分支并命名为<to_branch>

    git push [remote-name] :<to_branch>                     删除远程分支

    标签

           git tag                                                                          显示所有标签

           git tag -l "v1.4.2.*"                                                     显示v1.4.2系列标签

           git tag -a <tag-name>[ -m "Comments"]                      创建标签

           git tag -d <tag-name>                                                 删除标签

    分支

           git branch                                                                    查看分支清单

           git branch <branch-name>                                          创建分支

           git branch -d <branch-name>                                      删除分支

           git branch --merged/no-merged                                   查看已经/尚未与当前分支合并分支

           git checkout <branch-name>                                    切换分支

           git checkout -b <branch-name>                               新建并切换分支

           git merge <branch-name>                                        合并分支(分支单线可到达时为FW)

           git cherry-pick <commit-id>                                    获取某次提交的特性合并至当前

    分支衍合

           git rebase <branch-name>                                          衍合分支,如在branch,rebase master

           git rebase [onto_b] <from_b>                                     衍合分支,from_b到onto_b

           git rebase --onto <onto_b> <skip_b> <from_b>           将from_b跳过skip_b衍合到onto_b

    版本回退

           git reset --hard/soft head^                                           回退到前一个版本(^),head指当前

           git reset --hard/soft head~x                                         回退到前x个版本

           git reset --hard id                                                       回退到id版本,git reflog查看

           git reset --hard <filename>                                          撤回文件添加add(暂存区—>工作区)

    3 git-文件忽略 / git-.gitignore

    .gitignore文件的创建

    使用git bash,在命令行输入touch .gitignore生成一个.gitignore文件

    .gitignore文件的格式规范

    1. 所有空行或者以注释符号 # 开头的行都会被 Git 忽略;

    2. 可以使用标准的 glob 模式匹配;

    3. 匹配模式最后跟反斜杠(/)说明要忽略的是目录;

    4. 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反;

    Note: 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。

    星号(*)匹配零个或多个任意字符;

    [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个a,要么匹配一个b,要么匹配一个c);

    问号(?)只匹配一个任意字符;

    如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

     

    4 git-自动补全 / git-Auto Completion

    如果在 Windows 上安装了 msysGit,默认使用的 Git Bash 就已经配好了这个自动补全脚本,可以直接使用。

    在输入 Git 命令的时候可以敲两次跳格键(Tab),就会看到列出所有匹配的可用命令建议:

    $ git co<tab><tab>  
        commit config  

    此例中,键入 git co 然后连按两次 Tab 键,会看到两个相关的建议(命令) commit 和 config。继而输入 m<tab> 会自动完成 git commit 命令的输入。

    命令的选项也可以用这种方式自动完成,其实这种情况更实用些。比如运行 git log 的时候忘了相关选项的名字,可以输入开头的几个字母,然后敲 Tab 键看看有哪些匹配的:

    $ git log --s<tab>  
         --shortstat --since= --src-prefix= --stat --summary  

    5 git-衍合原则 / git-Rebase Principle

    在git的衍合中,需遵循以下原则,详细细节参考Pro Git 3.6节:

    一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。

    6 git-回滚仓库 / git-Reset Repository

    Note: 回滚仓库将会对整个项目造成很大的影响,在回滚之前请做好确认工作。

    回滚远程仓库主要有以下几种情况,可参见链接

    此处介绍删除最后一次/多次提交,这种情况只需要两步,

    git revert HEAD^  
    git push origin master  

    此外,若使用reset回滚,则push时需加上-f参数,进行强制提交,因为此时本地仓库落后于远程仓库。

    git reset HEAD^  
    git push origin master -f  

    Note: revert和reset的区别,在于revert会放弃指定提交的修改,但是会生成一个新的提交,以前的历史记录也都存在,而reset则将HEAD指针直接指向某次提交,历史记录中不会出现放弃提交记录

    也可使用不同的参数,进行多次回滚或回滚至特定的提交处。

    7 git-重命名分支 / git-Rename Branch

    在git中若需要对分支进行重命名可以通过一些步骤实现,

    1. push当前分支到新的远程分支;
    2. checkout到新的分支;
    3. 删除旧的远程分支;
    4. 删除旧的本地分支。
    git push origin <old branch>:<new branch>  
    git checkout <new branch>  
    git push :<old branch>  
    git branch -d <old branch>  

    参考链接


    http://git.oschina.net/progit/

    https://zhidao.baidu.com/question/2053485325521871027.html

  • 相关阅读:
    Linux硬盘分区方案
    mysql笔记四:索引查询及处理
    thread 学习笔记
    mysql笔记二:基本数据库、表查询操作
    linux 自学系列:监测端口占用情况
    linux 自学系列:命令行传输文件
    mysql笔记三:基本数据库、表创建更新操作
    mysql笔记五:权限管理
    threading源代码问题,为什么要将引入的变量del?
    linux 自学系列:更改系统语言编码
  • 原文地址:https://www.cnblogs.com/stacklike/p/8167314.html
Copyright © 2011-2022 走看看