• Git 基础


    配置

        配置信息

      $ git config --global user.name "Your name"

      $ git config --global user.email "eamilname@example.com"

      上述代码仅用运行一次

      若有项目需要单独指定,则去掉  --global 配置即可

        查看配置信息

      查看所有:$ git config --list

      查看单个:$ git config <perperty_name>

        更改文本编辑器

      默认Git 使用的是Vim,可以更换:

        $ git config --global core.editors <editor_name>

    准备工作

        当前目录初始化新仓库

      $ git init

      初始化后,当前目录出现一个.git目录,存放git 需要的数据和资源

      $ git init <file-path>

      指定在哪一个目录中初始化

        获取帮助

      windows 平台测试会给你下载一个html文档,可能和我设置有关系

      $ git help <verb>

      $ git <verb> --help

      $ man git-<verb>

        工作流

      你的本地仓库由 git 维护的三棵“树”组成。

      第一个是你的 工作目录,它持有实际文件;

      第二个是 暂存区(Index 或叫 Stage),它像个缓存区域,临时保存你的改动;

      最后是 HEAD,它指向你最后一次提交的结果。

    基础操作

        添加和提交

      查看差异:$ git diff <file_name> 在 git add 之前才有效

      添加:$ git add <file-name> 或 $ git add * 会先暂存到暂存区

      提交:$ git commit -m "代码提交信息" 会提交到HEAD,但是还没有到达远端仓库

      查看 commit 历史:$ git log [--pretty=oneline]

      查看命令历史:$ git reflog

        回滚

      回退到之前版本:$ git reset --hard HEAD~<number> number可以填写要回退到前第几个版本,

        另外一种方法:$ git reset --hard HEAD^^^^ 退几个版本就写几个^这里不知道为啥不可用,可能是CMD问题

      从之前版本再返回来:$ git reset --hard <commit_id>

        如果不知道 commit_id 可以通过查看命令历史:$ git reflog 获取

        所以 git commit 时,写好注释很重要

      删除修改:

        add 之前:$ git checkout -- <file>

        add 之后:$ git reset HEAD <file>

        删除文件

      先从本地删除:$ rm <file_name>  

      从版本库删除:$ git rm <file>

    远程仓库

        准备工作

      创建SSH Key:$ ssh-keygen -t rsa -C "YourEmail@example.com" 

        在c:/users/basil/.ssh 目录,其中有id_rsa 和:id_rsa.pub,分别是私钥和公钥

      关联远程库:$ git remote add origin git@server-name:path/repository-name.git

      第一次推送master分支:$ git push -u origin master 

      之后推送:$ git push orgin master 

        克隆

       $ git clone <url>

      举例:$ git clone git://github.com/schacon/grit.git

      $ git clone <url> <repo>

     查看远程库

      $ git remote [-v]

    分支

        用途

      将特性开发绝缘开来。创建时默认是master 分支。

            在其它分支上开发,然后再把它们合并到master 分支。

     创建

        $ git checkout -b <branch_name>

        相当于两个命令:$ git branch <branch_name>                

                $ git checkout <branch_name>

     查看

        $ git branch 

     切换

        $ git checkout <branch_name>

     删除

        $ git branch -d <branch_name>

        $ git branch -D <branch_name>  强制删除

     合并

        $ git merge <branch_name>  在master分支上操作

     

     推送分支到远端

        $ git push origin <branch_name>  不推送则远端不可见

     拉取远端分支

        $ git pull <remote> <branch>

        $ git branch --set-upstream branch-name origin/branch-name 

        Bug 分支

        场景描述:

          应用出了bug,但是现在工作在dev分支,且未作完,

          需要先保存当前的dev分支,$ git stash <branch_name>

          然后切换master分支,

          从master分支创建issue分支,在issue分支修复bug,

          然后通master合并,

          再返回dev分支工作。

            查看保存的dev分支

              $ git stash list

            恢复现场的两种方法

              $ git stash apply  恢复后,不删除stash,删除需要 $ git stash drop

              $ git stash pop  恢复后,删除stash

            保存多个stash的恢复方法

              $ git stash list  查看stash

              $ git stash apply@{0}

      变基:就是把提交历史分叉的重新整合到一条线。

        $ git rebase

      打标签以便于查找

        $ git tag  查看所有标签

        $ git tag <name> [commit_id]  打一个新标签[给commit_id]

        查看标签内容:$ git show <tagname>

        创建带有说明的标签:$ git tag -a <tagname> -m "something" <commit_id> 

        删除标签:$ git tag -d <tagname> 

        推送标签到远程:$ git push origin <tagname>  只推送单个标签

                $ git push origin --tags  推送所有的标签 

    参考资料

      git 简明指南

       Git-Book

      Git 教程

    上一篇

      Git学习第一天--安装Git和创建版本库

  • 相关阅读:
    python类库31[正则表达式匹配实例]
    Mysql百万级数据迁移实战笔记
    面试官:一千万数据,怎么快速查询?
    为什么MySQL不建议使用NULL作为列默认值?
    Redis各个数据类型最大存储量
    Rabbitmq延迟队列实现定时任务
    PHPstorm批量修改文件换行符CRLF为LF
    使用SeasLog打造高性能日志系统
    协程编程注意事项
    Rabbitmq 安装过程中常见问题(亲测可行)
  • 原文地址:https://www.cnblogs.com/basilguo/p/git_day2.html
Copyright © 2020-2023  润新知