一个 $ git pull 和一个 $ hg pull 之间的区别是什么?

5

Steve Losh: Mercurial 分支指南 -

Mercurial 默认会推送/拉取所有分支,而 Git 只会推送/拉取当前分支。

我想知道我的理解是否正确:

我想到当我执行 git pull 时,实际上我会从所有分支中进行 fetch,但是只有我所在的当前分支才会进行 merge。这非常接近于 mercurial,其中 pull 会获取来自远程的所有内容,但不会立即进行 merge

mercurial 中,push 会发送所有内容,但需要显式地使用 update 进行合并。我对 gitpush 操作行为还不太确定。

2个回答

4
在Git中,你需要逐个拉取/推送所有分支。因此,你可以在本地分支上工作,而不会弄乱服务器。
每次都可以指定要拉取/推送的分支:例如git push origin master表示你想将你的master分支推送到origin上,通常这是“默认”服务器。

1
在Mercurial中,hg push -r .仅推送当前分支。有一个名为hg nudge的别名可以实现此功能。 - Ry4an Brase

0

当没有任何refspec时执行git pull会发生什么取决于配置(来自git-pull手册的默认行为部分):

为了确定在没有命令行上的任何refspec参数运行该命令时要获取哪些远程分支(并可选地存储在远程跟踪分支中),将查询remote..fetch配置变量的值,如果没有,则查询$GIT_DIR/remotes/文件并使用其行。除了OPTIONS部分中描述的refspec格式外,您还可以拥有类似于以下内容的globbing refspec:

refs/heads/:refs/remotes/origin/

http://www.kernel.org/pub/software/scm/git/docs/git-pull.html

git push 推送的内容取决于配置(和参数)。

如果没有额外的配置,它的工作方式类似于 git push origin :

当没有指定 时,此命令的默认行为可以通过设置远程推送选项来配置。

例如,要将默认推送当前分支到 origin,请使用 git config remote.origin.push HEAD。任何有效的 都可以配置为 git push origin 的默认值。

http://kernel.org/pub/software/scm/git/docs/git-push.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接