Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull,命令从0开始,我们一一介绍。
【一.单分支情况】
1.首先需要创建一个工作区git init
2.在工作区中修改或者编写新的文件
1)git add demo.txt到本地缓存之前和之后的状态【文章莫问git status中字符的含义】
2)此时我们修改demo.txt(已经提交到本地缓存了)
可以通过git diff 查看更改的地方
根据提示:
可以把跟新的提交到缓存,
可以把更新的丢弃,【把gggg行删掉,然后git restore丢弃更新操作,因此还是有ggg行】
可以取消缓存
3.我们缓存中的数据提交到本地仓库
1)提交到本地仓库之后,如果我们对文件进行了更改,但是我们又后悔做了更改,通过git checkout 把文件从本地仓库拉去下来覆盖掉更改的文件
2)我们不小心删除了工作区文件和上面类似 也通过git checkout 从本地仓库中拉去下来
3)如果我们就想更改然后提交到本地仓库
第一种方式:重新做一次新的提交
第二种方式覆盖掉上一次提交的commit ID, 这样就不会有新的提交节点产生了【类似于原来提交的内容不完整,需要补充一些内容】
git commit --amend【提交前是有两个commit节点,提交后也有两个commit节点】
4.版本回退
1.0.1本的文件内容如图【记住这些commit ID】
git reset [--soft | --mixed | --hard] [HEAD]
1) 撤销1.0.1这次提交 但是本地demo.txt内容没有变【git reset HEAD^】 本地仓库版本指针指向了1.0.0的节点。所以git checkout 下来的是1.0.0的demo.txt
2)在version1.0.1中增加了一个文件demo2.txt【git reset HEAD^ 某个文件】
指定回退文件,回退 demo.txt 文件的版本到上一个版本,demo和demo2的文件内容并没有变更,同样需要checkout一下demo。【这种方式并没有撤销提交,只是版本指针从1.0.1移动到1.0.0】
如果又想把 demo 恢复到1.0.1版本,版本指针移动最新版本【同样不会更改本地文件内容】,需要在checkout一下demo
这就恢复回来了
3)【git reset --hard HEAD^】--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。【撤销这次提交 并且 代码也会恢复到上个版本,并不推荐这种回退方式】
4.删除命令
1)git rm --cache 文件名【删除暂存区的文件,但工作区保留,推荐使用】
2)git rm -f 文件名【删除 工作区,暂存区,本地仓库的某个文件】
【二.多分支情况】
1.我们需要基于某个版本另外创建一个分支branch。
1)git branch 查看本地分支情况
2)git branch slave1【在master 分支下运行,就是基于master分支的版本】
不同分支有不同的commit 提交记录, 我们也可以使用 git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作。
slave1分支的commit记录
master分支的commit 记录
【并且工作区和缓冲区的内容是分支共享的,主要还是看在哪个分支进行提交,就属于那个分支】
在master提交之后,slave1分支就看不到这个shared_file文件了
3)删除分支【基于slave1创建的slave1_1, 在本分支上删除自己是不可以的,要到其他分支上】
4)合并分支
1)基于slave1分支创建出slave2分支。在slave2分支中增加了demo_file2文件,并且对原来的demo_file文件进行了修改。
slave1分支的文件及内容
slave2分支的文件及内容
合并slave1和slave2分支
2) 如果合并有冲突的话,就先解决冲突并在合并
基于slave1分支创建分支slave2,在slave2中修改demo_file文件并提交,在slave1中修改demo_file文件并提交,然后在slave1分支上合并slave2【需要手动的解决冲突】
我们可以用 git add 要告诉 Git 文件冲突已经解决
git status -s中对应字母的含义
A | 你本地新增的文件(服务器上没有). |
C | 文件的一个新拷贝. |
D | 你本地删除的文件(服务器上还在) |
M | 文件的内容或者mode被修改了 |
R | 文件名被修改了 |
T | 文件的类型被修改了 |
U | 文件没有被合并(你需要完成合并才能进行提交) |
X | 未知状态(很可能是遇到git的bug了,你可以向git提交bug report) |