Git&GitHb学习记录

     源自:廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/896043488029600

    Git和GitHub是什么?

Git是版本控制工具,GitHub是储存代码的网站

Git官方文档:https://git-scm.com/

  1. 创建版本库/仓库,repository

   可简单理解为一个目录,这个目录里所有文件都可本Git管理起来,Git能追踪每个文件的修改和删除

  第一步,创建一个版本库,就是创建一个空文件夹

$ mkdir learngit
$ cd learngit 

  第二步,通过git init命令,把这个仓库变成Git可管理的仓库

$ git init

 此时当前目录下会出现 .git的新目录,这个目录是Git跟踪管理版本库的,不能随便修改。用 ls -ah 可以显示默认隐藏目录 .git

2.把文件添加到版本库中

创建readme.txt文件,并把它放入learngit文件夹下,learngit是一个Git仓库,放在其他地方Git找不到

Git is a version control system.
Git is a free software.

  类比大象放冰箱,把一个文件放入Git仓库只需要两步。

  第一步,用命令git add告诉Git,把文件添加到仓库。

git add readme.txt

      第二步,用命令 git commit  告诉Git,把文件提交到仓库:

$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file   //git commit命令执行成功后
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

  -m 后面输入的是本次提交的说明(提交说明最好是有意义的,方便从历史记录里方便地改动记录)

  

 1 file changed,   //一个文件被改动(即新添加的文件)

  

 2 insertions(+)   //插入两行内容(readme.txt)有两行内容
 修改readme.txt文件的内容,用git status命令可时刻查看仓库文件的内容

  readme.txt已经被修改了

  Changes not staged for commit:改变尚未提交

  要想看看readme.txt具体修改了什么内容,需要用git diff命令

  

  知道readme.txt坐了什么修改之后,在把他提交到仓库,提交修改和提交新文件是一样的两步

  •   随时掌握工作区状态,使用 git status 命令
  •       如果git status 告诉你有文件被修改过,用git diff 可以查看修改的内容

  查看修改的历史记录,有哪些版本,用git log命令查看 

   

  3.Git版本回退

  把readme.txt回退到上一个版本。Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本是HEAD^^,往上100个版本写100个^比较容易写不过来,所以要写成HEAD~100

  例,把append GPL回退到上一个版本 add distributed,可使用git reset命令

git reset --hard HEAD^

  结果:

HEAD is now at 7c1acd8 add distributed

  此时,打开readme.txt文件,里面的内容也被还原了

  想恢复到最新版本,找不到新版本的commit id怎么办?

  Git提供了一个命令 git reflog用来记录你的每一次命令

  

  可看出 append GPL的提交id 是7a6c7cf(简写,其实提交id还很长)

  回到append GPL版本

git reset --hard 7a6c7cf

  结果:

HEAD is now at 7a6c7cf append GPL

  小结:

  • HEAD指向的版本就是当前版本。Git允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id
  • 穿梭前,用git log 可以查看提交历史,以便确定回到哪个版本
  • 要重返未来,用git reglog查看命令示例,以便确定要回到未来的哪个版本。
原文地址:https://www.cnblogs.com/Makerr/p/14685600.html