CONVERT:GIT SHELL到GIT BATCH脚本

时间:2015-10-30 06:40:50

标签: windows shell batch-file ubuntu

我需要一些帮助,如何将此代码从shell脚本编辑为批处理脚本,因为我也想在Windows中运行它。

 #!/bin/bash
 commit_limit='4'
 log=`git show HEAD~$commit_limit --pretty=format:"%H" --no-patch`

 echo $log > .git/info/grafts
 git filter-branch -f -- --all
 rm .git/info/grafts
 git update-ref -d refs/original/refs/heads/master  
 git reflog expire --expire=now --all
 git gc --force --prune=now --aggressive
 git push --force origin $branch

我尝试了这个,但它给了我一个输出“H”而不是“9b027aaccb996ae4895e4dfb428c5e6e24870e68”

SET commit_limit=4
git show HEAD~%commit_limit% --pretty=format:"%H" --no-patch
pause

1 个答案:

答案 0 :(得分:1)

  • 在变量中,您必须以%百分比转义百分号(%) (%%)。
  • /命令中将\替换为del
  • $branch是一个 shell变量。我修复了批处理语法%branch%,你必须编辑 这个变量。
@echo off

setlocal
rem edit branch variable
set "branch=branch"

set "commit_limit=4"
set "log=git show HEAD~%%commit_limit%% --pretty=format:"%%H" --no-patch"

%log% > .git\info\grafts

git filter-branch -f -- --all
del .git\info\grafts
git update-ref -d refs/original/refs/heads/master  
git reflog expire --expire=now --all
git gc --force --prune=now --aggressive
git push --force origin %branch%

进一步阅读: