重命名 Git 分支文件夹

Chr*_*s B 1 git version-control

我有一个带有远程分支结构的 Git 存储库,如下所示:

bugfix001 
bugfix002     
feature
    feature001
    feature002
    feature003
master
task
    task001
    task002
Run Code Online (Sandbox Code Playgroud)

其中“feature”和“task”是分支结构内的文件夹,“feature001”、“feature002”分支位于父“feature”分支文件夹下。

我的问题是 - 是否可以重命名“功能”父文件夹并将所有分支保留在其下。所以我可以将它重命名为“hamster”,结构看起来像这样

hamster
    feature001
    feature002
    feature003
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我不是指本地文件结构,这是远程的分支结构。要在“功能”文件夹下添加一个分支,我将使用:

git checkout -b feature/feature004
Run Code Online (Sandbox Code Playgroud)

我意识到我可以单独重命名每个子分支并推送到远程,但是我可以重命名“功能”父文件夹,这将导致子分支遵循新名称吗?

uml*_*ute 5

git 中没有“分支文件夹”这样的东西。

你只有命名的分支,你使用的名称恰好包含一个斜杠,它提醒人们文件夹结构;但它也可能是别的东西(例如@)。

总结:你必须重命名每个分支,并推送新的分支名称(并删除旧的)

但这应该很简单:

remote=origin
for branch in $(git branch --list "feature/*")
do
 newbranch="hamster/${branch#feature/}"
 # locally create new branch based on old one
 git checkout "${branch}"
 git checkout -b "${newbranch}"
 # push the new branch to the remote
 git push --set-upstream "${remote}" "${newbranch}"
 # delete old branch remotely and locally
 git push "${remote}" ":${branch}"
 git branch -d "${branch}"
done
Run Code Online (Sandbox Code Playgroud)