问题描述
我正在尝试使用 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 模块的新手。
解决方法
底层程序 git 不允许这样做。您可以 git clone 到一个临时位置,然后将其中的所有内容 mv 到这个位置。
,虽然默认情况下 git 不允许这样做,但如果您先将其克隆为裸仓库,然后将其解开,然后进行结帐,则无法实现类似的效果:
git clone --bare https://.... path/to/.git
git config --file path/to/.git/config core.bare false
git -C path/to checkout