Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐藏但仍使用GIT保存分支?_Git - Fatal编程技术网

隐藏但仍使用GIT保存分支?

隐藏但仍使用GIT保存分支?,git,Git,我有大量的分支,这些分支的工作有点混乱。有时我不想完全删除分支,但我暂时不会处理它。在这种情况下,我采用了在分支前加u的惯例 因此,如果我从以下几点开始: branch1 branch2 branch3 当我处理完branch1但想保存备份以备不时之需时,我将重命名为: _branch1 branch2 branch3 这在一段时间内运行良好,但我的工作区现在变得有点混乱。是否有办法将分支保存在某个位置以便恢复,但不在正常的工作区中(好像它已被删除) 您可以将标记用于许多与分支相同的事情:

我有大量的分支,这些分支的工作有点混乱。有时我不想完全删除分支,但我暂时不会处理它。在这种情况下,我采用了在分支前加u的惯例

因此,如果我从以下几点开始:

branch1
branch2
branch3
当我处理完branch1但想保存备份以备不时之需时,我将重命名为:

_branch1
branch2
branch3

这在一段时间内运行良好,但我的工作区现在变得有点混乱。是否有办法将分支保存在某个位置以便恢复,但不在正常的工作区中(好像它已被删除)

您可以将标记用于许多与分支相同的事情:

git tag saved_branch1 branch1
git branch -D branch1
git branch -m branch2 _branch2
git push _branch2 archive
git branch -D branch2
要恢复分支机构,请执行以下操作:

git branch branch1 saved_branch1
git checkout branch1
问题是标签可能会意外地被推到上游,因此您必须小心避免:

git push --tags         ;# Don't do this!
git push --follow-tags  ;# This will only push annotated tags on some commits

由于上面显示的tag命令不创建带注释的标记(它创建轻量级标记),因此这些标记将不会被推送。

将旧分支保存在单独的存储库中

也就是说,如果您在
$HOME/myproject
中工作,请克隆您的存储库:

cd $HOME
git clone myproject myproject_archive
cd myproject
git remote add archive ../myproject_archive
现在,将
\u存档
存储库设置为主服务器上的远程存储库 存储库:

cd $HOME
git clone myproject myproject_archive
cd myproject
git remote add archive ../myproject_archive
现在删除
myproject
中的所有“旧”分支:

git branch -D _branch1
etc...
你们都准备好了!您的分支继续存在于
myproject\u归档
repository,您现在可以轻松地归档新项目 分支机构:

git tag saved_branch1 branch1
git branch -D branch1
git branch -m branch2 _branch2
git push _branch2 archive
git branch -D branch2
您的姓名是:

确保您已推送所有分支,然后再次克隆您的回购,但这次

然后添加要处理的几个分支:

git config --add remote.origin.fetch refs/heads/my_name/branch1:refs/remotes/origin/branch1
git config --add remote.origin.fetch refs/heads/my_name/branch2:refs/remotes/origin/branch2
git fetch
然后开始处理已获取的几个分支之一:

git checkout -b branch1 origin/branch1
引述问题(加上重点):

这在一段时间内效果很好,但我的工作区现在变得有点混乱。是否有办法将分支保存在某个地方以便恢复,但不在正常工作区中(好像它已被删除)

你说“我的工作区现在变得乱七八糟”是什么意思?你的意思是说,
git分支
显示了太多你不想一直看到的东西,比如你的备份分支,它们以
开头

如果是这样的话,我不喜欢其他的解决方案。到目前为止,我认为最干净、最简单、存储密集度最低的解决方案是只编写自己版本的
git分支
,称为
git分支
,它围绕常规的
git分支
,但不显示以
开头的备份分支

以下是如何做到这一点:

  • ~/bin
    中创建
    git-branch\
    mkdir-p~/bin
    gedit~/bin/git分支_
    
  • 现在把这个放进去
    #/bin/bash
    #忽略以开头的分支名称(不要使用“git branch”打印)
    #这些前缀字符串
    前缀x1=“z-”
    前缀x2=“389;”
    git分支--颜色=始终为“$@”\
    |grep--color=never-v“^$PREFIX1”\
    |grep--color=never-v“^$PREFIX2”
    
  • 现在关闭并重新打开您的终端,和/或注销并重新登录,如果这是第一次创建并使用
    ~/bin
    目录(这样Ubuntu可以通过
    ~/.profile
    文件自动将
    ~/bin
    目录添加到您的路径中)。然后运行以下命令:
    #1。显示所有分支
    吉特分行
    # 2. 显示所有分支,但名称以“z-”或“U”开头的分支除外。
    吉特分行_
    
  • 就这样!请注意,我喜欢在备份分支名称前面加上
    z-bak/some_name
    ,因此我也排除了以
    z-
    开头的分支名称

    由于
    git branch
    是围绕
    git branch
    的包装器,并使用
    “$@”
    将所有参数传递给它,因此您可以像使用常规
    git branch
    一样,使用
    git branch
    的任何和所有参数/选项

    示例:这些命令相同:

    git分支-h
    吉特分行
    

    在我的回购中获取此
    git分支\
    脚本:。也可以查看其中的评论。

    相关:你说“我的工作区现在变得一团糟”是什么意思?你的意思是说,
    git branch
    显示了太多你不想一直看到的东西,比如你的备份分支,它们以
    开头吗?如果这是你的意思,我的答案是:。