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

2023-02-13,,,,

.eye-care { background-color: rgba(199, 237, 204, 1); padding: 10px }
.head-box { display: flex }
.text-indent { text-indent: 2em }
.text-bg { }
.bg { font-size: 12px; font-weight: 600; color: rgba(0, 0, 0, 1); margin-bottom: 20px }

GIT 运行流程图

GIT 常规操作

创建分支,clone、checkout
diff代码 ,查看代码具体改动
diff分支 ,查看分支commit的差异
合并代码,merge还是rebase
版本回退,git log + git reset
代码回退,clean、checkout、reset

Git完整操作流程

Git bug分析

创建分支

.gitignore文件

选择哪些文件不需要git进行上传(版本管理,前端项目一般是nodemodules文件

git clone 的是dev的分支,怎么提交到other分支

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

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

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

创建并指定特定远程分支

git branch -d 指定分支名 删除该分支

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


命令行 diff 代码

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

    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回退到历史版本

    git log --pretty=oneline : 找一个需要回到的版本hash号
    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


完整提交流程:

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四种基础状态



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

Git创建、diff代码、回退版本、撤回代码,学废了吗的相关教程结束。

《Git创建、diff代码、回退版本、撤回代码,学废了吗.doc》

下载本文的Word格式文档,以方便收藏与打印。