• git 以某次提交 创建新的分支


    目录

    一、所需的分支相关操作

    1)创建分支

    2) 创建对应的远端分支

    3)切换分支

    4)删除本地分支

    5)删除远端分支

    6) 给提交 打TAG

    7) 将某个tag 提交,创建新分支

    二、针对自己项目,针对性操作

    1、找到那个提交,然后为那个提交创建一个分支

     2、切换分支、运行自动打包脚本

    1)、git reset –hard

    2)、git clean

    3)、打包成功后,设置tag, 以便定位


    场景:

    某个版本出了bug,  但是,现在在主分支上,正执行其它编码任务,

    如果,在主进程上修改,则有新的代码,还没有测试,在这上面修改后发布的话, 可能会造成更大问题。

    理想的操作是:在原来那版的提交代码上,进行修改,然后打个新包发布。

    一、所需的分支相关操作

    解决:

    找到那一版本的提交 commit ID

    以某个提交为蓝本,创建新的分支

    1)创建分支

    以这个提交为蓝本,创建一个新的分支

    git checkout  59d8e27d366e3b4bddf -b tmpBranch

    运行后,创建新分支,并自动跳转到这个分支中

    git branch -a 可以查看所有本地、远端 分支

    可以发现,本地已经有了刚才创建的分支了

     但这时候,远端还没有和这个分支对应的分支

    2) 创建对应的远端分支

    所以需要对应下

     git push -u origin tmpBranch

    这时,再运行下git branch -a

     就发现远端也创建对应好了,

    查看本地分支 git branch
    查看远程分支 git branch -r
    查看本地和远程分支 git branch -a

     在这个分支里,正常的git add -u     git commit -m    git push 就可以了

    3)切换分支

    如果要调回主分支,继续现在的工作   

    只需  git checkout 主分支名  就可以了

    4)删除本地分支

    git branch -d 会在删除前检查merge状态(其与上游分支或者与head)。
    git branch -D 是git branch --delete --force的简写,它会直接删除。

    首先切换到其它分支上

    然后调用 git branch -D brancName   

    5)删除远端分支

    git push origin --delete [branch_name]

    6) 给提交 打TAG

    每次commit 后,顺便打个tag,方便以后快速定位

    git tag tagName

    git push --tag     

    7) 将某个tag 提交,创建新分支

    和commit 创建分支方法一样

    只是将 commit 用tagName 替换

    git checkout  59d8e27d366e3b4bddf -b tmpBranch

    git checkout tagName  -b tmpBranch


    二、针对自己项目,针对性操作

    再次遇到这样情况时,

    首先,找到那个提交,然后为那个提交创建一个分支

    在这个分支上 进行修改

    因为我还有个自动打包的机子,我将自己的项目推到gitlab中,  自动打包的机子pull后,进行打包发布,所以还有其它工作要处理

    1、找到那个提交,然后为那个提交创建一个分支

    如果已经有个分支,直接 git checkout branchName 就可

    如果还没有分支,  git checkout  59d8e27d366e3b4bddf -b tmpBranch  创建新分支

     

     2、切换分支、运行自动打包脚本

    注意打包时,必须 手动切换打包的分支,确保分支正确

    下面是打包的脚本

    1. REM 声明采用UTF-8编码
    2. chcp 65001
    3. if exist "dev.txt" (
    4. echo "确保先 git push 本地最新版本"
    5. pause
    6. git add -u
    7. git commit -m"auto rebuild"
    8. git push
    9. pause
    10. )
    11. git reset --hard
    12. git clean -xfd
    13. git pull
    14. python build.py -a rebuild
    15. pause

    git reset --hard      将打包机子的修改都撤销,回退上 上次提交时状态

    1)、git reset –hard

    使用 git reset 撤消对暂存区域的最后移动。

    如果您使用 –hard 作为该选项,您不仅可以擦除到上一个暂存区域的移动,还可以擦除提交。

    如果您错误地提交,这使它成为一个非常有用的恢复命令。

    2)、git clean

    reset只影响被track过的文件

    clean 用来删除没有track过的文件

    结合使用这两个命令能让你的工作目录完全回到一个指定的的状态

    git reset --hard
    git clean -xfd

    可以恢复到上次提交时状态

    以下是,git clean 的参数含义

    参数说明:

    :显示将要被删除的文件

    d :删除未被添加到 git 路径中的文件(将 .gitignore 文件标记的文件全部删除)

    f :强制运行

    x :删除没有被 track 的文件

    1. $ git clean -n
    2. Would remove untracked_file

    -f or --force

    1. $ git clean -f
    2. Removing untracked_file

    1. $ git clean -dn
    2. Would remove untracked_dir/
    3. $ git clean -df
    4. Removing untracked_dir/
    -x force removal of ignored files
    1. git clean -fd
    2. 删除当前目录下没有被track过的文件和文件夹.

    1. git clean -xd
    2. 删除当前目录下所有没有track过的文件夹,包括.gitignore中的文件夹
    1. git clean -xfd
    2. 删除当前目录下没有被track过的文件和文件夹,包括.gitignore中的文件和文件

    3)、打包成功后,设置tag, 以便定位

    我的打包过程,执行的是python

    在打包成功后,运行

    git tag   tagName

    git push --tag  

    给本次提交设置一个tag,方便出问题时 进行定位

    1. resJson=json_load("jsonInfoRes.json")
    2. if resJson.get("result",1)==0:
    3. file_write(build_file, str(Build))
    4. file_write(os.path.join(BuildDir, 'rev.txt'), rev)
    5. os.system(f'git tag {Build}')
    6. os.system('git push --tag')
    7. else:
    8. print("Upload Failed")

    参考资料:

    git reset --hardで変更を取り消す方法 | TechAcademyマガジン

    Git Clean | Atlassian Git Tutorial

  • 相关阅读:
    Spring依赖注入、循环依赖——三级缓存
    Python生成词云
    Ruoyi-vue项目新建模块的SQL输出的配置
    基于径向基函数RBF神经网络的非线性函数拟合研究-含Matlab代码
    基础会计学知识点汇总
    CentOS7.9安装
    缓存技术:加速应用,提高用户体验
    CAS(Compare and swap)比较并交换算法解析
    注解@PostConstruct分析
    智慧排水监测系统:实时监测城市排水情况
  • 原文地址:https://blog.csdn.net/shuilan0066/article/details/126371274