Git的那点基本命令
-
工作区&暂存区
工作区(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 commit
或git 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 | 从远程仓库克隆到本地 |
下一篇:分支管理