• Git小技巧(持续更新)


    Git的小技巧,持续更新中

    1. 删除远程分支

    方法1

    git push origin --delete [branch_name]
    
    • 1

    方法2

    	git push origin : [branch_name]
    
    • 1
    2. 删除本地分支
    git branch -D [branch_name]
    
    • 1
    3. 项目源代码迁移到另一个gitlab的方法(保留原来的提交记录)
    git remote rename origin old-origin  //把旧远端仓库改个名字,当前的一般默认origin
    git remote add origin http://10.0.0.XXX/management/myTest.git  //新的git地址是自动生成的
    git push -u origin --all   //同步推送远端仓库
    git push -u origin --tags  //同步推送远端仓库
     git config --global --list  //查看配置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    4. Git 别名(即Git命令的简写设置)
    $ git config --global alias.co checkout
    $ git config --global alias.br branch
    $ git config --global alias.ci commit
    $ git config --global alias.st status
    
    • 1
    • 2
    • 3
    • 4
    5. Git合并多个commit
    git rebase -i commit_id(start) commit_id(end)
    
    • 1

    这里需要注意,commit_id->(start,end],是前开后闭的。
    编辑commit内容,将pick修改为squash,将commit进行合并。
    Commands 说明,以下单字符命令为简写命令。

    p, pick: 保留该 commit。
    r, reword: 保留该 commit,可以修改 commit 的注释。
    e, eidt: 保留该 commit,但停下来修改该 commit (不仅仅是注释),可以用来解决 merge 冲突。
    s, squash: 将该 commit 和 前面一个 commit 合并。
    f, fixup: 将该 commit 和 前面一个 commit 合并,但不保留该提交的注释信息。
    x, exec: 执行 shell 命令。
    d, drop: 丢弃该 commit。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    合并后修改commit注释,直接编辑即可。

    参考自:https://zhuanlan.zhihu.com/p/437636081

    6. Git修改最近提交的 commit 信息
    $ git commit --amend --message="modify message by xxtest" --author="xxxxx "
    
    # 仅修改 message 信息
    $ git commit --amend --message="modify message by xxtest"
    
    # 仅修改 author 信息
    $ git commit --amend --author="xxxxx "
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    7. 删除本地和远程的tag
    1. 删除本地tag
    git tag -d tag-name
    
    • 1
    1. 删除远程tag
    git push origin :refs/tags/tag-name
    
    • 1
    8. 删除tag,branch的缓存

    如果pod tag后,删除tag再添加同名的tag,pod会使用tag缓存。
    破解办法

    pod cache clean 你的库名字
    
    • 1
    9. git忽略已经加入版本控制的文件

    对于一些已经加入到git版本控制的临时代码(如target下编译的class文件,根本不需要git追踪),如果每次提交都要手动去除,还是很麻烦的。那么如何清除这些已经加入到版本控制的代码呢?

    如果是忽略文件的话 git rm --cached 文件名
    
    如果是忽略文件夹的话 git rm -r --cached 文件夹名
    
    • 1
    • 2
    • 3
    10. git cherry-pick 多个commit操作
    1. 单个commit合并
    git cherry-pick commit_id
    
    • 1
    1. 多个连续commit合并
    git cherry-pick commit_id..commit_idn
    
    • 1

    或者

    git cherry-pick commit_id commit_idx commit_idy
    
    • 1
    11. Git 找回删除文件的方法
    1. git checkout
    git checkout filePaht/Directory
    
    • 1

    需要注意的是,使用 checkout 命令会覆盖掉本地的修改,所以在使用前需要将本地的修改进行备份或者提交到版本库。

    这个命令的含义是将该文件从暂存区恢复到工作区,也就是取消对该文件的暂存。如果我们刚刚将该文件删除时没有执行 commit 命令,则该文件是在暂存区被删除的。使用 reset 命令可以将该文件从暂存区恢复到工作区。

    需要注意的是,使用 reset 命令不会删除文件,只是将文件从暂存区移动回工作区。如果需要将文件完全删除,则可以使用 rm 命令将其删除,然后再使用 commit 命令提交删除操作。
    2. git reset

    git reset HEAD filePaht/Directory
    
    • 1

    这个命令的含义是将该文件从暂存区恢复到工作区,也就是取消对该文件的暂存。如果我们刚刚将该文件删除时没有执行 commit 命令,则该文件是在暂存区被删除的。使用 reset 命令可以将该文件从暂存区恢复到工作区。

    需要注意的是,使用 reset 命令不会删除文件,只是将文件从暂存区移动回工作区。如果需要将文件完全删除,则可以使用 rm 命令将其删除,然后再使用 commit 命令提交删除操作。

    1. 同步远端分支到本地
    git remote prune origin
    
    • 1

    prune /pruːn/
    v.修剪,修整;删除,削减
    n.李子干,西梅干;<非正式>讨厌的人,乏味的人;(树枝、灌木丛等的)修剪,修整

    遇到的问题:

    cannot lock ref 'refs/remotes/origin/bugfix/bug': 'refs/remotes/origin/bugfix' 已存在,无法创建 'refs/remotes/origin/bugfix/bug'
    来自 gitlab.zhangyue-inc.com:dejian_ios/iReaderDejian
     ! [新分支]              bugfix/bug -> origin/bugfix/bug  (不能更新本地引用)
     
    
    • 1
    • 2
    • 3
    • 4

    git fetch/ pull 拉取远端分支失败。提示如上错误。

    参考:
    https://editor.csdn.net/md/?articleId=134030957
    https://blog.csdn.net/wangqingpei557/article/details/53147086

  • 相关阅读:
    Apache Tomcat CVE-2020-1938 漏洞
    【Day-35慢就是快】代码随想录-二叉树-二叉搜索树的最近公共祖先
    自动化测试:为什么需要框架
    谷歌成功利用一台 54 量子比特的量子计算机
    搜索技术【广度优先搜索】 - 优先队列式广度优先搜索
    怎么监控上网记录?监控上网记录的软件推荐
    vue3 axios封装
    Cyclone DDS(初识)
    MySQL高级篇之索引的使用
    激光器选型指标
  • 原文地址:https://blog.csdn.net/zcl369369/article/details/126628446