GitHub如何在不覆盖您的分支的情况下测试其他人的分支

时间:2019-04-23 01:09:23

标签: git github

在使用GitHub时,我只是想着一个问题。

假设与我一起工作的人A对master分支的文件File B进行了一些更改,并希望我在合并之前对其进行测试。问题是我也编辑了一些文件,如果我获取他的代码,它将覆盖我的文件。如果我想测试他的代码而不覆盖我的代码,我应该如何处理。我应该只下载分支文件并运行该文件,还是有一种更快的方式而不下载他的代码?

3 个答案:

答案 0 :(得分:0)

假设您的回购在/path/to/foo下。

cd /path/to/foo
git fetch origin master
git worktree add /path/to/bar FETCH_HEAD

来自远程存储库的master的最新提交已签出到/path/to/bar。您可以在/path/to/bar中测试代码。该代码包括A的更改,而没有您的更改。稍后,您只需删除/path/to/bar,然后在git worktree prune中运行/path/to/foo

答案 1 :(得分:0)

只需签出远程分支(在获取后),它就不会碰到您的分支,不需要做任何更奇特的事情。

git checkout some-repo/some-branch

您将开始处理detached HEAD,一切照旧。您可以回到您的分支机构

git checkout my-branch

答案 2 :(得分:0)

如果您和与您一起工作的人位于相同仓库相同分支中,则可以获取同事所做更改的提交哈希,然后从该提交中检出一个分离的HEAD。

请参见git checkout [--detach] <commit>

  

通过卸下HEAD,准备在<commit>上工作(请参见   “ DETACHED HEAD”部分),并更新索引和文件中的   工作树。对工作树中文件的本地修改是   保留,以便结果工作树将是记录在其中的状态   提交加上本地修改。

例如,如果您的同事用哈希9536809推送了提交:

git fetch             # to update your copy of remote repo
git checkout 9536809  # to get your co-worker's changes

然后,您将获得同事在特定提交时推送的代码的副本。您可以检查修改并在本地环境中对其进行测试。然后,当您满意时,您可以git checkout回到您的上一个分支。

git checkout <local-branch-name>

# OR

git checkout -

请注意,文档中执行此操作的部分也将应用您的本地修改。因此,在签出您同事的提交之前,请先commit或先stash个更改。


作为旁注,如果您和您的同事在单独的分支上工作会更好,这样可以更轻松地将 工作与您同事的工作。因为最终,您都需要在合并到母版之前同步同一分支上的所有更改。