35

作为一个新的 git 用户,他是 SVN 和 CVS 的专家,我正在努力让最基本的 git 功能正常工作。

我在 assembla.com 上使用共享仓库

我创建了一个本地克隆,并添加了一个文件:

$ git clone repository-url
$ echo "hello" > ha.txt
$ git add -A
$ git commit -a -m "haha"
$ git push

注意:此时我得到“没有共同的参考,没有指定;什么都不做”错误。经过几个小时的谷歌搜索,我发现解决方案是输入这个

$ git push origin master

然后我进入另一台计算机,修改了文件,并提交了它(令人惊讶的是,我不需要执行 git push origin 魔法)。然后我回到主计算机,再次修改它,所以我可以看到合并是如何工作的。

$ git fetch
$ git merge

现在我得到错误:

致命:未指定提交且未设置 merge.defaultToUpstream。

查看“git merge”的手册页,您必须指定如下内容:

$ git merge [< commit >..]

问题是,我不知道是什么< commit >意思,应该是什么。例如,它应该是文件、repo、消息还是版本?

我没有创建一个分支 - 我只是在“头”或主人上工作,因为我认为 git 称之为

不幸的是,谷歌在这方面没有太多帮助。手册页似乎希望您知道 a< refspec >和是< commit >什么origin

对此菜鸟问题的任何帮助表示赞赏。

4

4 回答 4

43

通常你不会git merge在没有参数的情况下调用(至少我不知道有人这样做)。如果您希望merge默认为跟踪分支,则需要设置merge.defaultToUpstream为 true: git config merge.defaultToUpstream true。在这种情况下,您的master分支必须跟踪: . 如果克隆时已经存在,则会自动完成此操作。origin/mastergit branch --set-upstream master origin/masterorigin/master

就个人而言,我会这样做git fetchgit merge origin/master或者git pull如果我没有本地提交。

编辑:正如VonC提到merge.defaultToUpstream的,默认为trueGit 2.0 以来。

于 2013-04-25T20:07:21.610 回答
8

注意:如果您的master分支已经在跟踪origin/master(您可以看到带有git branch -avvv更长的别名),那么 agit merge 将不再显示

fatal: No commit specified and merge.defaultToUpstream not set.

下一个 Git 2.à.x(2014 年第三季度)将删除该错误消息:
参见F​​elipe Contreras ( )commit a01f7f2felipec

mergedefaulttoupstream:默认启用

这没有任何意义:

% git merge
fatal: No commit specified and merge.defaultToUpstream not set.

我们知道最可能的场景是用户想要合并上游,如果没有,他可以设置merge.defaultToUpstream为 false。

这意味着您不再需要执行以下操作:

git config merge.defaultToUpstream true

如 Git 2.33(2021 年第三季度)所述:默认为 true。

请参阅Felipe Contreras ( ) 的提交 8603c41(2021 年 6 月 7日(由Junio C Hamano 合并 -- --提交 11fac26中,2021 年 7 月 8 日)签字人:Felipe Contrerasfelipec
gitster

于 2014-07-12T20:18:50.340 回答
5

阅读Pro Git,这是了解 Git 的好方法。

它会告诉你,在merge没有创建分支并且没有将分支设置为合并源的情况下完成,没有任何意义。

它还将告诉您两者之间的区别git fetch以及git pull哪些是重要的。

获取更改不会移动您的分支,但拉动会。

于 2013-04-25T20:19:26.353 回答
0

希望这是初始 git 设置后非常需要的设置。将默认分支映射设置为全局选项,

git config --global merge.defaultToUpstream true

于 2016-09-20T18:34:33.370 回答