如何创建git分支,使添加到其中的文件不会添加到master?
我想创建一个独立于主分支工作的git分支。我希望所有的代码,是目前在主,但任何进一步的变化,在主不应该反映在分支和分支的任何变化不应该反映在主 我使用此命令创建分支:如何创建git分支,使添加到其中的文件不会添加到master?,git,branch,master,git-track,Git,Branch,Master,Git Track,我想创建一个独立于主分支工作的git分支。我希望所有的代码,是目前在主,但任何进一步的变化,在主不应该反映在分支和分支的任何变化不应该反映在主 我使用此命令创建分支: git branch test 但是我在master中添加的任何文件都可以在test中看到。在test中添加的任何新文件,我都可以在master中看到。如何避免这种情况?创建分支时,我没有使用任何--track选项 git branch test git add . git checkout test git checkout
git branch test
但是我在master
中添加的任何文件都可以在test
中看到。在test
中添加的任何新文件,我都可以在master
中看到。如何避免这种情况?创建分支时,我没有使用任何--track选项
git branch test
git add .
git checkout test
git checkout master
只要您不提交,您就会在两个分支test
和master
中看到您的工作树和索引(它引用了您添加的内容)
git checkout test
git commit -m "files for test"
git checkout master
然后您将不会在master
中看到刚刚在test
中提交的文件您的新分支
test
将记录一个新的提交(包含新内容),独立于master您所要求的正是git分支测试的功能(两个历史不再共享)。但这里有两个层次的混淆:
git checkout test
git commit -m "files for test"
git checkout master
- 当您
git add newfile
时,您正在将它添加到索引中,但没有提交它或用它的内容更新任何分支。当您签出一个新分支时,只要没有冲突,git就不会从索引中重置这些更改。这是一种理想的行为,例如,如果您正在处理另一个分支,并且只希望将未提交的更改的子集转移到另一个分支。如果您git commit
原始分支上索引的状态,那么当您返回测试分支时,索引将不会保留这些更改
- 当您在添加或删除了新文件的树之间移动时,
git签出不一定会将它们从文件系统中删除(如果有重置操作)。然后,当您切换分支时,您可能会“看到”这些文件,例如,在ls
或git status
的输出中,但它们是“未跟踪”的,git不会尝试对它们做任何操作(git commit-a
,例如,在写入新树之前不会将此文件添加到索引中)。这没什么好担心的,但是如果你有强迫症,你可以删除它们(或者使用gitclean
)
我想你想要的是:
git checkout --orphan somebranch
这将创建一个没有任何历史记录的somebranch
,您可以将您想要的文件添加到该分支,它们可能与以前的分支100%不同。这根本不应该发生。您能否更详细地介绍一下您是如何进行提交和分支切换的?您确定要通过git checkout命令更改分支吗?您是否在切换之前提交了更改?然后,这种行为是预期的。如果要保存,请提交。如果您还不想提交,请使用git stash
。在commit
提交更改之前,不会将更改放入分支中。您只是在“工作副本”中进行更改,这是一个独立于您提交的分支的实体,比我的答案更详细+1.注意,这不是强迫症。它是CDO(与强迫症相似,但按字母顺序排列)。应该如此。(对不起,今天是星期五,忍不住)不是OP想要什么,而是大多数发现这个问题的人会做什么。