#python #git #ssh
#python #git #ssh
Вопрос:
У меня есть этот скрипт, который должен отправлять файлы из текущего каталога скрипта в репозиторий:
def pushToGit():
currDir = os.path.dirname(os.path.realpath(sys.argv[0]))
try:
shutil.rmtree(os.path.join(currDir, '.git'))
except:
pass
try:
cp = cmd.run("git init", check=True, shell=True, cwd=currDir)
cp = cmd.run(f"git remote add origin git@github.com:johnsmith/repo_hold.git", check=True, shell=True, cwd=currDir "//")
cp = cmd.run("git config user.name 'john smith'", check=True, shell=True, cwd=currDir "//")
cp = cmd.run("git config user.email 'john@smith.com'", check=True, shell=True, cwd=currDir "//")
cp = cmd.run("git add .", check=True, shell=True, cwd=currDir "//")
message = f"Some generated message here"
cp = cmd.run(f"git commit -m '{message}'", check=True, shell=True, cwd=currDir "//")
cp = cmd.run("git push -u origin master", check=True, shell=True, cwd=currDir "//")
return True
except Exception as e:
return False
Процесс прост: просто инициализируйте папку, добавьте конфигурацию, добавьте файлы, зафиксируйте с сообщением и нажмите.
В этом примере я пытаюсь использовать метод SSH, поскольку он будет запущен автоматически, поэтому он не может ввести пароль. Ключи SSH находятся в той же папке (для примера) и прикреплены к моей учетной записи GitHub.
Однако я сталкиваюсь со следующей ошибкой:
* Running on http://127.0.0.1:2897/ (Press CTRL C to quit)
Initialized empty Git repository in C:/Users/John/Desktop/my_repo/.git/
warning: LF will be replaced by CRLF in id_rsa.
The file will have its original line endings in your working directory
error: pathspec 'URL' did not match any file(s) known to git
error: pathspec 'added'' did not match any file(s) known to git
127.0.0.1 - - [08/Sep/2020 22:13:36] "←[37mGET /<url post request here> HTTP/1.1←[0m" 200 -
Я не уверен, что вызывает проблему. Я не понимаю ошибку в консоли. Это первый раз, когда я использую метод SSH, но я не понимаю, как я мог бы использовать его неправильно.
Если это поможет, вот как выглядят файлы в каталоге:
Что я делаю не так?
Ответ №1:
Во-первых, добавьте некоторое эхо между вашей командой, чтобы изолировать ту, которая вызывает ошибку.
Во-вторых, добавьте git status
для проверки:
- если вы находитесь в нужном рабочем каталоге
- состояние файлов
Ошибка типа pathspec 'added'' did not match any file(s) known to git
, похоже, указывает на то, что он пытается добавить или зафиксировать файлы, используя вывод предыдущей команды.
Использование gitpython-developers/GitPython
было бы безопаснее.