我在提交中输入了错误的消息,并在关闭已配置的挂钩时将其推送到我的远程分支。 但是,我需要更改提交消息并推送到远程分支。 当我修改并将代码推送到分支时,它位于错误消息提交的顶部。 我需要从历史记录中删除该提交,并在远程中用正确的消息替换最新的提交。 正确的提交消息:工单#123我的提交 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
git clone之后,新仓库中的配置如下所示:
remote.origin.url=<some url>
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
然后,我可以执行“ git pull”和“ git push”。 但是我只对“ git pull”感兴趣,因为我想推送到另一个仓库中。
我可以做的一件事是:
git add remote repo-for-push <some other url>
git push repo-for-push master
但是我想将git配置为使用默认的和不同的存储库来进行推拉,即:
git pull # pulls from origin
git push # pushes into repo-for-push, avoiding accidental push into the origin
如何配置? 提前致谢。
编辑:
基本上,我想将默认的推送回购设置为不同于默认的提取/拉回购。
看起来像
git config remote.origin.receivepack /bin/false
使推送到远程源失败。
在1.6.4版中,Git获得了使用remote.name.pushurl
配置设置从一个URL进行远程提取并推送到另一个URL的remote.name.pushurl
。 我可以想像如果推送存储库不跟踪请求存储库,那么奇怪的行为,但是我怀疑Git会尝试从当前/跟踪/匹配分支快速推送推送存储库,而不考虑它是什么。询问同名遥控器时,将拉动。
例如,如果您想通过匿名git协议进行拉取,但通过SSH进行推送(也许您需要SecurID令牌中的值或进行身份验证的内容):
[remote "myremote"]
url = git://server/path
pushurl = user@server:/path
我不确定您今天是否可以在git中实际执行此操作。 git-fetch(在builtin-fetch.c中)和git-push(在builtin-push.c中)的实现都调用内部函数remote_get(NULL)来标识要从中拉入/推入的默认存储库。
一种选择是创建一个别名,以指定所需的仓库。 例如:
git config --add alias.mypush "push repo-for-push"
然后,您可以:
git mypush
推动您想要的回购。 当然,不完全是您想要的。 (您也可以将--repo参数考虑为push;请参见http://kerneltrap.org/mailarchive/git/2008/10/7/3537694了解有关--repo参数的最新文档更新。)
如果您可以从另一个分支进行所有推送,那么我认为您可以将该分支配置为拥有自己的独立存储库以推送到:
git checkout master
git branch outbound
git remote add destination <some url>
git config branch.outbound.remote destination
我没有尝试过,您可能需要做更多的工作才能创建一个完整的解决方案。 如果您必须从主推,它也可能对您不起作用。
将“ git”命令包装在使用push参数的内容中。 我写了这样的话:
~$ cat /usr/local/bin/git #!/bin/bash # git wrapper # prevents pushing to repository declare -a args declare msg='' while [ $# -gt 0 ] do if [ "$1" != 'push' ]; then args=( "${args[@]}" "$1" ) else msg="No pushing" fi shift done if [ ${#msg} -gt 0 ]; then echo "$msg" fi /usr/bin/git "${args[@]}"
只要确保在“真实” git命令之前的路径中包含包装命令即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.