一、git对象模型和存储
二、常用命令
1)git checkout branch 切换分支
假设现在有两个分支,master和dev分支
i dev分支上没有readme.txt
在master分支上我修改了readme.txt但是没有commit到本地仓库,那么在dev分支上仍然会看到readme.txt
在master分支上我修改了readme.txt并且commit到本地仓库,那么dev分支上没有readme.txt
ii dev分支上存在readme.txt
在master分支上我修改了readme.txt但是没有commit到本地仓库,切换失败,提示commit后再切换分支
在master分支上我修改了readme.txt并且commit到本地仓库,切换成功,两个readme.txt互不影响
2)git checkout master~3 将HEAD指针回退,并取出其中的数据添加到工作区和缓存区
因为是添加而非覆盖,所以当你在ed489上做的操作,没有commit时,当切换到b325,仍然可以看到那些未commit的文件。
如果现在在b325上做了修改,并且commit了,则commit的内容会丢失,因为切换到b325时,并不在任何一个分支上,此时显示的是:
如果想要这次更改,可以在commit前,git checkout -b branchName,将这个位置新建为一个分支,然后commit,此时的修改内容可以在新的分支上查找到。
3) git checkout master~3 filename 将filename这个文件切换到之前的版本,注意切换后仍然在master分支上,是用b325中的filename文件覆盖了ed489的filename,此时commit会生成新的校验和,也就是新的commit
4) git revert b325c 将b325c的commit复制到当前commit末尾,生成新的commit,是较安全的版本回退
5)git cherry-pick commitID 将commitID重演,并在当前commit链表末尾添加新的commit,同时将此时文件添加到stage和working directory
6) git diff