GIT笔记

作者: output | 来源:发表于2017-02-12 03:52 被阅读9次

    Git教程-廖雪峰

    Git简介

    分布式vs集中式

    git是版本控制系统,与svn不同的是git是分布式,svn是集中式

    Paste_Image.png
    Paste_Image.png

    安装

    简单设置

    配置文件
    .git/config 当前仓库的配置文件
    ~/.gitconfig 全局配置
    
    设置别名
    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
    
    设置用户名和邮箱
    git config --global user.name "xxx"
    git config --blobal user.email "xxx@xxx.com"
    

    创建版本库

    创建版本库

    cd learngit
    git init
    # 在某目录下执行命令 git init 后
    # 该目录会生成一个.git的隐藏文件夹,这个目录就是一个版本库了
    # 所有版本控制系统只能跟踪文本文件的发动(如TXT文件中删除了第4行,而二进制文件作为一个整体)
    # 统一用UTF-8编码
    

    添加一个文件到暂存区(Stage)

    vi readme.txt
    git add readme.txt
    

    将文件提交给HEAD

    git commit -m 'my first commit'
    

    时光穿梭

    工作区与版本库

    当前文件夹是工作区
    .git文件夹是版本库
    创建版本库是,自动创建了一个master分支
    工作区--暂存区(stage/index)--当前分支(master)--远程库

    Paste_Image.png

    查看仓库中文件的状态

    git status
    # 通过该命令可以清楚的了解当前版本库中的文件处于什么状态
    

    文件的比较(只能比较工作区/Stage中的文件与Head中的不同)

    git diff readme.txt
    # 比较的是工作区与Stage中readme.txt的差异
    
    git diff HEAD -- readme.txt
    # 比较的是工作区与版本库(HEAD)中的readme.txt的差异
    # HEAD 当前版本
    # HEAD^ 上一版本
    # HEAD^^ 上上版本
    # HEAD~100 往上100个版本
    

    查看提交历史

    git log
    git log --pretty=oneline
    
    git reflog
    # 查看执行的每一条命令
    

    版本回退

    git reset --hard HEAD^
    git reset --hard comment_id(ID号,前7位就可以)
    

    撤销修改

    工作区----暂存区----当前分支
    git checkout -- readme.txt
    # 撤销工作区的修改
    # 暂存区的内容覆盖工作区(丢弃工作区的修改)
    # 没有--,该命令就是切换分支的命令了
    
    git reset HEAD readme.txt
    # 撤销暂存区的修改
    # 版本库的内容覆盖暂存区(丢弃暂存区的修改)
    
    git reset --hard HEAD^
    # 撤销版本库的修改,版本回退
    

    暂存区修改

    # 这样一种场景:工作区,暂存区,版本库里内容一样,类似.project类似这种eclipse的项目配置文件也存在于版本控制中,现在把.project这类文件加入到忽略名单后
    
    git rm --cached .project
    # 这个命令是把.project从暂存区中删除
    git commit -m "delete .project"
    # 提交暂存区
    

    删除文件

    git rm readme.txt
    # 与如下两个命令等价
    rm readme.txt
    git add readme.txt
    
    git commit -m "delete"
    

    远程仓库

    免登录操作

    Windows下生成ssh-keygen
    1.安装Git
    2.打开Git Bash
    3.输入 ssh-keygen -t rsa -C "demo@gmail.com"
    
    Linux下生成ssh-key
    ssh-keygen -t rsa -C "demo@gmail.com"
    cat ~/.ssh/id_rsa.pub
    ~/.ssh/id_rsa  这是私钥
    ~/.ssh/id_rea.pub  这是公钥
    验证
    ssh -T git@git.oschina.net
    

    关联远程库

    git remote add origin git@github.com:demo/learngit.git
    # 把本地仓库与远程仓库相关联
    # demo:github账户名
    # origin:远程库的名字
    

    查看远程库

    git remote
    git remote -v
    

    推送到远程库

    git push -u origin master
    # 把本地所有内容推送到远程库上
    # -u参数,不但会把本地master分支推送到远程master分支,还会把本地master分支与远程master分支相关联
    # 第一次推送用-u,以后用就可以不用了
    git push origin master
    

    从远程库抓取

    git pull origin master
    

    从远程库克隆

    git clone git@github.com:demo/gitskills.git        ssh协议,速度快
    git clone https://github.com/demo/gitskills.git    https协议
    

    分支管理

    分支操作

    git branch   // 查看当前分支
    git branch dev  // 创建分支dev
    git checkout dev // 切换到分支dev
    git checkout -b dev // 创建并切换到分支dev
    git merge dev // 合并指定分支(dev)到当前分支
    
    删除分支dev
    git merge -d dev // 如果分支有未提交的这样删除不了
    git merge -D dev // 强制删除
    
    查看分支合并情况
    git log --pretty=oneline --graph --abbrev-commit
    
    master转gh-pages
    创建一个没有父节点的分支gh-pages
    git checkout --orphan gh-pages
    
    
    

    标签管理

    使用GitHub

    自定义Git

    # 如果一个jar文件已经加到忽略文件里边了
    # 想把一个jar文件添加到版本库
    git add -f aaa.jar
    

    相关文章

      网友评论

          本文标题:GIT笔记

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