以下是分支master下的初始内容
以下是分支test的初始内容
现在在master分支创建master.txt其内容为“this is master.txt. ”,查看status
发现刚刚创建成功时,文件是没有被跟踪的
接下来转到test分支查看status,发现在该分支下,仍然能够看到未跟踪文件信息
并且此时两个分支状态下的任务管理器界面都是一样的:
在test分支下add master.txt再查看状态
切换到master分支再查看状态发现都是一样的状态信息
此时任务管理器界面仍然不变
从前面可以看出master.txt是在master分支下创建的,是在test分支下add暂存区的,如果我在master分支中commit会发生什么呢?
查看此时master分支下的任务管理器
查看此时test分支下的状态和任务管理器,发现任务管理器中原来有的master.txt不见了!!!
(注:某分支下任务管理器中的内容和直接在该分支下的git命令行中键入ls -al内容是一样的,我这样打开任务管理器只是为了更直观看出文件变化而已)
如果我在一个分支下创建文件,在另一个分支中提交文件可行吗?
答案是可行的!
试试~
通过以上实践总结一下:
-
在 git initial 之后的文件夹中,刚开始创建文件时,该文件并没有被跟踪,也就是说这个文件处于untracked状态,无论后续对其是否做了修改都不能通过git status命令查看;
-
git commit -m "message" 命令只能提交已经处于staged状态的所有改动;
-
git commit -a 命令能够将处于staged和unstaged状态的所有改动提交,但是 git 对于untracked状态的文件改动提交是无能为力的;
-
如果在分支A作了改动a(比如新增文件a),并且a已经add被跟踪了,现在切换到分支B,在分支B下git status是可以看到分支A的改动a的,并且此时B的工作目录内容(就是在分支B下键入ls -al的内容)是既包含原来B的文件内容又包含A中已经被跟跟踪但是还没被提交的改动a的。
注意:如果我先在一个分支下创建文件a写入内容并commit 之后,再做文件a内容的改动A,这些改动A没有commit(也就是说git status不是空的,是clean的)就切换分支就会报错your local changes to the following files would be overwritten by checkout.
如果强制切换之后,两个分支中git status中都是clean的,再切换回来发现原来分支中文件改动的内容A(比如新增的一段话)消失了,原因还在探寻中。
笔者能力有限,欢迎评论区讨论~
持续更新中......