打开hello.txt,修改为下面的样子
1.(master1)
2.(master2)
3.(master3)
4.(master4)
-
-
-
-
打开morning.txt文件,修改为下面的样子
-
-
5.(master5)
-
-
-
9.(master9)
10.(master10)
打开afternoon.txt,修改为下面的样子
1.(master1)
-
-
-
5.(master5)
-
-
-
-
10.(master10)
$ git add -i
$ git add --interactive
![](https://img.haomeiwen.com/i2995088/d4974946cb4acddc.png)
进入交互暂存文件模式,显示的信息比git status详细一点,
左边 staged 显示文在是否在staging(暂存区,也叫Index)进行存储
右边 unstaged path 显示文件被修改的行数和在仓库中的路径
可以看到,afternoon、hello、morning三个文件都有增加或减少啦几行
目前没有一个文件加入Index区域
2
u
![](https://img.haomeiwen.com/i2995088/460933d15552d1a3.png)
输入`2`或者`u`,列出已经修改,可以添加到Index的文件
1,2
![](https://img.haomeiwen.com/i2995088/c5d6985852f3f026.png)
输入序号,选需要添加到Index的文件
输出信息中,1,2两个文件左边有`*`,表示这两个文件被选中,会被stage(就是添加到Index)
Enter
![](https://img.haomeiwen.com/i2995088/ef09a1e80f52bc10.png)
直接回车,刚才选中的文件就会被staged,输出信息,显示2个文件被添加啦
1
![](https://img.haomeiwen.com/i2995088/5bac50bb621a7022.png)
输入1查看当前状态,左边`staged`一栏,序号为:1、2的两个文件已经staged
右边`unstaged path`中,两个文件状态都变成`nothing`
3 or r
![](https://img.haomeiwen.com/i2995088/a7399a20e8de148b.png)
输入3或者r,进入Revert状态,列出文件列表
1
![](https://img.haomeiwen.com/i2995088/1815282087452798.png)
输入1将那个文件取消staged状态,输出列表里,被选的文件的序号左边有`*`号
Enter
![](https://img.haomeiwen.com/i2995088/a2488d724d9d49cc.png)
输出信息,将选中的文件从Index区域移除
1
![](https://img.haomeiwen.com/i2995088/beed639bf6b47a7b.png)
然后再选1来查看状态,现在只有hello.txt添加到index区域啦
6 or d
![](https://img.haomeiwen.com/i2995088/433659b8724cd07c.png)
选择6或者d,列出已经staged的文件
1
![](https://img.haomeiwen.com/i2995088/bfe58a8e48b0cca3.png)
选择第一个文件,跟使用 `git diff --cached`是差不多的,就是查看当前staged的文件与HEAD所指向branch的最后一个commit中的同一文件进行比较。
暂存补丁(就是只stage一个文件中多处修改中的部分修改) Staging Patches 下载仓库
![](https://img.haomeiwen.com/i2995088/839561ce9923da6a.png)
打开afternoon.txt文件,在改成上面这个样子并保存
$ git add -i
$ git add --interactive
5
p
1
Enter
![](https://img.haomeiwen.com/i2995088/5e11381184e4ffbb.png)
输入`5`或`p`来进入暂存补丁模式
输入1选择第一个文件afternoon.txt
然后直接回车,列出啦三处修改中的第一处
?
![](https://img.haomeiwen.com/i2995088/5025b77a3911d0ae.png)
可以有很多选项,来选择要操作的部分,输入?获得详细帮助
y
![](https://img.haomeiwen.com/i2995088/1bb59f0e2b92508d.png)
输出`y`确认stage这部分修改,输出结果自动跳到啦下一处修改
输入
q
,不暂存剩下的两处修改,退出部分暂存(staging patches)模式
q
1
![](https://img.haomeiwen.com/i2995088/9b51e3f39901782b.png)
输入1查看状态,可以看到,现在afternoon.txt文件有一部分修改staged啦,还有一部分没有staged
q
git commit -m '提交afternoon的第一处修改'
![](https://img.haomeiwen.com/i2995088/7613450db77f489e.png)
q退出交互模式,然后commit提交就可以啦
git add --patch
git add -p
![](https://img.haomeiwen.com/i2995088/c70854c4bd1bbdae.png)
上面的命令直接进入`暂存补丁`模式,用法跟上面一样的。
可以部分重置,部分检出,部分存储,以后再整理吧
reset --patch
checkout --patch
stash save --patch
网友评论