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

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

持续更新中......

### Git 合并其他分支改动到当前分支的方法 在日常开发过程中,经常需要将其他分支改动合入当前分支。以下是几种常见的方法及其适用场景: #### 方法一:通过 `git merge` 命令完成整个分支的合并 当希望将另一个分支的所有改动都合入当前分支时,可以使用 `git merge` 命令。 操作流程如下: - 切换到目标分支(即当前分支): ```bash git checkout target-branch ``` - 执行合并命令: ```bash git merge source-branch ``` 此方法会将 `source-branch` 的所有改动一次性合入 `target-branch` 中[^2]。 --- #### 方法二:通过 `cherry-pick` 合并特定提交记录 如果只需要将某个分支中的某些具体改动引入当前分支,而不需要全部内容,则可以通过 `git cherry-pick` 来实现。 操作流程如下: - 查看源分支提交历史,找到所需的提交哈希值: ```bash git log --oneline source-branch ``` - 切换到目标分支: ```bash git checkout target-branch ``` - 使用 `cherry-pick` 将指定提交引入当前分支: ```bash git cherry-pick <commit-hash> ``` 这种方法适用于仅需引入部分改动的情况[^3]。 --- #### 方法三:通过创建临时分支进行部分代码合并 对于复杂的改动需求,可能需要先在一个独立的临时分支上完成调整后再将其合入当前分支。 操作流程如下: - 创建并切换到临时分支: ```bash git checkout -b temp-branch ``` - 在临时分支上执行所需的操作(如修改、删除或新增文件),然后提交更改: ```bash git add . git commit -m "Partial changes from source-branch" git push origin temp-branch ``` - 切换回目标分支并将临时分支的内容合并进来: ```bash git checkout target-branch git merge temp-branch ``` 这种方式适合于需要对部分内容做额外调整的情形[^1]。 --- #### 方法四:IDE 工具辅助选择性合并 现代 IDE 如 IntelliJ IDEA 提供了图形化界面支持的选择性合并功能。其基本步骤为: - 首先确保已将待合并的代码提交至对应的分支; - 切换到目标分支; - 右键单击项目目录,在弹出菜单中依次选择 `Git -> Show Diff with Working Tree` 或者类似的选项来对比差异; - 对比完成后,针对需要的文件右键点击 “Get from Branch”。 这种交互方式更加直观便捷,尤其适合初学者快速掌握[^5]。 --- #### 注意事项 无论采用哪种方式进行分支间的同步工作,请务必注意解决可能出现的冲突问题。一旦发生冲突,可通过以下指令定位受影响区域并手动编辑修复: ```bash git status ``` 之后再次标记已完成的状态以及最终推送更新即可继续推进后续任务[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值