我创建了一个裸存储库:
git init --bare
我理解:
git log
不起作用,因为此刻没有创建主分支。 我understand还有(至少)3种可能的修复方法。我没有创建任何分支(它是一个新创建的存储库)。我没有现有的提交。所以它让我:
从其他地方将新的主分支推送到存储库
我有一个本地存储库(上面是在远程服务器上创建的)。我正在使用NetBeans 7.4。我正在尝试推送到上面创建的远程裸存储库。对于本地分支机构,我只能选择'master - > master'和工具提示说'master将被添加'。对于远程分支我只能选择'master - > origin / master'和工具提示说'origin / master将被创建'。按完成后,日志显示:
git branch
git remote -v
设置遥控器:原点
git push sftp://path.to.rep.git refs / heads / master:refs / heads / master
== [IDE] == 2013年12月18日下午3:22:58推 - ###完成。
我应该提一下,我的本地存储库中有一个提交,我正试图推送它。
回到服务器上,在裸存储库中:
git log
fatal: bad default revision 'HEAD'
因此,NetBeans的推动没有做任何事情。也:
git branch
什么都不返回。所以没有创建主人。
在服务器上,我试过了:
git clone bare.repo.git myrepo
在myrepo中:
touch myfile
git add myfile
git commit -m "added myfile"
git push bare.repo.git master
然后,回到裸存储库中:
git log
现在有效(这是我的预期)。
回到NetBeans,现在我有2个本地分支选项:'master - > master'和工具提示说'需要拉远程主机'和'主',工具提示说'主机将被删除'。第一个选项不起作用 - NetBeans说:'推送会导致非快进更新'。第二个可能删除裸存储库中的主分支,因为'git log'不再起作用。现在我回到了开始。
这是正常行为吗?我错过了什么吗?或许它是一个NetBeans错误?还是一个git bug?
我只是想从NetBeans推送到新创建的远程存储库。
答案 0 :(得分:1)
这不是正常行为,或者至少NetBeans不会以受控方式运行。推送失败的原因似乎是NetBeans抛出异常:
java.lang.NullPointerException
at org.eclipse.jgit.lib.ObjectIdOwnerMap.get(ObjectIdOwnerMap.java:131)
at org.eclipse.jgit.revwalk.RevWalk.parseAny(RevWalk.java:895)
at org.eclipse.jgit.storage.pack.PackWriter.findObjectsToPack(PackWriter.java:1598)
at org.eclipse.jgit.storage.pack.PackWriter.preparePack(PackWriter.java:748)
at org.eclipse.jgit.storage.pack.PackWriter.preparePack(PackWriter.java:711)
at org.eclipse.jgit.transport.WalkPushConnection.sendpack(WalkPushConnection.java:229)
at org.eclipse.jgit.transport.WalkPushConnection.push(WalkPushConnection.java:169)
at org.eclipse.jgit.transport.PushProcess.execute(PushProcess.java:141)
at org.eclipse.jgit.transport.Transport.push(Transport.java:1162)
at org.netbeans.libs.git.jgit.commands.PushCommand.runTransportCommand(PushCommand.java:111)
at org.netbeans.libs.git.jgit.commands.TransportCommand.run(TransportCommand.java:140)
at org.netbeans.libs.git.jgit.commands.GitCommand.execute(GitCommand.java:72)
at org.netbeans.libs.git.GitClient.push(GitClient.java:858)
at org.netbeans.modules.git.client.GitClient$38.call(GitClient.java:603)
at org.netbeans.modules.git.client.GitClient$38.call(GitClient.java:599)
at org.openide.util.NetworkSettings.suppressAuthenticationDialog(NetworkSettings.java:140)
at org.netbeans.modules.git.client.GitClient$CommandInvoker$1$1.call(GitClient.java:816)
at org.netbeans.modules.git.client.GitClient$CommandInvoker$1.call(GitClient.java:837)
at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethodIntern(GitClient.java:849)
at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethod(GitClient.java:778)
at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethod(GitClient.java:760)
at org.netbeans.modules.git.client.GitClient$CommandInvoker.access$400(GitClient.java:754)
at org.netbeans.modules.git.client.GitClient.push(GitClient.java:599)
at org.netbeans.modules.git.ui.push.PushAction$2.perform(PushAction.java:214)
at org.netbeans.modules.git.client.GitProgressSupport.performIntern(GitProgressSupport.java:102)
at org.netbeans.modules.git.client.GitProgressSupport.run(GitProgressSupport.java:95)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1432)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2042)
我找到了解决方法。我所要做的就是用ssh替换sftp协议。