已学会git,用于速查命令:
文件的四种状态:
通过git init命令把这个目录变成Git可以管理的仓库
git init
掌握仓库当前的状态,显示的格式正是Unix通用的diff格式
git status
查看difference
git diff
把文件添加到仓库
git add
把文件提交到仓库
git commit -m "xxx"
显示从最近到最远的提交日志,查看提交历史,以便确定要回退到哪个版本
git log
git log --pretty=oneline //嫌输出信息太多写法
在Git中,用
HEAD
表示当前版本,上一个版本就是HEAD^
,上上个版本就是HEAD^^
,往上100个版本 :HEAD~100
。
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,
回退版本
git reset
git reset --hard HEAD^ //回退到上一个版本
查看命令历史,以便确定要回到未来的哪个版本(回退版本之后后悔,找commit id)
git reflog
可以查看工作区和版本库里面最新版本的区别
git diff HEAD -- file.name
场景一:改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file
命令git checkout – file.name 意思就是,把file.name 文件在工作区的修改全部撤销,有两种情况:
一种是file.name 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是file.name 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
丢弃工作区的修改,就是让这个文件回到最近一次git commit或git add时的状态
git checkout -- file
场景二:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景一,第二步按场景一操作。
//操作在add后、在commit之前,可以把暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD file.name //git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。使用HEAD时,表示最新的版本。
场景三:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,前提是还没推送到远程库。
删除文件:
git add
和commit
后,你通常直接在文件管理器中把没用的文件删了,或者用rm命令
删了。
有两个选择:
一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit。提示:先手动删除文件,然后使用git rm <file>
和git add<file>
效果是一样的。
另一种情况是删错了,因为版本库里还有呢,可以很轻松地把误删的文件恢复到最新版本。git checkout -- file.name
远程操作:
//Git支持多种协议,包括https,但ssh协议速度最快。
git clone git@github.com:Xxxx/Xxxx.git
可以把一个已有的本地仓库与远程仓库关联,然后,把本地仓库的内容推送到远程仓库。
git remote add origin git@github.com:Xxxxx/Xxxxx.git //远程库的名字就是origin,是Git默认的叫法
git push -u origin master //第一次远程库是空的,推送master分支时,加上了-u参数
git push origin master
想删除远程库(其实是解除了本地和远程的绑定关系),可以用git remote rm <name>
命令,建议先用git remote -v
查看远程库信息
//查看远程库信息
git remote -v
工作区被修改,把commit的最新一次覆盖到工作区:
git checkout HEAD xxxx.py(文件名)