折腾了好几天的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的原因,我连续折腾了两天都没测试出来,请各位大神指教!
其实我也一直不知道怎么通过 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 就正常了。
目前我的工作流是这样:
- 在 Github 创建一个空的仓库,并复制链接:
[email protected]:<myUserName>/newRepose.git
- 在本地的文件夹按 C-x,g,执行 magit-status,会提示创建新仓库,回答 yes 创建,并commit
- 在magit-status 界面,按 M,a 添加远程仓库.
提示的第一个窗口输入 origin,第二个窗口粘贴上面复制的链接。
- 然后就可以正常的 P ,u,或者 P ,p 进行提交了。
1 个赞
我现在也确定这样可行,算是magit的这个小工作流弄明白了,但还是希望能够实现直接用命令行生成远端仓库,目前看到两篇关于这种方式实现的文章,git命令-创建远程仓库 - topbookcc - 博客园,github使用–使用git命令创建远程仓库,正准备进一步验证。
你在本地应用默认是没有创建的权限的。可能得添加 Personal access tokens
,通过 gh
这个Github 的Cli 应用来实现。
我个人觉得创建仓库也不会频繁操作,到网页上创建一下也不麻烦。