zoukankan      html  css  js  c++  java
  • Git版本控制原理和常用指令说明

    平时在Android Studio开发Android项目,习惯了点击右键或图标直接拉新fetch,pull,commit和push。但是必要的时候还得在终端输入命令行。比如正在开发新版本v3.0,老板说上个版本的某个地方操作容易误导客户,需要及时改回来发版。这时就需要创建新的分支2.1,回退到上个稳定版本2.0稳定版本tag进行修改,同时正在开发的版本也需要修改,那么可以通过git cherry -pick <commit id>来进行同步修改。

    上了一定年纪,记性不太好(虽然刚毕业一年)。每次只记个大概,实践输入提示:git: 'XXX' is not a git command. See 'git --help' 时,就很懵逼,有点怀疑人生,不得已又开始找度娘。

    好了,悠哉够了,就认真记git版本控制的原理和常用指令说明。下次怀疑人生的时候就不要再请教度娘了,自己动手,丰衣足食。

     

    1.GIT版本控制优势介绍

    1. Git是采用分布式架构。每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。SVN有一个中央服务器,属于集中式。
    2. Git把内容按元数据方式存储,而SVN是按文件:因为.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。.git目录的体积大小跟.svn比较,你会发现它们差距很大。
    3. Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不可以。
    4. 版本库(repository):SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。而 Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。
    5. 回退版本方便。

     

    2.GIT常用操作指令说明

    GIT常用操作指令说明
    指令名称 指令说明
    git init  初始化创建本地仓库
    git add filename 添加某个文件
    git add . 添加所有修改的文件
    git commit -m “提交说明”   提交当前暂存区的文件
     git merge dev  合并分支
     git checkout -b dev  新建一个dev分支
     git branch -D dev  删除dev分支
     git branch  查看本地分支
     git branch -r  查看远程分支
    git fetch origin 远程分支x:本地分支x 拉取远程分支,需要chenkout进行切换
    git push origin --delete dev 删除远程分支
    git status 查看当前修改状态
    git stash

    分支切换前不想带到别的分支,又不想提交脏数据的时候使用

    (亲测,亲测偶尔不灵,丢失了好几次TAT,建议最好还是提交了再切换分支)

    git tag -a v1.0 -m “version 1.0” 创建了本地一个版本 v1.0 ,并且添加了附注信息 'version 1.0'
    git tag 查看标签
    git show v1.0 查看某个版本的附注
    git push origin --tags tag远程推送
    git tag -d v1.0 删除本地标签
    git push origin:refs/tags/v1.0 推送的空的同名版本到线上,达到删除线上版本的目标
     git cherry-pick <commit id> 可以选择某一个分支中的一个或几个commit(s)来进行操作
    git stash 暂存
    git stash apply 应用还原暂存区,最后一次stash的数据
    git stash list

    查看stash的记录:

    stash@{0}

    stash@{1}

    stash@{3}

    git stash apply stash@{1} 应用某一次的stash

    git stash clear 清除暂存区记录
    git pull --rebase

    = git fetch + git rebase

    减少提交记录中多了merge无用提交记录

    git rebase - i HEAD~2 

    合并本地最近几次提交记录,如果中间出现问题,可以退出或者强制退出,git rebase --abort结束上一次的rebase操作

    git branch --set-upstream-to=origin/remote-branch your_local_branch  关联本地分支和远程分支
    git checkout -b "new_branch" origin/"remote_branch" 新建一个分支和远程分支关联
    git log --oneline 查看提交记录,一行显示基本信息

    补充说明:git cherry-pick <commit id>

    解决冲突后:git cherry-pick --continue

    取消cherry-pick:git cherry-pick --abort

    git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0中的功能到v2.0中,这里就可以使用cherry-pick了。

    回滚到稳定版本tag:

     git tag

    git show v2.0

    git reset --hard tagId

    最近注意github的绿格子,提交了没有显示绿色,原因是设置本地git的uer.name 和user.email可能和github上设置的不一样,改成一样的就可以了。

    git config --global user.name yourname

    git config --global user.email youremail

    Tips: 关联远程仓库的步骤,注意设置user.name 和 user.email和远程仓库中设置的一样,使用ssh秘钥配置关联方式:

    git config --global user.name yourname
    git config --global user.email youreamil

    git config user.name 查看你本地git仓库全局设置的名称
    git config user.email 查看你本地git仓库全局设置的邮箱

    生成秘钥:复制公钥ssh-key公布出去:
    ssh-keygen -t rsa -C "youremail"

  • 相关阅读:
    iOS开发 数据缓存-数据库
    我是程序猿,我自豪,我骄傲!嗷嗷嗷!
    【Golang】练习-复制文件
    【Golang】练习-读取目录下的文件并按时间进行排序
    【Golang】练习 tailf 简单模拟
    【Golang】基础-切片 for 循环删除元素
    【Golang】基础-操作 csv 文件
    【Golang】Godoc 或者第三方 plugins 插件介绍
    【Golang】类型转换之 cast 包
    【Golang】解决 go get下载包慢或者失败的问题
  • 原文地址:https://www.cnblogs.com/denluoyia/p/9288854.html
Copyright © 2011-2022 走看看