如何从本地分支“拉”到另一个分支?


231

这听起来很简单,但我无法弄清楚。我前一阵子做了一个实验分支,现在我想把自从完成以来在master上发生的所有更改都考虑进去。这都是本地的。我想从本地主机拉到本地my_branch,但是我做不到。这似乎不起作用,告诉我master不是git存储库:

git pull master

Answers:


338

您必须告诉git从哪里提取,在这种情况下,是从当前目录/存储库提取:

git pull . master

但是在本地工作时,通常只需要调用merge(内部调用pull merge):

git merge master

1
我喜欢,git pull . master因为我认为它还会检查原产地是否还有新东西。这是真的?
乔西亚·约德

1
@JosiahYoder否,pull .专门告诉Git从位于的存储库.(即当前目录/存储库)中提取。origin只是“ .git/config文件中定义的任何存储库位置(通常在克隆存储库时自动设置)的简写”
knittl

1
哦! 那么git pull . master会从本地存储库中提取而不是从源中提取吗?(没有从源头获取!?)有任何优势git pull . mastergit merge master呢?
乔西亚·约德

2
@JosiahYoder是的,它将从本地存储库而不是原始存储库中“拉”出来。没有完成提取操作(因为本地存储库中的所有内容都在这里!)。没有优势–两个命令或多或少都一样。如果要快进,则可以使用push . origin/branch:branch(而不是拉动)更新本地分支,而无需先将其签出。
knittl

我赞美你 通过灰骷髅的力量!
R Claven

45

您正在寻找的是合并。

git merge master

这样,pull您就可以从远程存储库中获取更改,并将其合并到当前分支中。


38

相当老的帖子,但它可能会帮助新手加入git。

我会去

git rebase master
  • 更清晰的日志历史记录,并且没有合并提交(如果操作正确)
  • 需要处理冲突,但这并不困难。

1
开发团队肯定有很多方法来管理其分支过程。就我个人而言,我已经使用git 8年了,而且我从不需要重新设置基准。我一直使用合并,它一直满足我的需求。当然,使用rebase就像合并一样,可能会出现git无法自动确定“合并”两组更改的正确结果的情况。关于您提出的“更清洁”提交历史记录的观点。就个人而言,我的偏好是保留所有提交历史记录,以防万一我需要做一些“提交考古”(经常发生!)
user3441604

-1

如果您正在寻找其他分支机构(例如从本地到母公司)的全新拉动,则可以按照以下步骤进行。

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.