• 工作区&暂存区

工作区(Working Directory):就是你在电脑里能看到的目录,比如我的一个web项目就是一个工作区

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。我们可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

  • 基础命令

命令 作用
git init 初始化一个Git仓库
git add "文件名" 添加文件到本地仓库(可反复使用添加多个文件)
git commit -m <message> 提交到远程仓库,<mesage>填的是备注信息
  • 版本回退命令(返回之前的版本)

命令 作用

git status

查看仓库当前的状态
git diff

查看上次修改的内容

git log 查看提交历史
git log --pretty=oneline 查看提交历史(简洁型)
git reset --hard commit_id 返回之前版本(commit_id可以在git log中获得)
git reflog 重返未来时查看命令历史,以便确定要回到未来的哪个版本
  • 管理修改

先思考一个问题:第一次修改 -> git add -> 第二次修改 -> git commit

问:第二次修改的会被提交么?(可以自己试一试)

答案是否定的,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

命令 作用
git checkout -- file 修改了某个文件(但是未add到暂存区),需要撤销修改
git reset HEAD 文件名 修改了某个文件(而且add到了暂存区),回到add前状态
git rm <file> 删除文件

命令git checkout -- filename意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

  • 远程仓库(GitHub或者码云)

关于仓库的建立和SSH key的创建参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000

命令 作用
git remote add origin git@server-name:path/repo-name.git 关联一个远程仓库
git push -u origin master 第一次推送master分支的所有内容
git push origin master 推送最新修改
git clone path 从远程仓库克隆到本地

下一篇:分支管理