当我们尝试在sourcetree中切换分支时,本地代码会发生什么?

时间:2015-09-03 06:19:53

标签: git github atlassian-sourcetree

我正在使用源代码树,并且必须分支本地和主,当我将分支从本地切换到主,并使用visual studio打开解决方案时我发现有些文件丢失,我不确定本地代码会发生什么当我们切换分支时,请帮助我。

3 个答案:

答案 0 :(得分:2)

切换分支时,受Git控制的所有文件都将替换为新分支的状态。这包括对文件的更改以及添加和删除。

请注意,这是一个普通的Git功能,并且与Sourcetree没有任何关系(UI只是在后台执行git co命令)

在您的情况下,这意味着您当前的本地'在master中根本不存在的分支。你可以通过合并你的本地'来实现它们。分支到主分支。

文件是"隐藏"通过Git可以通过切换回你的分支来揭示。

答案 1 :(得分:2)

您的代码中的更改将存储在您的分支中,每当您再次切换到旧分支时,您都可以获取代码。 一般情况下,如果你想在分支之间切换,你只需提交并将其与master合并。

希望你的问题解决了

答案 2 :(得分:1)

当git切换分支 - 或者更确切地说,checks out分支时 - 它将使工作目录看起来像 commit 存储库中的分支'。它通过根据需要添加/删除/更新本地文件和目录来实现此目的,用于跟踪/存在的文件 {* checkout -n't-lose-work} in分支。

结帐本身不会提交任何更改

如果git checkout将删除或修改具有更改的文件(即,未在当前分支上提交更改),则除非被强制,否则检出将中止。这可以防止丢失本地更改,直到可以正确处理它们。

由于这种行为,checkout是一个安全的 {* except-when-forced} 操作,并且总是可以恢复:它从一个提交移动到另一个提交,并且这样做,使得工作目录'看起来'就像它正在移动的提交。

因此,要恢复“丢失的文件”,只需签出前一个分支,它们就会重新添加到工作目录中。 (根据目标,可能适合保留当前分支,浏览差异,合并/恢复相关更改。)

{* checkout -n't-lose-work} 结帐会留下未跟踪的文件,不会删除或更新它们 {* except-when-forced}

{* except-when-forced} 如果错误地强制结账并导致丢弃的本地更改,则会违反此保证。