Git 操作进阶使用

作者: 过期的薯条 | 来源:发表于2020-02-22 16:40 被阅读0次

1.引言

最近跳槽啦,入职啦一家新的公司,5个人协同办公,共同维护一个项目。因为自己git 用的不是很熟悉,导致,自己提交之后的代码,把服务器上的代码弄乱啦。折腾了一俩天。给自己带来麻烦的同时也麻烦啦我的同事。所以今天花啦一整天学习下git的进阶使用。我是在Linux上写的这篇博客

2.正题

2.1 概念

暂存区:通过git add. 将文件提交的区域
本地区:本地git仓库保存的区域
工作区:对本地区代码进行修改,保存的区域

image.png

2.2 git 中的关联关系:

  • 本地仓库和远程仓库的关系
 git  add   remote   origin  <远程仓库的地址>      本地仓库和远程仓库建立连接 

 git remote -v    查看远程仓库的地址
  • 本地分支和远程分支的关系
   git checkout -b   <本地分支名>   origin/<远程服务器分支名称>   将远程分支拉到本地。此时远程分支和本地分支没有建立联系
   
   git branch  -u  origin/ <远程分支名字,不带origin>           本地分支和远程分支建立联系(ps: 默认是当前的本地分支)

  • 查看本地分支 和远程分支 的对应关系
   git branch -vv   

2.3 场景分析

2.31 本地commite 合并

多人本地协同办公,为了保证日志的清晰,每个人提交一次,只能有一个结点。也就是说本地有多个commite打话,必须要合并成一个commite。commite的合并 用到git rebase -i [startCommiteId]。此条指令的意思是,将startCommiteId 之后的提交合并成一个。
示例:

image.png

现在要将”本地的三次提交" 合并成一次。选择”本地第一次提交" 前的一次commitId 作为startCommiteId,也就是 commit:e21b9a743c 那次提交。

执行:git rebase -i e21b9a743c,进入如下界面


image.png

将"pick " 改成 s 就行。s是 squash的 缩写。 修改完毕:Ctrl+X 退出编辑界面,进入到 ”合并日志填写界面”

image.png

Ctrl+X 退出之后,就会提示保存成功


注意:
git rebase -i 是将最新的一次提交,压缩到"前一个提交"上,因此我们不能把 将 "前一个提交"前打"Pick" 改成 "s"。 否则会提示:

Git: 在转换时出现"没有前一个提交不能进行'squash'"

image.png

2.32 减少 冲突合并生成结点

合并是无时无刻存在的,单纯的使用 git pull 将会发生合并操作。导致本地新生成一个 "合并结点"。然后提交到服务器上,就会有这条合并记录。日志上会很难看,且容易出现混乱。(ps:我本人就是因为这样的操作,导致混乱)。正确的方式是:

git  pull  --rebase  origin  远程分支名

之后,通过  git status 查看 冲突 ,更改冲突完毕之后

git add .

git rebase --continue

这样就不会生成一个新的结点。前提啥:本地分支已经提交

2.33 分支选择性合并

当前分支为A,还有一个分支为B。现在想将B分支的一次提交,合并到A分支上。使用

git  cherry-pick   commiteId 

有提示冲突:git status 查看,并修改,之后,git  commit  -s  提交 这次的合并

以上就是我最近一天遇到的关于git使用的痛点。通过这些天的摸索,也逐渐学会啦一些其他打命令。

git  reset  + commitId   回退版本,commitId 之后的改动,会在工作区中保存

git reset --soft  +commitId   回退版本,commitId 之后的改动,会在工作区中保存

git reset --hard   +commitId  回退版本到指定版本,commitId 之后的改动就会被丢弃(  慎用)

git  branch -vv   经常需要查看当前head 是否在分支上,以及本地分支对应打远程分支

git  push  origin  HEAD:远程分支名    "HEAD" 必须完全大写。假如不指定远程分支,git push 默认是在远程服务器新建立一个  和  本地分支名称一样的,远程分支

git pull --rebase  origin   远程分支名 (不要用origin/远程分支名)


目前还有这些内容待总结:

  1. Choreographer 学习
  2. ViewGroup 自定义不执行onDraw().通过设置 setWillNotDraw(false);
  3. ArgbEvaluator 类 可以实现字体颜色/背景的渐变效果
  4. 给控件设置ele 阴影,发现没得反映 需要调用下:setOutlineProvider()
  5. focusSeach 进一步深入理解
  6. TvRecycleView的bug 。设置了拦截子view 焦点的 模式,导致子view requestFOcus 失败
  7. android tv 有些view setOnClick/setlongClick 无反应。(原因是父布局dispathEvent返回true,更加深一层的原因是 view焦点占据,所以不响应事件)
  8. Git rebase Git revert Git stash ,Git commit -s 等等操作练习

革命尚未成功,同志们还任需努力!


补充:

git stash: 将当前分支下,工作区的代码(改动的)存入栈中。方面进行git pull 操作

git stash pop: 将当前栈中改动的代码,移出并且删除,移出的意思是与当前分支进行合并。既然是合并就会产生冲突。解决冲突之后,git add . 一下 就 ok了。

git stash show : 查看是否栈中有缓存的代码

git stash clear: 删除 栈中的代码

相关文章

  • Git 操作进阶使用

    1.引言 最近跳槽啦,入职啦一家新的公司,5个人协同办公,共同维护一个项目。因为自己git 用的不是很熟悉,导致,...

  • git使用技巧

    基本操作 初级 进阶 升华 git更改源地址 由于使用https的git地址, 总是报错error: The re...

  • GIT和Github

    #Git的初识 ##Git 的使用 Git 使用初尝试 新建项目来操作 克隆已有项目来操作 Git 的使用 by ...

  • Git常用操作

    Git常用操作 基础: ​ 进阶: 1.1 本地库初始化 本操作会生成 .git 目录,存放的是本地库相关文件。 ...

  • ios git的使用

    git本地操作 git团队开发操作 git分支管理 gitHub使用

  • git操作进阶

    远程仓库github网站是著名的开源分布式代码托管网站,结合git工具,可以让我们在团队管理代码时十分方便首先注册...

  • Git进阶操作

    主要总结了一些git基础上的一些指令,直接展示用法,方便大家查询使用 1. 删除本地远程连接 之后可以用git r...

  • gitflow 规范及工具整理

    gitflow 进阶规范 git cz 通过工具 git-cz 规范 git commit 提交信息。 使用 gi...

  • snakemake常见功能记录

    通配符的使用 进阶操作 Expend(自定义数组) 进阶操作 Threads与Resources Messages...

  • git 进阶

    git 进阶 保证日常正常的使用只需要记忆不到二十个命令即可,但是要是达到所有操作都了然于心那不记忆上千个操作可是...

网友评论

    本文标题:Git 操作进阶使用

    本文链接:https://www.haomeiwen.com/subject/wjplqhtx.html