2013-01-18 37 views
6

我正在使用GIT,我正在同时处理2个任务。任务1和任务2。现在我想推送到服务器Task1。所以我将任务1(T1)的所有相关文件提交到暂存区域。GIT - 编译和测试临时区域

我的暂存区已准备好推送到服务器,但在执行此操作之前,我认为可以安全地检查我的暂存区是否编译并通过测试。

我怎样才能得到一个工作目录与分期区域only changes in order to compile it并运行自动化测试?

注意我不想运行工作目录的测试,只有分段区域......因为工作目录有与T1和T2相关的更改。

回答

4

这听起来像我应该使用git分支。您的每项任务都将在一个单独的分支上开发,您可以先推送一个,然后从第一个完成的分支(任务)合并到第二个分支。

有关更多详细信息,请参阅here

+0

是的,我知道。但我只想知道在这种情况下会发生什么...... – user1990009

+0

是的,在某些情况下使用分支是正确的答案,但并非总是如此。例如,您可能希望排除某些调试代码被执行和提交,并测试分阶段代码是否可以构建并正常运行。 – musiphil

0

我有一个类似的项目。我使用分支来实现这一点。我在那里创建了一个src分支和代码。一旦一切都好了,我承诺然后将该点分支到bin分支。如果编译工作我承诺。然后我将src分支合并到master。这种方法只保留master分支只有已知的工作代码。并保持开发代码和编译文件在他们自己的自治分支(我从不推)。

6

您可以git stash save将所有非相关更改保存到存储中,运行测试,然后使用git stash pop恢复不相关的更改。 (如果是我,我会首先阅读man git-stash以确保我按正确顺序获得了所有步骤。)

+2

确切地说,在这种情况下你需要的是'git stash save --keep-index',它可以保持分级代码的完整性,同时只存储本地修改。 – musiphil

+0

但是,如果您有未跟踪的文件,即未添加到Git的文件,请注意。这些不会被隐藏,因此如果编译需要新文件但尚未添加到版本控制中,您将不会意识到这一点。使用'--include-untracked'switch也可以将这些保存起来:'git stash save -k -u'。 – Florian