我已经看到了:
- How to run GIT commands on remote repository - “SSH 进入服务器”或“
git fetch
;gitk --all
” - Run git commands on remote working tree (GIT_WORK_TREE=/path) - 答案是关于
git push --tags
- How to "git show" on a remote repo? - “使用 git fetch 获取远程历史记录,然后从本地对象存储中抓取文件。”
- How to run git command remotely? - "
ssh username@host "cd my/repo/path && git show"
" - How can I manually run the hook post-receive on git? “钩子(Hook)是一个可执行的 shell 脚本。如果你需要手动运行它,你可以从命令行执行它,尽管如果你的 repo 有多个头(也就是说,你使用分支)。”
- Detecting changes to remote branch - “不要手动监控 git 内部工作中的文件。使用 git 为你检查事情。在这种情况下
git rev-parse --verify origin/master
将显示你的 SHA origin/master 的本地副本,以及git ls-remote origin master
从远程获取 SHA。” - Commit history on remote repository - "
git log remotename/branchname
- 您无法直接连接到服务器以检查那里的日志,您所做的是使用git fetch
下载服务器的状态然后在本地查看远程分支的日志。”
据此判断,对于我想做的事情,我必须通过 ssh
登录并在远程服务器上运行脚本;但我希望有一个更集成 git 的解决方案,所以让我解释一下我想做什么。
我有一个远程仓库,它是 git-svn;然后我有一个本地 git-only repo,它是远程的克隆。因此,本地在 remote.origin.url
中引用了远程 URL(通过 git config --list
查看)。
我想做的是在远程运行相当于 git svn log
(可能有一些后处理),但是从 local machine/repo - 并再次在本地机器/repo 上获取结果。当然,git-svn
甚至可能没有安装在本地机器上,这意味着只有远程才能理解这样的命令。
我已经准备好为远程仓库编写一个 Hook - 但据我所知, Hook 只能在指定事件(即 pull
、update
...) - 你真的不能随意调用它们:我记得,有一次我正在开发一个 post-update
脚本;为了调试它,我必须将它设置为始终返回错误,然后我将“推送”一个“假”提交,这将运行脚本,并在收到错误后回滚 repo -- 当然,这不是我想象的远程脚本应该运行的方式。
另一件可能的事情是为本地 repo 编写一个别名,然后根据 remote.origin.url
调用 SSH - 也许这将使 运行git svn log
远程更容易一点?
最后,这是我的问题 - 我有哪些选项可以运行相对自定义的 git
命令(如 git svn log
,或 git
别名远程定义)在远程 repo 上,通过最大程度地利用本地 repo 中已有的数据(也就是说,我想避免编写 bash
脚本,具有重复的硬编码路径/URL,这将调用 ssh
并在远程执行任何必要的操作) - 可能以类似于远程 post-update
git
钩子(Hook)将其标准输出返回给本地调用者,前缀为“remote:”?
最佳答案
这里的答案似乎本质上是:
ssh server 'cd /path/to/repo && git svn log'
你可以写一些代码从git remote
获取server
和/path/to/repo
(假设你的 Remote 是ssh
类型的远程)。除了可以在本地 git 存储库中轻松找到的内容之外,不需要其他上下文信息。
关于git - 在远程运行 git 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856617/