magit中的push操作方法是什么?magit-push-current-to-pushremote函数中argus参数该如何输入?

折腾了好几天的magit,终于逐步掌握了magit的基本功能,现在卡在magit-push这一块。我的工作场景是这样,在emacs中修改了某个软件的配置后,想把配置文件上传到github,在做完magit-init,magit-status,storage,commit 以后,想在magit里面将配置文件push到github上面,就直接按下P,p键,跳出交互文字“set branch.master.pushremote and push there:”界面,

ctrl-h,f,查找到相关函数magit-push-current-to-pushremote的定义

( transient-define-suffix magit-push-current-to-pushremote (args) “Push the current branch to its push-remote. When the push-remote is not configured, then read the push-remote from the user, set it, and then push to it. With a prefix argument the push-remote can be changed before pushed to it.” :if 'magit-get-current-branch :description 'magit-push–pushbranch-description (interactive (list (magit-push-arguments))) (pcase-let (((,branch ,remote ,changed) (magit--select-push-remote "push there"))) (when changed (magit-confirm 'set-and-push (format "Really use \"%s\" as push-remote and push \"%s\预先格式化的文本`" there" remote branch))) (run-hooks 'magit-credential-hook) (magit-run-git-async “push” “-v” args remote (format “refs/heads/%s:refs/heads/%s” branch branch)))) ; see #3847 and #3872

尝试输入“github.com/dbv771/test4magit”后,就出错了,我在网上搜了很久,都没找到交互界面后的输入应该是什么,关于这个问题似乎涉及很多方面,有的说错误与ssh设置相关,有的说是因为github的原因,我连续折腾了两天都没测试出来,请各位大神指教!

P u 就可以了

:grin: 其实我也一直不知道怎么通过 Magit 将一个新建的Git仓库推送到一个空的 Github 仓库,我每次都是到终端去加 Remote,然后再回到 magit 里面 magit-status,接 P,u

git remote add origin [email protected]:<myUserName>/newRepose.git

按完 P,u 后,这个不知道填写什么好:

1 个赞

如果要指定 url,要用正确的格式

https 格式: https://github.com/username/projectname.git

ssh 格式: [email protected]:username/projectname.git

多谢两位的解答,继续折腾试验,总结如下,我需要的git的工作流实现方式应该是:先用git remote add origin [email protected]:/newRepose.git 设置远端仓库的计算机名,再用git push <远程主机名remote> <本地分支名localBranch>:<远程分支名remoteBranch> 形式将文件push到远端仓库,不过目前试验的结果是newRepose这个仓库名似乎必须要在github上生成才行。这样操作证实可行。

那么现在的问题应该是能否直接利用git命令行直接在github生成仓库,从道理上讲已经配置了ssh,用ssh协议既然可以push文件到仓库,那么为什么不能在github上生成文件呢?

我这里找到了一个简答操作视频,终于知道了😄。

原来要先 Add 然后再 Push 就正常了。 目前我的工作流是这样:

  1. 在 Github 创建一个空的仓库,并复制链接:
[email protected]:<myUserName>/newRepose.git
  1. 在本地的文件夹按 C-x,g,执行 magit-status,会提示创建新仓库,回答 yes 创建,并commit
  2. 在magit-status 界面,按 M,a 添加远程仓库. 提示的第一个窗口输入 origin,第二个窗口粘贴上面复制的链接。
  3. 然后就可以正常的 P ,u,或者 P ,p 进行提交了。
1 个赞

我现在也确定这样可行,算是magit的这个小工作流弄明白了,但还是希望能够实现直接用命令行生成远端仓库,目前看到两篇关于这种方式实现的文章,git命令-创建远程仓库 - topbookcc - 博客园github使用–使用git命令创建远程仓库,正准备进一步验证。

你在本地应用默认是没有创建的权限的。可能得添加 Personal access tokens ,通过 gh 这个Github 的Cli 应用来实现。

我个人觉得创建仓库也不会频繁操作,到网页上创建一下也不麻烦。