git bash使用的是linux命令,创建文件夹用mkdir+文件夹名、创建文件用touch 或者 vim
1 实际命令分析
1.1 git log --follow --pretty=format:%H 文件名 | xargs -I{} sh -c ‘git show {}:文件名 > 文件名.{}’
提取git中某个文件的所有版本并按顺序命名:
git log --follow --pretty=format:%H 文件名 | xargs -I{} sh -c 'git show {}:文件名 > 文件名.{}'
简略解释版本:
git log --follow --pretty=format:%H
//按照一定的格式输出 ,输出某个文件的历史提交哈希值
| xargs -I{}
//xargs 一般是和管道(I)一起使用
//-I{} //xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉;对应这里,前面输出的是哈希值,这里面"{}"代表的就是哈希值,后面的"{}"也是前面的哈希值。
sh -c
//暂时不清,下面有解释
git show {}:文件名 > 文件名.{}
//git show '哈希值':文件名:输出这次提交,这个文件夹的内容, ">" 将内容输出到 后面的文件中,并覆盖后面文件内容。
详细解释版本:
1.git log --follow --pretty=format:%H 文件名
git log //查看git提交历史
--follow //有没有follow会有差异,一个『浮于表面』,只认历史上与当前文件名匹配的提交记录,一个认准文件的『真身』,不管当前文件曾经披着什么的『皮』,始终追溯它的真身。**所以建议加上follow。(这里还不是很清楚)**
--pretty=format:%H 文件名 //使用不同于默认格式的方式展示“某文件”提交历史,format后面跟占位符
Table 1. git log --pretty=format 常用的选项
选项 说明
%H
提交的完整哈希值
%h
提交的简写哈希值
%T
树的完整哈希值
%t
树的简写哈希值
%P
父提交的完整哈希值
%p
父提交的简写哈希值
%an
作者名字
%ae
作者的电子邮件地址
%ad
作者修订日期(可以用 --date=选项 来定制格式)
%ar
作者修订日期,按多久以前的方式显示
%cn
提交者的名字
%ce
提交者的电子邮件地址
%cd
提交日期
%cr
提交日期(距今多长时间)
%s
提交说明
- | xargs -I{} sh c
| //表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l
xargs -I //
sh -c
Linux使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式。
【新建空文件】
方式一 : $ touch test.sh
方式二 : $ echo “” > test.sh
【写内容到文件】
如 test.sh 文件中内容:
$ echo “信息” > test.sh
但有时会出现权限不够的问题,这时就可以使用 sh -c
利用 “sh -c” 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:
$ sudo sh -c ‘echo “第二条内容” >> test.sh’
1.2 git branch -r | xargs -d/ -n1 | grep -v ‘origin’ | xargs -I{} sh -c 'mkdir “C:\Users\76585\Desktop\try{}” ’
用途:给每一个远程分支建立单独的文件夹,文件名就是分支名
分析:
1. git branch -r //显示远程分支。注意,本地分支可能只有一个,master这种。但远程分支可能有很多个。
2. | xargs -d/ -n1 // -d -n都是xargs的参数,详细可以去查文档。-d/ 以"/"为分隔符;-n1,每行输出一个。