Fork me on GitHub

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Git创建分支、diff代码、回退版本、撤回代码,学废了吗

GIT

GIT 常规操作

Git完整操作流程

  • Git bug分析

创建分支

  • .gitignore文件

    选择哪些文件不需要git进行上传(版本管理,前端项目一般是nodemodules文件
  • git clone 的是dev的分支,怎么提交到other分支

    1. git branch -m oldBranch newBranch (切换分支: git branch -m dev function/hasdone)
    2. git push -u origin function/hasdone (push 的时候页更新一下分支)

    git clone -b xxx 拉取指定xxx分支的代码

  • git checkout -b 本地分支名 origin/远程分支名

    创建并指定特定远程分支
  • git branch -d 指定分支名 删除该分支

  • git push origin 指定分支名(如没有则新建)


命令行 diff 代码

  1. diff展示指定文件差异:git diff xxx文件

  2. diff展示总体差异

  • git diff branch1 branch2 --stat

    显示差异的概括陈述,branch2 比 branch1 增删的文件,branch1为参考分支
  • git diff branch1 branch2 具体文件路径

    显示两个分支在该文件的具体差异
  • git diff branch1 branch2

    显示两个分支的全部具体差异(不推荐)

命令行 diff 分支,查看分支commit的差异

  • git log branch1 ^branch2

    branch1分支有,而branch2分支没有
  • git log branch1..branch2

    b2 比 b1 多提交的commit日志
  • git log branch1...branch2

    单纯显示两个分支日志的不一样
  • git log -left-right branch1...branch2

    显示日志的不一样基础上显示不同点是在哪个分支上

rebase 合并分支

  • 当你push你的commit时,其他人先于你 提交了 一些commit,产生了冲突

    直接pull或者merge,都会在git log 你的日志上产生一个分叉然后合并的情况,分叉为其他人提交的commit
  • 优雅永不过时,`git rebase Main self`

    将Main 分支 合并到 self 分支,不会产生分支,self 分支上有而 Main 分支上没有的commit将会按需加入你的日志中
  • 尔后,你再 push 你的分支,将 self 分支上的commit 提交上去

    这样冲突就变成一个线性的状态,不会产生额外的分支

版本回退

  • git reset回退到历史版本

    1. git log --pretty=oneline : 找一个需要回到的版本hash号
    2. git reset --hard 版本hash 号

代码回退

    情况1、只在本地工作区(workspace)新增了文件A,状态为untrack
    • 删除 untrack file文件

      • 删除指定untrack file :git clean -f xxx文件
      • 删除所有untrack file :git clean -f
    • 删除 untrack file文件及目录

      • 删除指定untrack file :git clean -fd xxx文件/目录
      • 删除所有untrack file :git clean -fd
    情况2、只在本地工作区(workspace)修改了文件A(包括删除文件A),但还没有使用 git add 把A的修改暂存到暂存区(index),状态为Changes not staged for commit
    • 撤回所有修改:git checkout .
    • 撤回指定文件的修改:git checkout -- xxx文件
    情况3、已经使用git add暂存了本地修改,状态为Changes to be committed:
    • 撤回所有暂存修改:git reset head .
    • 撤回指定文件的修改:git reset head -- xxx文件
    情况4、已经使用git commit暂存了本地修改,状态为Your branch is ahead of ***
    • 如上文回退版本所示,强制回退到上一个版本:git reset --hard head^
      • 返回到某个节点,不保留修改 :git reset --hard commit_id,commit_id通过git log 查看
      • 返回到某个节点,保留修改 :git reset --soft commit_id

新建分支并与远端指定分支绑定

  • git -b 指定分支 ***.git

  • git checkout -b *本地分支名* origin/*想要拉取的远程分支名*

  • git branch dev #本地建立一个分支

    git branch --set-upstream-to=origin/dev dev #将远程分支dev和本地分支dev关联


完整提交流程:

1. git add . 
2. git stash save "提示信息"  //存储到staged状态里面,不再进行跟踪
3. git merge 指定分支(可远可近) // 合并到本地代码
4. git [stash](https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html "stash") pop 弹出并使用   / git stash apply  应用栈顶缓存

git四种基础状态

image



git报错处理

git提交报错:OpenSSL SSL_read: Connection was reset, errno 10054
解决:在每一次提交前修改全局配置:git config --global http.sslVerify "false"

centos7 git clone 报错:SSL certificate problem: unable to get local issuer certificate
解决:命令行输入git config --global http.sslVerify false

posted @ 2022-11-23 15:21  365/24/60  阅读(548)  评论(0编辑  收藏  举报