[英]How to run shell script on specific git commit?
我想運行run.sh
來檢查我的代碼的結果,這大約需要 30 個小時。 但我迫不及待地想在我的代碼中添加其他功能。 但是,我發現有一些潛在的危險:
在我的例子中,我希望run.sh
運行時所有文件都是固定的,同時我繼續編輯 python 文件的更多功能,這些文件可能有錯誤。
例如,這是我的 git 日志
* commit 6d1931c0f5f6f7030f1a93d4f7496527c3711c1f (HEAD -> master)
| Author: deeperlearner
| Date: Fri Aug 13 10:37:21 2021 +0800
|
| Version to be run by shell script
|
我如何在繼續提交的同時強制run.sh
在提交6d1931
上運行?
* commit 059706b752f4702bc5d0c830c87e812a7bbaae27 (HEAD -> master)
| Author: deeperlearner
| Date: Fri Aug 13 10:38:21 2021 +0800
|
| Buggy commit that may destroy `run.sh`
|
* commit 6d1931c0f5f6f7030f1a93d4f7496527c3711c1f
| Author: deeperlearner
| Date: Fri Aug 13 10:37:21 2021 +0800
|
| Version to be run by shell script
|
我目前有解決方案:使用docker
或將整個代碼復制到其他目錄。
但我想知道是否有任何方法可以強制 shell 腳本在特定提交 hash ID 上執行?
這是git worktree
非常適合的一個用例。 您基本上是在所需的提交處創建一個新分支,並在該分支處復制工作目錄。 例如,如果您在工作樹的頂層並希望在當前 HEAD 上運行腳本,只需執行以下操作:
$ git worktree add ../bar
Preparing worktree (new branch 'bar')
HEAD is now at b2ceba9 Add d
$ cd ../bar
$ # Run long running script here
$ cd ../foo
$ # Edit files, create new commits, profit
(在這個例子中, foo
是 repo 的頂級目錄的名稱。)worktree 有一些選項可以處理特定的提交而不是 HEAD。 詳細閱讀精美手冊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.