美文网首页
git 使用注意点

git 使用注意点

作者: 前行的乌龟 | 来源:发表于2019-01-11 00:01 被阅读65次

平时看高玩们操作 git 时眼花缭乱的,可是非常羡慕的,git 不用工具,用命令行,在外人看来,这可是老高端的了,非常装逼,所以推荐大家学习,熟练掌握 git

这里我记录 git 中需要注意的部分,基础部分请 baidu

ps: 19.1.10 重新整理,上一篇已删除


工作区和版本库

工作区和版本库用文字描述不容易裂理解,大家看图



一张图,道尽所有~


撤销修改

撤销操作我们时不时会碰上,撤销包括:

  • 撤销工作区的修改 -> 代码改了但是还没 add
git checkout -- app/src/main/java/com/bloodcrown/bw/screenauto/HeightActivity.kt
  • 撤销暂存区的修改 -> add 了但是还没 commit
git reset HEAD app/src/main/java/com/bloodcrown/bw/screenauto/HeightActivity.kt
  • 返回上一次提交 -> commit 了,回滚到上一次 commit
// 回滚一个版本
git reset --hard HEAD^
// 回滚任意个版本
git reset --hard HEAD~1

需要注意的是啊,撤销工作区和暂存区操作,具体到某一个文件时,该文件必须使用全路径名,我用文件名+后缀的方式,死活也跑步过去

checkout 还可以用来恢复被删除的文件,但是前提是这个文件得再暂存区或是版本库里面有才行


文件差异对比

我们有时会对比某个文件和版本库里面的差异

git diff HEAD -- app/src/main/java/com/bloodcrown/bw/screenauto/HeightActivity.kt

还是得注意,文件需要使用全路径名
![(https://img.haomeiwen.com/i1785445/cd53bd517ab32f70.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

--- 号:代表 HEAD 版本库中的代码
+++ 号:代表工作区中的代码


合并分枝的3种方式

  • fast-forward 快速合并
  • --no-ff 非快速合并
  • --squash 压缩 commit 合并

下面有张图,解释的比较清楚:


fast-forward

git 直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建 commit

我们在 2 个分枝中修改是同一个文件,那么默认的 merge 合并就是 fast-forward 类型的

典型的特征是

git checkout -b dev后,在dev分支做了修改,提交了好几个commit。git checkout master,然后git merge dev。此时没有冲突,快速合并成功。
但是:我们在dev分支中的commit记录都没有了!!!

特别注意的是, fast-forward 方式其实明没有真正的合并代码,而是把一个分枝指向合并分枝的commit 操作,这样的坏处时,若我们再合并后把 dev 分枝删了,那么会影响 master 中的代码

--no-ff
git merge --no-ff -m '禁用fast-farword合并' dev

我们再合并时做一个提交,这样代码就在 master 分枝中保存了一份,我们就可以 删除 dev 分枝了,但是会把 dev 分钟的各种 commit 记录带到 master 中,我觉得 master 分枝不关心 dev 分枝中的具体 commit ,关心的是合并 commit ,就像代码封装一样,manage 管理类不必关心其中工具类的具体实现

squash

$ git merge --squash another
$ git commit -m "message here"

squash 方式,不会把 dev 分枝的 commit 记录带到 master 分枝中,使用 --squash 合并后,会把代码的不同合并之后添加到 暂存区,需要我们手动 commit 一次,这里我们写 dev 合并到 master 。好处是不影响 master 分枝的提交记录,这样在我们以后梳里提交历史时会很干净,不会有其他分提交历史干扰

我们看个例子:

  1. 先创建一个名叫 test 的分枝,提交2次,log 日志如下:


  2. 然后我们使用 squash 把 test 分枝合并到 master 分枝,然后 commit 此次合并,然后看 master 分枝的 log:


看的很清楚,test 分枝的提交记录不会再 master 分枝中看到,这种方式其实才是我们大部分时候需要的


分枝操作

查看分支,绿色的是当前分支

git branch -a  

删除分支

git branch -d xxx 

新建并切换到分支

git checkout -b xxx  

切换分支

git checkout xxx  

若是我们的本地仓库没有和远程仓库关联,使用 remote 命令关联远程仓库

git remote add origin https://github.com/WuXiaolong/WeWin.git  

比如我们提交本地代码到 github 时,会涉及到 ssh 密钥一些替他问题,具体的请看:

此时我们的本地仓库已经和远程仓库关联起来了,比如远程仓库里面有一个分枝,我们想拉下来到本地

本地没有这个远程分枝时

git checkout origin/remoteName -b localName 

本地有这个远程分枝时

git pull orign devolp:zhangbin

反过来我们要提交一个分枝到远程,远程此时没有这个分枝

git push orign zhangbin:devolp

删除远程分支,:左边的本地分支为空,那么将删除:右边的远程的分支

git push origin :test

打 tag

git tag v0.0.1 //创建本地tag
git tag -d v0.0.1 //删除本地tag
git tag -a v0.0.1 -m "version 0.0.1"  // 创建tag并添加备注信息
git push origin v0.0.1:v0.0.1  //提交本地分支

reset 三种用法

reset HEAD 我们可以回滚版本,其实 reset 也是有多种限定符可用的

  • git reset (–mixed) HEAD~1
    回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响)
  • git reset –soft HEAD~1
    回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)
  • git reset –hard HEAD~1
    回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换

stash 保存暂存区

stash 命令也是我们常用的,比如领导让赶紧改一个 bug ,但是我们正在新的分枝开发代码呢,代码这时写到一半,我不想提交一个没意思的 commit 上去怎么办,那就得用 stash 来把暂存区保存下来

保存暂存区

git stash save "测试 stash"

查看暂存区保存记录

git stash list

恢复暂存区保存的代码

git stash pop

删除某一个暂存区保存记录,后跟这个记录对应的编号

git stash drop stash@{1}

删除某一个暂存区保存记录

git stash clear

参考:

相关文章

  • [Git]使用注意点

    yum 更新 nss 在clone的时候失败 解决: yum仓库软件版本太低 访问 http://mirrors....

  • git 使用注意点

    平时看高玩们操作 git 时眼花缭乱的,可是非常羡慕的,git 不用工具,用命令行,在外人看来,这可是老高端的了,...

  • git 操作以及submodule模式详解,附加jenkins对

    git常用命令 注意:请确保已经安装里git客户端 git使用帮助 git --help //git使用帮助,可...

  • git使用注意

    切换分支后需要把远程分支pull下来 否则git status看到的也是你在当前分支的修改,但是,看修改的代码,上...

  • Git常用命令及问题处理

    基本命令 初始化一个Git仓库,使用git init命令。 1. 使用命令git add,注意,可反复多次使用,添...

  • iOS 小谈一叙

    一、规范 1) git 提交规范 适当使用git merge / git rebase 2) 代码规范 注意改动别...

  • Git 常用命令

    git命令详解 注意:比如git checkout -- ,事实上很多时候我们使用git ch...

  • git命令(一)

    前言 Git分布式版本管理系统。 1.git 使用前提 2. git 常用命令 3.使用注意事项 4. 解决gi...

  • 工作中使用 Git 解决问题的场景

    简单来说,就这七点: 使用 git rebase 让提交记录更加清晰可读 使用 git reflog + git ...

  • Git之-Gitlab的使用

    Gitlab的使用 注意:以上这条 ssh 命令测试通过,未必代表就能 git clone 代码,git clon...

网友评论

      本文标题:git 使用注意点

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