我正在尝试验证我的更改没有破坏现有代码。为此,在提交更改后,我运行代码,我需要使用之前的一次提交验证输出(没有我的更改)。因此,在完成验证后,我的更改仍必须是最新的提交。
答案 0 :(得分:2)
最简单的方法可能就是在分离的HEAD状态下检查先前的提交:
git checkout HEAD~1
您应该看到类似这样的消息:
你处于“独立的HEAD”状态......
从这一点开始,您可以构建项目并进行测试。当你想回到分支机构的HEAD时,很容易做到这一点:
git checkout master # or replace 'master' by the branch name
答案 1 :(得分:1)
如果您想在不破坏现有代码的情况下进行更改,最好签出新分支并在新分支中进行更改(例如,称为 test1 )。然后,您可以在 test1 中自由测试更改的代码,同时保留现有分支中未更改的代码,这可能是 master 或(更好) develop
一旦您测试了新分支并对您的更改感到满意,您就可以将 test1 合并或重新绑定到 master / develop 。
这可以避免进入分离的头状态,允许比较多个不同的代码版本(通过多个新分支),并且通常只是利用真正让Git闪耀的精彩分支功能。
答案 2 :(得分:0)
只是想确定,您使用的是团队城市还是其他一些自动构建工具?在这种情况下,您可以选择指定GIT路径和先前提交的版本。如果您只是尝试在本地构建,则需要在本地使用以前的代码并执行。
由于 Rakesh Yadav
答案 3 :(得分:0)
将之前的提交签出到另一个文件夹中,以便当前文件夹不受影响。
解决方案1:
创建一个新克隆并查看非常提交。
git clone <url> -- another_folder
cd another_folder
git checkout <commit>
#run the code
但是,如果存储库非常大或者网络不好,则会花费很多时间和空间。您已在本地存储库中拥有提交,因此您可以使用本地存储库作为远程存储库:
git clone <url_to_the_existing_local_repository> -- another_folder
此外,您可以使用本地存储库作为参考:
git clone <url> --reference=<url_to_the_existing_local_repository> -- another_folder
不同之处在于前者的远程是现有的本地存储库,而后者是远程存储库。您可以在不再需要时删除新文件夹。
解决方案2:
如果您使用的是新版本的Git(在2.10.0或更新版本之后),请使用git-worktree。
cd <path_to_the_repository>
git worktree add <path_to_another_folder> <the_previous_commit>
cd <path_to_another_folder>
#run the code
#after everything is done, you could just delete the new folder
rm -rf <path_to_another_folder>
cd <path_to_the_repository>
git worktree prune
git worktree add
创建一个新文件夹,并将提交检出到新文件夹中。您可以在该文件夹中运行git命令。该文件夹是另一个与默认工作树共享相同.git的工作树。 Git允许创建多个工作树。
答案 4 :(得分:0)
Git为此目的提供了bisect命令:“使用二进制搜索来查找引入错误的提交”。
开始于:
git bisect start
git bisect bad # mark the current commit as bad
git bisect good 5678..cded # mark a previous commit as good
然后,git bisect将检查中值提交,并估计在发现引入回归的提交之前剩余的步数:
Bisecting: 20 revisions left to test after this (roughly 4 steps)
测试签出的版本,将其标记为好或坏,冲洗并重复,直到找到“罪魁祸首”。
请参阅[参考文档]((https://git-scm.com/docs/git-bisect)上的bisect命令的完整文档。