从其他开发人员本地GIT获取文件并添加到主存储库

时间:2012-07-10 10:15:12

标签: git

我需要做一件简单的事,但我找不到正确的方法......

我和其他开发人员正在云存储库上使用相同的GIT分支。 他添加了一些文件,其代码格式不正确并且在本地提交,但没有推送到云端。

我想通过使用.git直接连接到他的git pull文件夹来获取这些文件。 我知道在这个阶段,GIT将为我和一个本地分支创建一个远程分支来保存这些文件。

我无法理解的是:

  1. 我可以只提取特定文件吗?

  2. 如何将此文件添加到我正在处理的主分支中?编辑它们然后将它们推送到服务器?

  3. 顺便说一句:我想正确的方法是创建一个临时分支,从我的朋友机器推送到它,拉我的机器,然后将其推送到云,但在我的工作场所提交没有良好格式化的代码是有问题的。 ..

1 个答案:

答案 0 :(得分:1)

假设您可以连接到他的计算机,并git clone他的本地存储库,您将需要获取其分支并创建本地跟踪分支。这听起来像你已经覆盖了这一点,但对后人来说:

git remote add <repo> <his_repo_path>

您无法仅提取特定文件。您可以做的是将您的分支版本称为独特的,并且只需要提交您希望最终在服务器上提交的提交:

git fetch <repo> <his_branch>:throwaway ;# this would call your branch 'throwaway'

假设他的历史(即throwaway的历史)看起来像A-B-C-D-E-F。如果你只是想提交BD,你可以用樱桃选择它们进入主分支:

git checkout <main_branch> ;# checkout your main branch
git cherry-pick `B`
git cherry-pick `D`

你已经完成了。

还有一个“快速而肮脏”的解决方案我不推荐,因为这是不好的做法,但是如果你真的只需要一个或两个文件就可以完成工作,并且你从没有制作的人那里得到了智能大小的提交:

  1. git checkout -B trashme master ;# or whatever your main branch is
  2. 复制文件。直接制作副本或通过电子邮件发送给您。
  3. 在签出trashme分支时将它们移动到仓库中。
  4. 在暂存和提交之前编辑。
  5. 这些提交cherry-pickgit merge trashme