dtr*_*ers 9 git branch github bfg-repo-cleaner
首先这是不同的,因为这适用于所有分支而不是一个。(我发现的所有那些一次只为一个分支指定这个)
我在一个大约有 20-30 个分支的 repo 上工作(我知道我知道长篇大论的坏习惯)
无论如何,我正在使用 git bfg 清洁器删除一些旧的提交,在使用它之后,您需要删除并重新克隆代码或重置每个分支。
我知道如何使用设置分支
git fetch origin
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)
但是有没有办法用一个命令重置每个分支,或者我必须一次做一个分支?
我忽略了很多本地文件,我不想处理复制和重写。(如 IDE 文件、计算机配置文件等...)
首先这是不同的,因为这适用于所有分支而不是一个
您可以使用一个脚本来循环遍历您的分支,然后在每个分支上执行您想要的操作:
# Loop on all the desired branches
for ref in $(git branch -a)
do
# ... DO ANYTHING YOU NEED HERE
# You have the $ref which stores the branch name
# ex: remotes/origin/master
done
Run Code Online (Sandbox Code Playgroud)
是的,只需再次克隆项目,您将拥有与源相同的内容。
这正是您每个分支手动执行的操作。
笔记:
您可以使用以下命令一次获取所有数据:
# Fetch all remotes, branches and remove deledted content
git fetch --all --prune
Run Code Online (Sandbox Code Playgroud)
为什么不删除所有本地分支,然后每当远程分支被重新签出时,您就会同步?
# BE CAREFUL!!!
# THIS COMMAND WIPES OUT ALL LOCAL BRANCHES
?git branch | xargs git branch -D
Run Code Online (Sandbox Code Playgroud)
xargs 针对 stdin 的每一行运行提供的命令,在本例中为“git branch -D”针对原始“git branch”命令的每一行。
“git branch -D”命令对于当前分支将失败,但其他所有分支都将被擦除。
或者,您可以使用运行“git branch -f”的“xargs”做一些事情来强制将每个本地分支设置为其远程副本,但我认为上面的“git branch -D”方法是最简单的,也是最简单的就后果而言,直接考虑潜在的危害。
完全删除该目录,然后克隆存储库。
rm -R repodir
git clone https://github.com/repodir/repodir
Run Code Online (Sandbox Code Playgroud)