1.git init 把一个目录变成Git可以管理的仓库
2.git add/commit 将文件提交至Git版本库
git add xxx.txt 完成对文件的跟踪(加入暂存区,为git commit做准备)
git commit -m "xxx" 完成对文件内容提交至Git版本库
eg:通过命令:echo 'Study Git Project Manager' > gitTest.txt 将内容写入新建的gitTest.txt文件中,该文件位于bi-report项目中
在IDEA中看到为红色的,说明gitTest.txt文件并没有被加入到Git版本控制中来
3.git log 查看历史记录(相当于IDEA中的Show History)
这样看历史,发现太多的话,可以加上--pretty=online参数,这样看着会方便点。
中途对gitTest.txt作出如下两次修改:
第一次修改:追加 first modify gitTest.txt 至文件
第二次修改:追加 second modify gitTest.txt 至文件
4.git reset 回退版本
当前版本是HEAD,上一个版本是HEAD^,上两个版本是HEAD^^,上100个版本则可以用HEAD~100表示
回退到上一个版本后,通过git log --pretty=oneline发现最新的那个版本已经没有了,我后悔回退到上一个版本怎么办?
如果你没有关闭当前命令行工具,你可以知道它的commit id为6fed83eeaf9d2151cfea6a1921c3077ce4cf11bd,你可以通过id来进行恢复。
如果你关闭了当前命令行工具,也不知道commit id是多少,那就没有办法回退到原有的最新版本了吗?使用如下的git reflog命令。
5.git reflog 用来记录你的每一次命令信息
找到commit id后,通过 git reset --hard 6fed83a 便可以解决4中的问题了
6.git status 显示工作目录和暂存区的状态
①想修改一下gitTest.txt文件 ②然后新增一个licence.txt,内容随机填写
gitTest.txt已经在Git版本库中,licence.txt为新增文件(IDEA中通过颜色可以看出)
7.git diff 查看工作区和版本库中最新版本的区别
情形:gitTest.txt文件,第1次修改 执行git add
第2次修改 执行git commit -m '修改gitTest.txt文件'
相当于:将第1次修改放入暂存区,第2次修改只在工作区,执行git commit只是把暂存区数据进行了提交,第2次修改并未提交
明显gitTest.txt文件追加了2行,提交却显示修改1行,为什么?
因为Git追踪的是修改,而SVN追踪的是文件。当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。
通过git diff -- 文件名 便可以查看工作区与版本库中最新版本的区别
如果将第2次修改,也执行git add操作,再执行git commit命令提交后。通过git diff命令再次查看工作区与版本库中最新版本区别
8.git checkout 丢弃工作区的修改
有3种情形:
①第1次修改文件(工作区),不提交至暂存区;此时可通过git checkout命令,直接将工作区内容丢弃
②第一次修改文件,执行git add提交至暂存区;第2次修改,不提交至暂存区;执行git checkout命令,会回退到暂存区状态
③第一次修改文件(如:git rm <file>删除文件,会自动提交至暂存区,省去git add操作),发现改文件不需要删除,需要将暂存区数据回退;可以使用git reset HEAD <file>将暂存区数据回退,此时可通过git checkout回退至与最新版本库一致
情形1:gitTest.txt文件,第1次修改,追加了一句不友好的话,不执行git add等操作,相当于只在工作区修改。此处通过git checkout命令,会直接将修改的内容丢弃。
情形2:gitTest.txt文件,第1次修改,执行git add放至暂存区。第2次修改,追加了一句不友好的话,并没有执行git add,第2次修改只在工作区进行。此处通过git checkout命令,只会丢弃掉第2次修改的内容,回到添加到暂存区后的状态
情形3:基于情形2,已经将第1次修改放至暂存区了,现在发现这个文件不需要修改,便决定将放至暂存区的内容也丢弃掉,该怎么解决呢? ---- 使用命令: git reset HEAD 文件名
9.git rm 从版本库中删除文件
情形1:只删除工作区文件,版本库中文件未做改动(在某些IDE中,如果直接删除文件,会直接将暂存区的文件也直接删除,如果通过git checkout命令,是无法还原回来的。诸如:IntelliJ IDEA)
情形2:删除版本库文件(执行git rm会提交至暂存区,需再次git commit才能提交至版本库,完成真正的删除操作)
10.git rm -r -f --cached ./ 删除暂存区缓存