我已经看到了:
如何在远程存储库上运行GIT命令 - "SSH进入服务器"或" git fetch
; gitk --all
"
在远程工作树上运行git命令(GIT_WORK_TREE =/path) - 答案是关于git push --tags
如何在远程仓库上"git show"? - "使用git fetch获取远程历史记录,然后从本地对象存储库中抓取该文件."
如何远程运行git命令?- " ssh username@host "cd my/repo/path && git show"
"
如何在git上手动运行hook post-receive?"一个钩子是一个可执行的shell脚本.你可以从命令行执行它,如果你需要手动运行它,虽然如果你的repo有多个头(也就是你使用分支),构造预期的stdin输入有点单调乏味)".
检测对远程分支的更改 - "不要手动监视git内部工作中的文件.使用git为您检查一些东西.在这种情况下,git rev-parse --verify origin/master
将显示本地原始/主副本git ls-remote origin master
的SHA ,并获取SHA来自遥远的地方."
在远程存储库上提交历史记录 - " git log remotename/branchname
- 您无法直接连接到服务器以检查其中的日志,您所做的是下载服务器的状态,git fetch
然后在本地查看远程分支的日志."
由此判断,对于我想要做的事情,我必须登录ssh
并在远程服务器上运行脚本; 但我希望有更多的git集成解决方案,所以让我解释一下我想做什么.
我有一个远程仓库,它是git-svn; 然后我有一个本地git-only repo,它是遥控器的克隆.因此,本地有一个对远程URL的引用remote.origin.url
(见过git config --list
).
我想要做的是git svn log
,在遥控器上运行相当于(可能有一些后处理),但是从本地机器/ repo 启动调用- 并再次在本地机器/ repo上获得结果.当然,git-svn
甚至可能没有安装在本地机器上,这意味着只有遥控器才能理解这样的命令.
我会准备好远程代码回购钩-但据我所看到的,挂钩只能在指定的事件(即运行pull
,update
...) -你真的不能随意叫他们:我记得,有一次我开发post-update
脚本; 并且为了调试它,我不得不将它设置为总是返回一个错误,然后我"推"一个"假"提交,这将运行脚本,并在收到错误后,回滚repo - 当然,这不是我想象的远程脚本应该运行的方式.
另一件可能的事情是为本地仓库编写一个别名,然后调用SSH remote.origin.url
- 也许这会使git svn log
远程运行更容易一些?
最后,这是我的问题-做什么选择我要运行一个相对的自定义git
命令(如git svn log
,或git
别名远程定义)上的远程回购,利用尽可能最大程度地在当地的回购已经获得的数据(即是的,我想避免编写一个bash
脚本,使用重复的硬编码路径/ URL,它将调用ssh
并执行遥控器上的任何必要操作) - 可能类似于远程post-update
git
钩子将其stdout返回给本地调用者,前缀为"远程:"?