1

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

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

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

我无法理解的是:

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

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

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

4

1 回答 1

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,你可以用cherry-pick把它们抓到主分支:

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-pick提交或git merge trashme.
于 2012-07-10T11:57:24.097 回答