# 建议在一个空文件夹里创建空的版本库
$ git init
# 1.编写一个readme.txt文件
vim readme.txt
# 2.添加单个文件
git add readme.txt
# 3.添加多个文件
git add readme1.txt readme2.txt
# 4.添加当前文件夹下所有文件
git add .
# 把文件提交到仓库
git commit -m "本次文件提交说明"
我们对文件做了修改后,可以查看修改状态
# 查看文件修改状态
git status
我们对文件做了修改后,可以查看修改前后差异
git数据流向
工作区>>暂存区>>版本库
# 查看文件修改差异-比较的是工作区文件和暂存区文件(上次git add 后的内容)的区别
git diff test1.txt
# 查看文件修改差异-比较的是暂存区文件和版本库(上次git commit 后的内容)的区别
git diff --cached test1.txt
# 查看文件修改差异-比较的是工作区文件和版本库(上次git commit 后的内容)的区别
git diff HEAD test1.txt
# git log命令显示从最近到最远的提交日志
git log
# 回退到上一个版本
git reset --hard HEAD^
# 回退到历史某个版本(版本号不一定要全写,只写前面部分保证唯一也可)
git reset --hard ce98574451f123eb0cc1de74e1812ca5e564f98f
回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
# git reflog查看之前的每一次命令
git reflog
-----------------------------------------
ce98574 HEAD@{1}: reset: moving to ce98574451f123eb0cc1de74e1812ca5e564f98f
2cdd95a HEAD@{2}: reset: moving to HEAD^
6e4d39d HEAD@{3}: commit: 提交readme.txt文件的第二次修改
2cdd95a HEAD@{4}: commit: 提交readme.txt
ca05789 HEAD@{5}: commit: test1做了第二次修改“
b2aaf92 HEAD@{6}: commit: 提交test2修改
ce98574 HEAD@{7}: commit: 提交test1修改
595c552 HEAD@{8}: commit: 添加了test5文件
bdcc4f4 HEAD@{9}: commit: 新增test3文件
a9e7f16 HEAD@{10}: commit: 新增test4.txt
46ff1da HEAD@{11}: commit: 新增test1和test2两个文件
e21969b HEAD@{12}: commit (initial): 新增了一个readme.txt文件,作为解释性文件
-----------------------------------------
# 回到版本【提交readme.txt文件的第二次修改】
git reset --hard 6e4d39d
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
# 放弃工作区的修改
git checkout -- test1.txt
# 把暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD readme.txt
# 添加远程库(origin是远程库名,可修改)
git remote add origin [email protected]:JerryITGO/testgit.git
由于远程库是空的,我们第一次推送[master]分支时,加上了[-u]参数,Git不但会把本地的[master]分支内容推送的远程新的[master]分支,还会把本地的[master]分支和远程的[master]分支关联起来,在以后的推送或者拉取时就可以简化命令。
# 第一次推送
git push -u origin master
# 后续 推送
git push origin master
当远程仓库已经存在,我们可以直接克隆这个远程仓库
git clone [email protected]:JerryITGO/learn_python3.git
GitHub给出的地址不止一个,还可以用https://github.com/JerryITGO/learn_python3.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
# 简化版命令
git pull
# 全命令
git pull origin master