1.git init
闲来无事想把本机里某个文件夹用作git版本库,创建文件夹,在此目录下进入git bash命令页面(一般右击就有),
执行 git init就行,执行完成后,执行git status查看结果,如果不成功会出现如下错误:
$ git status
fatal: Not a git repository (or any of the parent directories): .git
否则就是成功了。
建一个文件进行提交
2.git add test1.txt
3.git commit -m '测试git提交'
注意:git有工作区和暂存区,工作区就是你实际的磁盘看的见的目录文件,git add实际上就是把你工作区的文件修改内容,添加到了暂存区,这个在.git目录里,是个隐藏目录,在当前git仓库的根目录下。你可能一天修改了多个文件。然后晚上一起提交git commit。注意这个commit提交是提交到版本库里了,但也只是在你本地。和远程仓库没有一丁点关系,这个时候你的git仓库仅限于你本地,还没有做任何操作让它和远程库扯上关系
4.git status 查看当前在哪个git分支上,以及会显示工作区是否有修改的一些信息
5.git log查看每次的git 操作记录
图中commit 后面长串数字就是版本号,版本号作用很大特别是用在回退版本的时候。git中HEAD表示最新版本,上一个版本就是HEAD^,上上一个版本是HEAD^^,依次类推,往上一千个版本则是 HEAD~1000
6.git reset --hard HEAD^回退到上一个版本。如果要指定回退到哪个版本,git reset --hard 版本号,跟上版本号就行,版本号不用写全,git会自动查找,如果不知道版本号,则git log可以查到。
7.git reflog 查看命令历史记录,如果你回退到某个版本,此时这个版本之后的操作记录,用git log是查不到的,git log只能查到当前版本之前的操作记录,而此时你发现回退错了,想再回到原来的版本怎么破。这个时候可用git reflog。这个能找到你之前的命令记录可以查到你想要的版本号,然后执行 git reset --hard 版本号。
git的几种撤销场景
场景一:工作区的文件修改,没有添加到暂存区,这个很简单,如果 改的少直接ctril+z就行,但是如果改的内容比较多
执行 git checkout --fileName。checkout这个命令相信大家不陌生,就是把版本库里的代码拉取下来,这里把版本库里的具体文件拉取下来,很明显就是覆盖更新了本地文件,自然就是撤销了你在工作区的修改内容了。checkout 后面的“--”如果没有就变成了切换分支了,这个要注意
场景二:工作区的文件修改,已经添加到暂存区了,即已经执行了 git add 命令,但是还没有提交commit
这种情况需要分两步执行了,第一步把暂存区修改的内容撤销还原,第二步再把工作区的内容撤销(此部分操作就同场景一一样了)
第一步撤销暂存区修改的内容:git reset HEAD fileName, HEAD代表版本库最新版本了,由于修改的内容还没有commit所以当前版本库最新版本还是之前内容,不包含这次add修改的内容在内。这样reset后,就会把暂存库里的修改覆盖了。
接下来执行第二步,同场景一一样的操作,git checkout --fileName
场景三:工作区修改了,也添加到暂存区,而且也commit了。这样等于说版本库里已经彻底是被修改了,唯一一点就是还没有push到远程仓库,只是在你本地仓库,别人暂时还看不到。这种场景撤销同样需要两步,第一步先把版本库回退到上一版本,第二步把工作区修改内容撤销。
第一步:回退版本库,git reset --hard HEAD^, git中HEAD^标识上一个版本,前面已有介绍,此处不做重复
第二步:撤销暂存区的内容 git reset HEAD fileName
第三步:撤销工作区修改的内容,git checkout --fileName
如果修改的内容已经push到远程了,那就按照上面的操作撤销后重新push一次,覆盖掉远程仓库的吧!
8.删除文件,删除也是修改的动作。
这个删除就是你直接在本地目录上把文件删除了,此时你工作区就会和版本库中的暂存区不一致了,执行命令git statu就可查看到。添加到暂存区,git add fileName,这里也可以使用git rm fileNme,,其实效果一样的,只是语义上rm似乎容易说的通一点。然后执行git commit,提交到版本库中,如果删除错了依照前面撤销的步骤可撤销。
9.删除git仓库,即不想再让这个目录用作git仓库了,直接删除仓库文件夹下隐藏的.git文件夹即可。这样目录便不再受git管理了
致此,本地目录创建git仓库,已经对仓库内容的增删改查基本告一段落了