【发布时间】:2016-10-25 20:30:51
【问题描述】:
我在 Git 上工作了一段时间(虽然不是专家),但这个问题从来没有出现在我的脑海中,但现在正在四舍五入。
假设我有一个包含三个分支以及master 的存储库:
- 主人
- branch_1
- branch_1_devel
- branch_1_devel_test
我根本没有使用master,所以branch_1 变成并表现得像master。通常,我应该在branch_1_devel 进行新的开发,然后在它们准备好时将这些更改合并到branch_1。
现在我想测试一个新功能,所以我创建了一个新分支branch_1_devel_test。签出该分支后,我在一个名为 file1 的文件中进行了更改。
需要在branch_1_devel 中完成更优先的事情,所以我需要检查该分支并编辑相同的file1。完成后,我添加了文件,提交更改,然后合并到branch_1。
然后我回到branch_1_devel_test,因为我想继续测试我离开file1的地方。
遇到这种情况(如果你不明白,请告诉我,我会尽量说得更清楚)几个问题:
- 如果我从
branch_1_devel中提取更改,file1会发生冲突吗?意味着我将放弃以前的更改? - 我是否需要在结帐到另一个分支后立即提交在
branch_1_devel_test所做的更改?如果我尝试在新分支中签出而不在当前分支中提交更改,这意味着会出现问题吗?
所有这一切背后的整个想法是:我想测试一些东西,但我不想将更改推送到 branch_1_devel 和 branch_1。
更新
这是我为了解 Git 的行为所做的一个小测试。
$ git branch
master
branch_1
* branch_1_devel
$ git checkout -b branch_1_devel_test
Switched to a new branch 'branch1_devel_test'
$ git branch
master
branch_1
branch_1_devel
* branch_1_devel_test
现在我在branch_1_devel_test,所以我创建了一个新的空文件
$ git status
# On branch branch_1_devel_test
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# application/controllers/AdminconsoledemoController.php
#
nothing added to commit but untracked files present (use "git add" to track)
切换回branch_1_devel
$ git checkout branch_1_devel
Switched to branch 'branch_1_devel'
$ git status
# On branch branch_1_devel
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# application/controllers/AdminconsoledemoController.php
#
nothing added to commit but untracked files present (use "git add" to track)
如果文件是在branch_1_devel_test 创建的,为什么会在branch_1_devel 进行跟踪?这正是我试图避免的原因,因为我需要先提交更改,然后才能从 branch_1_devel 的源中提取任何内容@
【问题讨论】: