【问题标题】:Python Git Bash CMD ScriptPython Git Bash CMD 脚本
【发布时间】:2016-03-28 02:48:32
【问题描述】:

代码非常简单,它只是打开 Windows 命令提示符并执行 call() 函数。它有基本的 git 命令,可以帮助我推送到 git repo。我已经配置了 ssh 和远程 repo。

链接:https://github.com/vivekpatani/git-script-gitter

我可以更改日期,但是当我将它推送到 git 时,它会显示我推送的当前日期,而不是我提交的日期。

显示 9 天前和 11 天前已提交的提交列表,我希望它实际上显示与已提交相同的日期。

def calling():

    #Simply opening command prompt in Windows
    subprocess.call("git --version")
    subprocess.call("git status")
    subprocess.call("git add .")
    subprocess.call("git commit -am \"Changing Things\" --date=\"Sat, 26 Mar 2016 18:46:44 -0800\"")
    subprocess.call("git push origin master")

    #To stop from cmd closing automatically
    temp = input("Enter to close:")

def main():
     calling()

if __name__ == "__main__":
    main()

环顾四周后,我读到我需要同时更改 AUTHOR DATE 和 COMMIT DATE?谁能帮帮我。

编辑 1: 我正在使用 Windows 操作系统。

当我通过 Git Bash 运行它时它可以工作,只是需要将它转换为 Python。

git --version
git status
git add .
GIT_AUTHOR_DATE='Fri Mar 25 19:32:10 2016 -0800' GIT_COMMITTER_DATE='Fri Mar 25 19:32:10 2016 -0800' git commit -am "Hello Laney"
git push origin master

编辑2:解决方案

def calling(git_date):
    subprocess.call("git --version")
    subprocess.call("git status")
    subprocess.call("git add .")

    #The next statement is important as updates/adds new GitCommiterDate in environment making it the current commit date.
    os.environ["GIT_COMMITTER_DATE"] = 'Fri Mar 25 19:32:10 2016 -0800'

    #The date in commit command only changes author date.
    subprocess.call("git commit -am \"Changing Things\" --date=\"Fri Mar 25 19:32:10 2016 -0800\"")
    subprocess.call("git push origin master")

【问题讨论】:

    标签: python windows git bash github


    【解决方案1】:

    --date 只修改作者日期。

    您需要设置GIT_COMMITTER_DATE 环境变量才能与作者日期(using the env option of Popen()merging it with the current environment)具有相同的日期。

    subprocess.call("git commit -am \"Changing Things\" --date=\"Sat, 26 Mar 2016 18:46:44 -0800\"", env=dict(os.environ, "GIT_COMMITTER_DATE":"Sat, 26 Mar 2016 18:46:44 -0800"))
    

    【讨论】:

    • 谢谢,但是当我打印 os.environ 时,我找不到 GIT_COMMITTER_DATE。该行还包含语法问题。请你指导我吗?
    • @VivekPatani 的目标是将该变量添加到环境变量中,而不是找到它。
    • @VivekPatani 另外,缺少双引号。
    • 我只是对你所说的做了一些改动。您提到的答案是正确的,但是由于它仍然存在问题,我只是将命令分为两部分。 os.environ["GIT_COMMITTER_DATE"] = "Fri, 25 Mar 2016 18:46:44 -0800" 然后 subprocess.call("git commit -am \"Changing Things\" --date=\"Fri, 25 Mar 2016 18:46:44 -0800\"")
    • @VivekPatani 太棒了!不要犹豫,编辑这个答案。
    猜你喜欢
    • 1970-01-01
    • 2013-03-26
    • 2018-04-17
    • 2019-05-23
    • 2015-12-05
    • 2012-01-18
    • 1970-01-01
    • 2012-06-07
    • 2017-12-15
    相关资源
    最近更新 更多