【问题标题】:How do I run "git update-index --no-skip-worktree src/Folder/MyFile.cs" from python script如何从 python 脚本运行“git update-index --no-skip-worktree src/Folder/MyFile.cs”
【发布时间】:2021-07-24 15:49:52
【问题描述】:

我想从 python 脚本运行git update-index --no-skip-worktree C:\dev\src\Folder\MyFile.cs",但是我遇到了 2 个问题:

  1. 我的脚本不是从 git 文件夹运行的,所以我需要让它明白这是一个 git 存储库。我看到 git -C 应该有所帮助,但未能成功。
  2. 我尝试使用 subprocess.run 和 subprocess.Popen,但我得到返回码 0 并且文件未被忽略。

如何从我的脚本运行它? 谢谢!

【问题讨论】:

  • 如果您试图忽略跟踪的文件,您可能需要阅读Git FAQ entry that says that what you're doing won't work
  • 我已经看过了,谢谢。我将它用于一个非常特殊的情况,这正是我所需要的。唯一的问题是我似乎无法从我的 python 脚本中实现它

标签: python git


【解决方案1】:

如果问题只是命令没有在正确的文件夹中运行,您是否尝试将cwd 关键字参数添加到subprocess.run?所以如果你现在的电话是

subprocess.run(['git', 'update-index', '--no-skip-worktree', 'C:\\dev\\src\\Folder\\MyFile.cs'])

然后改成

subprocess.run(['git', 'update-index', '--no-skip-worktree', 'C:\\dev\\src\\Folder\\MyFile.cs'], cwd='path\\to\\the\\relevant\\folder')

此外,请确保转义文件路径中的任何反斜杠,就像我在这里所做的那样 - 否则 Python 不会将它们理解为正常的反斜杠。

【讨论】:

    【解决方案2】:

    所以显然我的问题是我使用了相对路径而不是像here. 中的绝对路径 现在我设法让它双向工作:

    1. subprocess.run(f"git -C {path_to_repo_folder} update-index --no-skip-worktree {path_to_file}")
    2. subprocess.run(['git', 'update-index', '--no-skip-worktree', '{path_to_file}'], cwd='{path_to_repo_folder}') 我最终使用(2),因为它更优雅。谢谢David Husz

    【讨论】:

      猜你喜欢
      • 2012-06-23
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      相关资源
      最近更新 更多