git使用之某分支文件改动对其他分支状态和工作目录的影响

以下是分支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内容是一样的,我这样打开任务管理器只是为了更直观看出文件变化而已)

如果我在一个分支下创建文件,在另一个分支中提交文件可行吗?

答案是可行的!

试试~

通过以上实践总结一下:

  1. 在 git initial 之后的文件夹中,刚开始创建文件时,该文件并没有被跟踪,也就是说这个文件处于untracked状态,无论后续对其是否做了修改都不能通过git status命令查看;

  2. git commit -m "message" 命令只能提交已经处于staged状态的所有改动;

  3. git commit -a 命令能够将处于staged和unstaged状态的所有改动提交,但是 git 对于untracked状态的文件改动提交是无能为力的;

  4. 如果在分支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(比如新增的一段话)消失了,原因还在探寻中。

笔者能力有限,欢迎评论区讨论~

持续更新中......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值