git操作记录

  1. 创建本地仓库

    //创建文件夹
    mkdir hello-git
    //改变工作目录到hello-git
    cd hello-git
    //初始化Git相当将文件夹升级为仓库
    git init
    //此时,git命令会在文件夹下创建一个.git文件夹所有后面神奇的版本控制功能都是通过这个文件夹里面的 这些神奇的文件实现的。
    tree -a
  2. 将文件添加到版本库

    git add index.vue   //单文件情况
    git add .           //添加多文件跟踪,具备递归文件夹功能
    git rm --cached index.vue //取消跟踪
  3. 查看此时版本库的状态

    git status
  4. 从缓存中恢复文件

    //删除文件
    rm -f index.vue
    //从缓存区检出文件
    git checkout index.vue
    //查看文件
    cat index.vue
  5. 忽略文件.gitignore

    //如果你希望在使用 add .的时候忽略某一个文件可以在目录下创建一个
    .gitignore文件
    
    #.gitignore 
    # 忽略dist.js 
    dist.js
  6. 提交代码

    //提交代码是指已经完成了某一阶段的代码开发比如你完成了某一个代码功能(features)或者修改了某一个
    代码缺陷(fix),你就可以创建一次代码提交。
    
     git commit -m 'add index.vue'
  7. 保存临时工作成果

    git stash //保存工作现场到栈
    git stash pop //从栈中弹出工作现场
  8. 放弃修改

    git restore . //放弃修改
  9. 回退到上一次提交

    //相比上次,再做一次提交,-a是先添加到缓冲区再提交的意思
    git commit -am 'index.vue 02'
    //此时,查看一下提交记录
    git log
    git log --oneline #简短日志
    git reflog #操作记录  包括回退记录也会被显示
    //开始操作
    #只是版本回退 不更新工作区
    git reset HEAD^
    #不但版本回退 也会更新工作区(文件目录)的文件到上一个版本
    git reset --hard HEAD^

    概念:

    • 工作区:就是文件目录,因为你的开发工作就是对文件的修改,所以叫工作区
    • 缓存区:没有提交前,也就是没有完成工作结果,代码保存的地方
    • 版本库:每一个工作结果的时间都会被按照不同的提交记录保存起来
  10. 分支管理

    //切分新的分支,做新功能点
    #分支A
    #创建分支并切换到funA
    git checkout -b 'funA'
    //完成功能
    。。。。
    //提交功能
    git commit -am 'funA add'
    //回到master,检出
    git checkout master
    //合并将开发分支合并到主分支
    git merge funA
    //可以利用-d 合并的同时删除分支
    git merge -d funA
    
    #删除分支
    git branch -D <分支名称>
  11. 分支的查看

    #查看
    git branch
    #查看 -a 包括远程分支
    git branch -a
    #删除
    git branch -D <分支名称>
  12. 冲突解决

    #假如已经针对于两个分支的同一个文件进行了修改,那么可以向master合并的时候
    git checkout master
    git merge -d funA
    //走到这个,完事,开始有冲突
    fit merge -d funB
    
    注意:由于对于同一行代码进行了修改,此时git需要人工合并代码,可以用开发工具查看
    
    处理:
    保留你需要的部分,然后进行一次merge提交,其实就是一次commit的过程
    git commit -am 'Merge branch funB'
    
    最后:我们可以通过log看一下合并过程
    
    git log --graph --pretty=oneline --abbrev-commit
     
  13. 清洗提交历史 --squash方式合并

如果你的分支开发历经各种磨难,里面有很多细节的功能进展你不希望其他人了解,又或者你在开发的 过程中肚子饿了,希望通过一次的commit来保留中间成果。但是最终提交的时候不希望你的这些中间细 节被被人了解,可以采用这样的办法

#创建分支并切换分支到funA
git checkout master
git checkout -b 'funA'
//制造2次提交
echo 'STEP02 BBB' >> README.md 
git commit -am 'FunA commit 01' 
echo 'STEP03 BBB' >> README.md 
git commit -am 'FunA commit 02'
#切换master分支
#使用squash方式提交 只合并不commit
//也就是说,使用主分支合并到时候,直接拿走A分支,不要commit记录
git merge --squash funA
//此时,查看一下status发现,合并代码并没有提交,只是将所有的提交都整合到了一起,放在暂存区。
#创建分支并切换分支到funA
git commit -am 'funA update'
//这个时候我们可以使用commit方式进行提交留下光辉的而干净的一笔。
  1. 标签管理
//给自己的代码打上版本标记,给自己的版本设置里程碑
#将最新提交打标签
git tag v1.0
#将指定commit 打标签
git tag v0.9 4ab025
#查看打标签
git tag
#查看与某标签之间的差距
git show v0.9

你可能感兴趣的:(git)