Git/GitHub学习 _8.7

程序员小白学习Git用法

runoob Git:http://www.runoob.com/git/git-tutorial.html
runoob Github:http://www.runoob.com/w3cnote/git-guide.html

  • What is git
    Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
    Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
    Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

  • 工作区、暂存区和版本库
    这里写图片描述

  • git创建仓库

    • git init:用 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。
  • git基本操作

    • git clone:使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。
    • git add:git add 命令可将该文件添加到缓存。
      • gid add. 添加当前项目中的所有文件。
      • git status 命令用于查看项目的当前状态。
        • A: 你本地新增的文件(服务器上没有)
        • C: 文件的一个新拷贝.
        • D: 你本地删除的文件(服务器上还在).
        • M: 文件的内容或者mode被修改了.
        • R: 文件名被修改了
        • T: 文件的类型被修改了
        • U: 文件没有被合并(你需要完成合并才能进行提交)。
        • X: 未知状态(很可能是遇到git的bug了,你可以向git提交bug report)
        • ?:未被git进行管理,可以使用git add file1把file1添加进git能被git所进行管理
        • 在.git中创建新文件,git status=?的是未管理的文件,用git add可以添加到缓存区,然后git commit同步到仓库中。
    • git diff: 执行 git diff 来查看执行 git status 的结果的详细信息。
      • git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景:
      • 尚未缓存的改动:git diff
      • 查看已缓存的改动: git diff –cached
      • 查看已缓存的与未缓存的所有改动:git diff HEAD
      • 显示摘要而非整个 diff:git diff –stat
    • git commit: 使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中
    • git reset HEAD: 执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。(本次先不提交)
      • git rm: 要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。
        • git rm -f: 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项
        • git rm –cached: 如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 –cached 选项即可。
        • git rm -r *: 递归删除
      • git mv: git mv 命令用于移动或重命名一个文件、目录、软连接。
  • git分支管理

    • git branch: 列出分支
    • git branch (branchname):新建分支
      • git checkout -b (branchname) : 新建分支并切换到该分支下
      • git branch -d (branchname):删除分支
    • git checkout (branchname):切换分支
    • git merge:分支合并
      • 主分支未必是默认 master
      • 在主分支上执行: git merge (需要合并的branchname)
      • 合并冲突:合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。
        • 这里写图片描述
        • 系统默认把2个文件内容merge在1个文件中
          • 1 手动修改那个文件,并保存,此时通过git status看到的文件状态是UU
          • 2 git add filename,手动把该文件添加到缓存区,此时该文件状态是M
          • 3 git commit 手动commit
  • git查看提交历史
    • git log 查看所有变更历史
      • git log –online 查看每次迭代的内容,用desc描述
      • git log –reverse –oneline ,用 ‘–reverse’参数来逆向显示所有日志
      • git log –author=Linus –oneline -5, 指定作者
      • 指定日期,如果你要指定日期,可以执行几个选项:–since 和 –before,但是你也可以用 –until 和 –after。
    • https://git-scm.com/docs/git-log
  • git标签
    • 如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。
    • git tag
  • Github

    • github简明教程:http://www.runoob.com/w3cnote/git-guide.html
    • 绑定git repo:git remote add origin git@github.com:tianqixin/runoob-git-test.git
    • 提交到git:git push -u origin master
    • 查看当前有哪些远程库:git remote -v
    • 提取远程仓库:Git 有两个命令用来提取远程仓库的更新
      • 从远程仓库下载新分支与数据:git fetch。该命令执行完后需要执行git merge 远程分支到你所在的分支。
      • 从远端仓库提取数据并尝试合并到当前分支:git merge。该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支。
        • git fetch origin
        • git merge origin/master
    • 推送到远程仓库:git push [alias] [branch]
      • 先 git commit -m ‘value’ 到本地仓库
    • 删除远程仓库:git remote rm [alias]
      • alias 是在仓库创建时设置的,如:git remote add origin git@github.com:xxx.git
      • 删除后使用git remote -v 查看当前的仓库
  • git pull, fetch, clone的区别:

    • 第一次备份仓库,若目录下没有文件夹,直接clone
    • pull = fetch + merge
  • git rebase

Git Basic Concepts

https://www.kalvin.cn/video/user/id-RonaldoYaoqi.html

Repository

  • .git is so-called git repositor,存储变更记录,里面都是BLOG(binary large object)
    • 这里写图片描述
    • 二进制文件的含义,38个16进制数
    • 这里写图片描述
  • git objecttype : BLOB

    • each version of a file is presented as a blob.
    • a blob holds a file’s data but does not contain any metadata about the file or even its name.
    • 这里写图片描述
  • git objecttype : COMMIT

    • 记录每一次提交的作者,修改文件的parents等
  • git objecttype : Tree

    • 记录BLOB的定义着,path namesdeng

Branch

温习一下VI的三种编辑模式

  • 命令行模式 (command mode/一般模式)

    • 任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。
    • 在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。
  • 文本输入模式 (input mode/编辑模式)

    • 在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按”ESC”键即可。
    • 这里写图片描述
  • 末行模式 (last line mode/指令列命令模式)

    • 末行模式也称ex转义模式。
    • Vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值