git 常用操作汇总
参考:Git 教程
命令行操作
初始化本地git仓库(git init)
在git-learning中执行 git init ,即可以将git-learning 变成git可以管理的版本库
mkdir git-learning
cd git-learning
git init
向本地git仓库添加文件(git add;git commit)
两步骤:1.add;2.comit
# 在 git-learning中添加readme.txt 文件
type nul>readme.txt
#reademe.txt 内容如下
#git is a version control system
#git is free software
git add readme.txt
git commit -m "wrote a readme file"
查看git仓库状态(git status)
git status
查看修改内容(git diff)
git diff <fileName>
修改文件并提交(git add;git commit)
和向仓库添加新文件一样的2步骤
#修改readme的内容为
#git is a distributed version control system
#git is free software
git add readme.txt
git commit -m "modified readme"
查看历史版本(git log)
git log
#美化log输出
git log --pretty=oneline
回退仓库版本(git reset HEAD <file>...)
git 用 HEAD 代表当前版本
HEAD^ 表示上一版本
HEAD^^表示上两个版本
HEAD~100 表示上100个版本
回退到指定版本:git reset --hard <具体版本的id>
查看历史版本id :git reflog
#回退到上一版本
git reset --hard HEAD^
#指定到具体版本
git reset --hard <具体版本id>
显示所有历史操作(git reflog)
git reflog
工作区 VS 暂存区
工作去有一个隐藏的.git目录,这个不算工作区,而是git的版本库。git 的版本库里存了很多东西,其中最重要的就是称为Stage的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD。

git add 命令实际上就是把要提交的所有修改存放到暂存区(Stage),然后,执行git commit 就可以一次性把暂存区的所有修改提交到分支。
管理修改
git add 会将修改提价到暂存区,假设有2次修改:第1次修改后git add 修改到暂存区;然后第2次修改,修改后(不git add)直接gti commit ,则最终的版本库只有第一次的修改生效。(后续可以通过追加git add,然后再git commit 使第二次修改在版本库中生效。通过 git reflog 可以看到两次修改对应的版本不同)
对比工作区和版本库中的代码
git diff HEAD -- readme.txt
撤销修改(git checkout -- file)
git checkout -- readme.txt
若修改还在工作区,没添加到暂存区,则撤销操作直接丢失工作区中修改内容,结果是和版本库中内容一致。
若修改已经添加到暂存区,而后有进行了修改,撤销操作会让回到添加到暂存区后的状态。
命令中 -- 很重要,若省略就“变成切换到另一个分支”命令。
撤销暂存区修改
以下命令会将暂存区的修改回退到工作区。因而要想彻底撤销修改还需git checkout.
git reset HEAD readme.txt
撤销版本库修改
回退版本即可。若已提交到远程,则操作记录会永远存在(除非删掉远程仓库)。
删除文件
若直接从系统删除文件,则仅仅只是删除了工作区的文件(版本库汇总还有该文件),通过git checkout -- filename 即可从版本库中将文件还原。
要想彻底删掉某文件(工作区和版本库都删除):1.手动删除,然git add/rm file;git commit 。2.git rm ;git commit。
远程仓库
non-fast-forward