作为一个新的git用户,他是SVN和CVS的专家,我正在努力让最基本的git函数工作.
我在assembla.com上使用共享仓库
我创建了一个本地克隆,并添加了一个文件:
$ git clone repository-url
$ echo "hello" > ha.txt
$ git add -A
$ git commit -a -m "haha"
$ git push
Run Code Online (Sandbox Code Playgroud)
注意:此时我得到"没有共同的参考,没有指定;什么都不做"错误.经过几个小时的谷歌搜索,我发现解决方案是键入此
$ git push origin master
Run Code Online (Sandbox Code Playgroud)
然后我去了另一台计算机,修改了文件,并提交了它(令人惊讶的是,我不需要做git push origin magic).然后我回到主计算机,再次修改它,所以我可以看到合并是如何工作的.
$ git fetch
$ git merge
Run Code Online (Sandbox Code Playgroud)
现在我收到错误:
致命:未指定提交且未设置merge.defaultToUpstream.
查看"git merge"的手册页,你必须指定如下内容:
$ git merge [< commit >..]
Run Code Online (Sandbox Code Playgroud)
问题是,我无法找出什么< commit >
意思,应该是什么.例如它应该是文件,回购,消息,版本吗?
我还没有创建一个分支 - 我只是在研究"头"或主人,因为我认为git称之为
不幸的是,谷歌对这个没什么帮助.手册页似乎希望你知道什么是< refspec >
,< commit >
和origin
是.
任何关于这个noob问题的帮助表示赞赏.
ata*_*man 42
通常你不用git merge
没有参数调用(至少我不知道有谁做过).如果您希望merge
默认为跟踪分支,则需要设置merge.defaultToUpstream
为true : git config merge.defaultToUpstream true
. 在这种情况下,您的master
分支机构必须跟踪origin/master
:git branch --set-upstream master origin/master
.如果origin/master
克隆时已经存在,则自动完成.
就个人而言,我git fetch
再git merge origin/master
或者git pull
,如果我没有本地提交.
编辑:由于VonC提到自Git 2.0以来的merge.defaultToUpstream
默认值true
.
注意:如果您的master
分支已经跟踪origin/master
(您可以看到git branch -avvv
,或者更长的别名),那么a git merge
将不再显示:
fatal: No commit specified and merge.defaultToUpstream not set.
Run Code Online (Sandbox Code Playgroud)
下一GIT中2.à.x(Q3 2014)将删除错误消息:
看到提交a01f7f2由菲利普Contreras的(felipec
):
merge
:defaulttoupstream
默认启用这没有意义:
% git merge
fatal: No commit specified and merge.defaultToUpstream not set.
Run Code Online (Sandbox Code Playgroud)
我们知道最可能的情况是用户想要合并上游,如果没有,他可以设置
merge.defaultToUpstream
为false.
这意味着你不再需要做一个:
git config merge.defaultToUpstream true
Run Code Online (Sandbox Code Playgroud)