在使用GitHub时,我只是想着一个问题。
假设与我一起工作的人A对master分支的文件File B进行了一些更改,并希望我在合并之前对其进行测试。问题是我也编辑了一些文件,如果我获取他的代码,它将覆盖我的文件。如果我想测试他的代码而不覆盖我的代码,我应该如何处理。我应该只下载分支文件并运行该文件,还是有一种更快的方式而不下载他的代码?
答案 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
个更改。
作为旁注,如果您和您的同事在单独的分支上工作会更好,这样可以更轻松地将 工作与您同事的工作。因为最终,您都需要在合并到母版之前同步同一分支上的所有更改。