如何从当地分支机构"拉"到另一个分支机构?

Phi*_*lak 205 git

这听起来很简单,但我无法弄清楚.我不久前做了一个实验性的分支,现在我想把我做过的所有变化都记录下来.这都是本地的.我想从本地主人拉到本地my_branch,但我不能这样做.这似乎不起作用,告诉我master不是git存储库:

git pull master
Run Code Online (Sandbox Code Playgroud)

kni*_*ttl 302

你必须告诉git从哪里开始,在这种情况下从当前目录/ repository:

git pull . master
Run Code Online (Sandbox Code Playgroud)

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

git merge master
Run Code Online (Sandbox Code Playgroud)

  • @JosiahYoder 是的,它会从本地存储库而不是原始存储库“拉取”。没有进行任何获取(因为本地存储库中的所有内容都已经在这里!)。没有任何优势 - 两个命令的作用或多或少相同。如果你正在做快进,你可以使用 `push 。origin/branch:branch`(不是拉)更新本地分支,而不先检查它们。 (3认同)
  • 我喜欢 ```git pull 。master``` 因为我认为它也会检查是否有任何新的来源。这是真的? (2认同)
  • @JosiahYoder 不,`pull .` 专门告诉 Git 从位于 `.` 的存储库(即当前目录/存储库)中拉取。`origin` 只是“.git/config` 文件中定义的任何存储库位置的简写(通常在克隆存储库时自动设置) (2认同)
  • 哦!所以```git pull 。master``` 会从本地存储库而不是来源拉取吗?(没有从原点获取!?)```git pull 有什么优势。master``` over ```git merge master``` 然后呢? (2认同)

Kin*_*nch 45

您正在寻找的是合并.

git merge master
Run Code Online (Sandbox Code Playgroud)

随着pull您从远程存储库获取更改并将它们合并到当前分支.


Luk*_*ino 35

相当古老的帖子,但它可能会帮助新人进入git.

我会去的

git rebase master
Run Code Online (Sandbox Code Playgroud)
  • 更清晰的日志历史记录和没有合并提交(如果正确完成)
  • 需要处理冲突,但那并不困难

  • 开发团队当然有很多方法来管理他们的分支流程。就我个人而言,我已经使用 git 8 年了,而且从来没有需要 rebase。我一直使用merge,它一直满足我的需求。当然,使用 rebase 时,就像合并一样,可能会出现 git 无法自动决定“合并”两组更改的正确结果的情况。关于您提出的关于“更干净”的提交历史的观点。就我个人而言,我的偏好是保留所有提交历史记录,以防万一我需要做一些“提交考古”(经常发生!) (3认同)