• git常用命令和开发常用场景


    git命令

    git init
    创建一个空的git仓库或者重新初始化已有仓库
    git clone [url]
    将存储库克隆到新目录
    git add 
    添加内容到索引
    git status
    显示工作树状态
    git commit -m ""
    记录仓库的修改
    git reset   
    重置当前HEAD到指定的状态
    git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    git reset –-mixed:回退到某个版本,只回退了commit的信息,并且恢复到index file一级。如果还要提交,需要重新add,再commit即可
    git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容(误操作后需要学git reflog挽救),撤销的commit中所包含的更改被冲掉
    git branch  -m改名 -c 复制分支  -d删除上游分支  -r删除远程分支
    列出、创建或删除分支
    git checkout   -b创建并切换
    选择分支或者恢复工作树文件
    git merge
    合并多条历史提交描述记录
    git log
    显示提交日志
    git stash
    将变化藏在一个脏工作区中
    git tag
    创建、列出、删除或验证使用GPG签名的tag对象
    git fetch
    用于从远程仓库获取最新的提交历史和分支信息,但并不自动合并或修改本地代码。
    1. 检查远程仓库是否有新的提交或分支。
    2. 获取远程仓库的最新提交历史,但不会应用到当前工作目录中。
    3. 更新本地仓库的远程分支指针,指向远程仓库的最新提交。
    git pull <远程主机名> <远程分支名>:<本地分支名>
    用于从远程获取代码并合并本地的版本。
    git push <远程主机名> <本地分支名>:<远程分支名>
    用于从将本地的分支版本上传到远程并合并。
    git cherry-pick 
    这个命令的作用就是把指定的commit,拉到一个新的分支上。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    三人合作开发项目git命令实例

    1. 克隆(Clone)远程仓库:

      git clone <远程仓库URL>
      
      • 1
    2. 创建自己分支(Branch):

      git branch <分支名>
      git checkout -b dev origin/dev
      
      • 1
      • 2
    3. 切换到自己的分支:

      git checkout <分支名>
      
      • 1
    4. 查看状态(status)添加(Add)和提交(Commit)更改:

      git status
      git add <文件名>     或者 git add .  提交所有
      git commit -m "提交信息"
      
      • 1
      • 2
      • 3
    5. 拉取(Pull)远程仓库的更改:

      git pull origin <分支名>
      
      • 1

      如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/

    6. 解决冲突(Conflict):
      合并分支时出现冲突时,手动解决冲突并提交更改。

    7. 推送(Push)更改到远程仓库自己的分支:

      git push origin <分支名>
      
      • 1
    8. 成功推送之后在远程仓库提交合并请求到主分支

    版本回退

    1.查看提交历史,选择要回退的版本

    git log
    
    • 1

    2.回退版本

    git reset --hard commit_id
    
    • 1

    3.如果后悔,想要重返未来

    git reflog  查看命令历史  确定回到未来的哪个版本
    
    • 1

    git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    git reset –-mixed:回退到某个版本,只回退了commit的信息,并且恢复到index file一级。如果还要提交,需要重新add,再commit即可
    git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容(误操作后需要学git reflog挽救),撤销的commit中所包含的更改被冲掉

    Bug分支场景

    模拟场景:当你接到一个修复一个代号101的bug的任务在master分支上,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交

    1.把当前工作现场储藏起来

    git stash
    
    • 1

    2.修复bug

    git checkout master
    git checkout -b issue-101
    git add .
    git commit -m "fix bug 101"
    //[issue-101 4c805e2] fix bug 101
    git switch master
    git merge --no-ff -m "merged bug fix 101" issue-101
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.继续开发dev

    git switch dev
    git status
    git stash list
    
    git stash apply + git stash drop  / git stash pop
    git stash list
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    场景:同样的bug,要在dev上修复,我们只需要把4c805e2 fix bug 101这个提交所做的修改“复制”到dev分支。注意:我们只想复制4c805e2 fix bug 101这个提交所做的修改,并不是把整个master分支merge过来。

    $ git branch
    * dev
      master
    $ git cherry-pick 4c805e2
    [master 1d4b803] fix bug 101
    
    • 1
    • 2
    • 3
    • 4
    • 5

    git merge三种使用场景

    命令都是一样的开发完dev分支然后切回master分支之后
    git merge dev
    只不过第三种会报错需要在master分支上解决冲突之后自行提交一次就ok
    1.快进(无冲突

    在这里插入图片描述

    在这里插入图片描述

    2.非快进(无冲突

    在这里插入图片描述

    3.非快进(有冲突

    在这里插入图片描述

  • 相关阅读:
    离子风蛇有什么作用?
    Axure绘制数字加减器
    2024-Pop!_OS新版本,新桌面环境的消息
    Kubernetes(K8S第三部分之资源控制器)
    我,在日本开密室逃脱,钱还没赚,人进“橘子”了……
    图解神经网络的基本原理,神经网络基本结构说明
    pytorch环境搭建到pycharm项目映射配置(成功后回顾性记录/自用)
    服务器掉包的原因及处理办法
    Unity --- 网格链接与动态障碍物
    MYSQL 存储java.sql.Timestamp类型的数据时,mysql存储时间和java获取到的时间相差8小时
  • 原文地址:https://blog.csdn.net/m0_52973251/article/details/133749094