是否有一种单命令方式来获取远程仓库的最新镜像?那是
我知道我可以编写脚本(例如if [ -d repo ]; then (cd repo && git pull); else git clone $repourl;fi
),但我需要最简单的跨平台方式(实际上用于Jenkins-CI,我知道默认情况下这样做,但是我需要2个repos,其支持是有限的).
Git有其他类似的快捷方式(例如checkout -b和pull自己),所以我想知道我是否错过了什么.谢谢!
Amb*_*ber 61
没有,鉴于在现有repos上运行的命令都假设它们在给定的repo中运行.
也就是说,如果你在shell中运行,你可以简单地使用shell内置函数.例如,这是bash:
if cd repo; then git pull; else git clone https://server/repo repo; fi
Run Code Online (Sandbox Code Playgroud)
这将检查是否repo是一个有效的目录,如果是,则pull在其中; 否则它会clone创建一个目录.
jhr*_*mnn 43
最干净的单线可能是
git -C repo pull || git clone https://server/repo repo
Run Code Online (Sandbox Code Playgroud)
git pull知道从哪里拉取,因为本地存储库在其本地配置中注册了一个远程。它从工作树运行。
但git clone事实并非如此,它必须在参数中传递明确的远程 URL 才能进行克隆。它在工作树之外运行。
这种捷径不存在的主要原因是:
git clone很少针对给定的存储库:它是存储库生命周期中的一次性命令。git submodule update --init.git pull经常在给定的仓库中。git pull本身就是一个快捷方式(git fetch+ git merge)。Evengit pull --rebase是git fetch+的另一个快捷方式git rebase。考虑到您要使用的次数git clone,这样的快捷方式并不是一个高优先级。
因此,脚本仍然是定义您所需内容的最可靠方法。
| 归档时间: |
|
| 查看次数: |
19388 次 |
| 最近记录: |