当前breanch中存在未提交的内容时,是否存在阻止切换分支的配置?
在我初始化的GIT目录中,我签出了一个名为 libraries 的分支。在那里我下载了一些javascript文件。我的目的是将库分支克隆到其他分支中,以便我的javascript文件始终存在于其他分支中。这很好用。
我的问题在我创建新分支时开始, branch1 和 branch2 。两者都包含库目录,但从那时起我的目的是让新分支包含完全不同的文件。
我遇到的问题是当我在branch1中创建一个新文件然后切换到branch2时,我发现我的新文件同时出现在branch1和branch2中。
我试图在下面说明我的问题:
从GitHub的克隆存储库开始,我有以下结构:
MyRepo
|_*master
|__libraries
我使用以下结果创建branch1和branch2
MyRepo
|_*master
| |__libraries
|
|_*branch1
| |__libraries
|
|_*branch2
|__libraries
现在,我切换到branch2并添加一个文件script.js。没有登台和提交,我切换到任何其他分支,我在所有分支中找到我的script.js文件。
我熟悉在GIT中暂存和提交文件,但是对于我的大型项目,如果我碰巧将文件添加到特定分支并忘记在切换到不同的分支之前暂存和提交,我有他们不在的文件#39属于,我从来没有打算过。 我试图通过提出这个问题来抢先解决这个问题。
答案 0 :(得分:1)
根据您的描述进行猜测:
当你在git克隆的文件夹(因此被git监控)并添加新文件或修改现有文件,然后切换到另一个分支(使用git checkout)时,这些更新将在其他git分支。这是git中的预期行为。
如果您希望更新只保留在一个分支中,那么您需要(git add和)git将它们提交到该分支。在那之前它们存在于您的本地文件夹中,即使您正在检查其他分支。这是正确的行为,因为您不希望在切换分支时丢失更新(尚未通过提交保存)。
根据您的描述,目前尚不清楚您到底在做什么。您正在使用的git命令的实际顺序将有助于提供更好的答案。
答案 1 :(得分:0)
您的文件script.js对git是未知的,因此在切换分支时不会被清除,只要它不在新分支中,因此git会尝试覆盖它。
你从未做过git add
这个文件,所以对于git它不存在(未跟踪)。
如果你想删除它,你需要在切换后运行另一个命令,以清理没有被git跟踪的文件:
git clean -fx ./libraries
有关清理存储库的更多详细信息,请参阅git help clean。