首页 > 其他 > 详细

Git 笔记

时间:2019-12-15 22:39:46      阅读:168      评论:0      收藏:0      [点我收藏+]

Git 笔记

Git教程|廖雪峰的官方网站

精通Git(第2版). Pro Git, Second Edition.

基础

入门

初始

  • 创建/初始化一个 git 仓库

    # 在某文件夹下执行
    git init
    # 执行完后,目录下多了个 .git 文件夹

提交

  • 暂存:把文件添加到仓库,以使此文件可被 git 追踪,或提交文件到暂存区

    git add <filename>
  • 提交:将修改提交到仓库

    # 必须输入信息以提交修改
    git commit -m <message>
    # 或 唤起文本编辑器编辑信息以提交修改
    git commit
    # 将工作区的修改跳过暂存区直接提交
    git commit -a

查看

  • 查看当前状态,可查看所在分支、涉及修改的文件

    git status
    # 精简方式查看
    git status -s
    # 显示的结果左侧有两列,左列标明文件是否暂存,右列标明文件是否修改
    
    # 如果有文件被修改,查看 filename 的修改情况
    git diff <filename>
  • 查看提交记录

    git log
    # 显示信息太多?可以试试下面的命令,每条记录只在一行中显示
    git log --pretty=oneline

回退

  • 回退

    # 回退一步
    git reset --hard HEAD^
    # 回退两步
    git reset --hard HEAD^^
    # 回退100步
    git reset --hard HEAD~100
    # 回退到指定版本
    # git reset --hard <commit_id>
    git reset --hard 1094a
  • 查看操作记录,比如可以查看回退的操作记录,回退之后反悔可用

    git reflog

概念

工作区(Working Directory):文件夹下能看到的目录

暂存区(stage/index):一般在 .git/index 中

版本库(Repository):指 .git 文件夹

master分支、HEAD

          git add                git commit
           ---->                    ---->
工作区 ------------------ 暂存区 --------------- 版本库
                 <----
丢弃工作区     暂存区回到工作区
git checkout   git reset

进一步

查看修改

  • 查看工作区的修改

    # 查看工作区的修改,即未暂存的修改,// 比较工作区和暂存区
    git diff
    git diff <filename>
  • 查看暂存区的修改

    # 查看暂存区的修改,即将会被提交的内容
    git diff --cached
    # or
    git diff --staged
    
    ???# 比较工作区和版本库
    ???git diff HEAD -- <filename>

撤销

  • 修改上一次的提交信息

    git commit --amend
  • 撤销暂存区修改

    # 撤销已暂存的文件,仅将修改由暂存区转到工作区,不会丢失修改的内容
    git reset
    git reset HEAD <filename>
  • 撤销工作区修改

    # 撤销工作区中对文件的修改,会丢失修改的内容
    git checkout -- <filename>

删除

  • 删除文件

    # (此变更即被保存到暂存区)
    # 删除文件且取消对文件的跟踪
    git rm <filename>
    # 在资源管理器中删除需使用 git add 才能得到 git rm 的效果
    
    # 仅取消对文件的跟踪,不删除文件,
    git rm --cached <filename>

 移动文件

  • 移动文件/重命名

    git mv <file_from> <file_to>

远程仓库

这是与 SVN 有差别的地方

初始

  • 本地有仓库,需要关联远程仓库

    git remote add [shortname] [url]
    git remote add origin git@github.com:<github_username>/<respo_name>.git
  • 本地无仓库,从 github 上 clone 到本地

    git clone <git_url>

    Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

    Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

    使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https

获取数据

  • fetch

    # 从远程仓库获取所有本地仓库没有的数据,需手动合并到本地
    git fetch [remote-name]
  • pull

    # 自动获取远程数据,并合并到本地
    # 相当于 git fetch 与 git merge 的组合
    git pull

推送数据

  • 第一次推送到远程仓库

    git push -u origin master
    # -u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
  • 以后本地提交后,推送到远程仓库

    git push origin master

分支

标签

  • 查看

    # 列举标签
    git tag
    # 查看某标签
    git show <tag>
  • 创建

    • 注释标签(annotated)(推荐)

      git tag -a <tagname> [-m <msg>]
      git tag -a v1.4 -m "my version 1.4"
    • 轻量标签(lightweight)

      git tag v1.4-lw
    • 补加标签

      在之前的某次提交时添加标签

      git tag -a <tagname> <commit>
  • 共享标签

    git push默认不推送标签到远程服务器上,需要手动推送

    git push origin <tagname>
    # 推送所有tag
    git push origin --tags

其他

忽略文件

.gitignore 文件

规则:

  • 空行或#开头的行会被忽略
  • 以斜杠(/)开头的模式禁止递归匹配
  • 以斜杠(/)结尾的模式表示目录
  • 以感叹号(!)开始的模式表示取反
  • 支持标准的glob模式
    • 星号(*)匹配零个或更多字符
    • 方括号([])匹配其中的任意单个字符
    • 问号(?)匹配任意单个字符

GitHub 维护了一份相当全面的 .gitignore 参考实例列表 https://github.com/github/gitignore

Git 笔记

原文:https://www.cnblogs.com/bfjdbcs/p/12046112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!