使用 gitpython 将 git 存储库克隆到非空目录中

时间:2021-01-25 00:39:27

标签: python git gitpython

我正在尝试使用 gitpython 创建更新程序。但是,当我尝试克隆到现有目录时出现错误。

Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2032.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1895, in __call__
    return self.func(*args)
  File "c:\Users\kiyer\Documents\GitHub\SmartRC App\SysBasic.py", line 66, in group
    sysbasic.update.InstallClientUpdate(root, update)
  File "c:\Users\kiyer\Documents\GitHub\SmartRC App\SysBasic.py", line 100, in InstallClientUpdate
    client(window, update)
  File "Sys\Installer.py", line 35, in client
    Repo.clone_from("https://github.com/NoKodaAddictions/File-Database.git", path2)
  File "C:\Users\kiyer\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\git\repo\base.py", line 1032, in clone_from
    return cls._clone(git, url, to_path, GitCmdObjectDB, progress, multi_options, **kwargs)
  File "C:\Users\kiyer\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\git\repo\base.py", line 973, in _clone
    finalize_process(proc, stderr=stderr)
  File "C:\Users\kiyer\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\git\util.py", line 329, in finalize_process
    proc.wait(**kwargs)
  File "C:\Users\kiyer\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\git\cmd.py", line 408, in wait
    raise GitCommandError(self.args, status, errstr)
git.exc.GitCommandError: Cmd('git') failed due to: exit code(128)
  cmdline: git clone -v https://github.com/NoKodaAddictions/File-Database.git C:\Users\kiyer\Documents\GitHub\SmartRC App\
  stderr: 'fatal: destination path 'C:\Users\kiyer\Documents\GitHub\SmartRC App' already exists and is not an empty directory.

如何使用 gitpython 将存储库克隆到非空文件夹中?

顺便说一下,我是 gitpython 模块的新手。

2 个答案:

答案 0 :(得分:0)

底层程序 git 不允许这样做。您可以 git clone 到一个临时位置,然后将其中的所有内容 mv 到这个位置。

答案 1 :(得分:0)

虽然默认情况下 git 不允许这样做,但如果您先将其克隆为裸仓库,然后将其解开,然后进行结帐,则无法实现类似的效果:

git clone --bare https://.... path/to/.git
git config --file path/to/.git/config core.bare false
git -C path/to checkout
相关问题