美文网首页
Git使用简述

Git使用简述

作者: Zzmi | 来源:发表于2019-02-17 13:04 被阅读0次
    1. 第一阶段[无分支操作]   
    $ git init            初始化,开始管控文件夹
    $ git status          查看当前文件夹状态
    $ git add 文件名       对指定文件进行版本控制
    $ git add .           对指定文件夹下的所有文件及子目录进行版本控制
    $ git commit -m '提交详细的描述信息'           创建提交记录(版本)
    $ git log             查看提交的记录
    $ git reflog          查看所有的提交记录(包括回滚后)
    $ git reset --hard 指定版本号         回滚至指定版本
    
    git两区四状态
    git提交与回滚流程
    1. 第二阶段[创建分支进行操作]

    遇到问题:代码出现bug需要暂停现有工作,进入fix bug状态

    方案A:stash

    使用stash暂时保存正在进行的开发工作,回到上次提交状态下开始fix bug,处理完bug问题后,再从‘暂存区’拿回开发到一半的代码继续开发(弊端:fix bug后的代码可能会和开发到一半的代码有重合,造成代码冲突。冲突只能根据自己的需求逐一修正)

    $ git stash      将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态(帮助我们暂时存储已经开发了一些的代码,回过头来继续做其他事情,做完之后,再拿回来继续开发)
    $ git stash list   查看“某个地方”存储的所有记录
    $ git stash clear  清空“某个地方”
    $ git stash pop    将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
    $ git stash apply  编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 
    $ git stash drop   编号,删除指定编号的记录
    

    方案B:branch

    git默认只有master一个分支,当多功能同时进行时,则可以创建不同的分支,来分别承担各个功能的开发工作。等到各个功能开发完毕后,进行分支合并,合并到master主干上来。但git merge 时也可能会出现冲突,解决冲突的方式上述stash相同

    $ git branch 分支名称        创建分支
    $ git checkout 分支名称      切换分支
    $- git branch -m 分支名称     创建并切换到指定分支
    $ git branch                查看所有分支
    $ git branch -d 分支名称     删除分支
    $ git merge 分支名称         将指定分支合并到当前分支
    
    1. 第三阶段[使用GitHub代码仓库托管]
      多设备同时开发时,可使用GitHub进行代码托管,在不同设备间进行代码同步
      1.创建GitHub并将代码推到GitHub上
    $ git remote add origin https://github.com/用户名/项目名.git   为地址起一个别名origin
    $ git push origin master              将本地master分支内容以及版本信息推送到GitHub
    $ Username for 'https://github.com':  输入GitHub用户名
    $ Password for 'https://用户名@github.com':    输入GitHub密码
    $ git push origin dev    将本地dev分支内容以及版本信息推送到GitHub
    

    2.在其他设备上进行代码clone操作(设备首次代码拉取)

    $ git clone https://github.com/用户名/项目名.git    将项目从GitHub中获取(注意:clone操作默认只获取master分支)
    $ git branch dev origin/dev    创建dev分支且和远程dev分支同步
    $ git checkout dev    切换到dev分支,然后继续开发工作
    $ git push origin dev    将本地dev分支开发的代码推到远程GitHub托管仓库的dev分支
    

    3.在其他设备上进行代码pull操作(设备已有代码情况)

    $ git checkout dev       确保在dev分支上
    $ git pull origin dev    从远程GitHub仓库获取dev分支最新内容,并合并到本地
    

    其中- git pull origin dev实际上可拆分为
    git fetch origin dev     从GitHub仓库获取dev分支最新内容到版本库的分支
    git merge origin/dev    将版本库的分支内容合并到工作区
    这两个命令。但是merge会造成dev分支出现分叉,而使用
    git rebase origin/dev    保持提交记录的整洁性,保证分支整齐

    1. 第四阶段[多人协作开发]
      在GitHub上多人协作开发的方式:

      1.添加合作者 Collaborators
      2.创建组织(也可以为某一个单独的项目创建组织) organization

      多人协作开发可能会遇到的问题:
        先提交代码的人正常push提交代码到GitHub,后提交的人无法push代码

    $ git push origin dev
    To https://github.com/用户名/项目名.git
    ! [rejected] dev -> dev (fetch first)
    error: failed to push some refs to 'https://github.com/用户名/项目名.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.

      问题原因:GitHub上已经有其他人提交的新代码
      解决办法:从GitHub上获取最新代码并合并到本地,然后提交自己开发的功能(前提:各自开发的功能无重叠,则可先pull远程代码,然后直接push自己的代码;若pull代码后出现冲突,则处理完冲突,再push提交代码
      合并代码建议:1、一起合并;2、确定合并时间

    1. 补充:

    5.1 为项目创建版本tag:

    $ git tag -a V版本号 -m '版本介绍'      本地创建Tag
    $ git show V版本号                     查看指定版本
    $ git tags -n                          查看本地Tag
    $ git tag -l 'V版本号.*'               查看本地Tag,模糊匹配
    $ git tag -d V版本号                   删除指定Tag版本
    $ git push origin :refs/tags/V版本号       更新远程tag
    $ git checkout V版本号                 切换tag
    $ git fetch origin tag V版本号
    $ git push origin  --tags
    $ git pull origin  --tags
    $ git clone -b V版本号
    

    5.2 Git的三个配置文件:

    • 系统配置: /private/etc/gitconfig
    • 用户配置: ~/.gitconfig
    • 项目配置:.git/config

    5.3 用户凭证
      由于Git和Github交互操作可能会很频繁,那么一定少了用户授权的操作,为了防止每次操作重复输入用户名和密码,Git提供了两种解决方法:

    秘钥

    首先创建一对秘钥 ssh-keygen -t rsa,然后将 id_rsa.pub (公钥)内容拷贝到github中,日后操作无需再输入用户名和密码。
    注意:这种方式需要使用Git中 git@github.com:用户名/项目名.git 格式地址。

    密码

    Https访问git时,避免每次操作需要输入用户名和密码,可以在配置文件中添加如下配置项:
       [credential]
       helper = store/cache/第三方
    store:
       表示将用户名和密码保存在硬盘上
       第一次输入过用户名和密码之后,用户名和密码就会保存在当前用户根目录的 .git-credentials 文件中,内容格式为:https://用户名:密码@github.com
      自动添加配置命令:git config credential.helper store
    cache:
      表示将用户名和密码保存在缓存中
      第一次输入过用户名和密码之后,用户名和密码就会保存在缓存中,默认超时时间是 900 秒,缓存相关文件保存在当前用户根目录的 git-credential-cache 中
      自动添加配置命令:
       git config credential.helper cache
       git config credential.helper 'cache --timeout=300'
    相关操作:
      清除缓存:git credential-cache exit
      指定超时:
       [credential]
       helper = cache --timeout=300
    注意:
      这种方式需要使用GIt中 https://github.com/用户名/项目名.git 格式地址。
      指定用户名和密码: https://用户名:密码@github.com/用户名/项目名.git

    补充:
    git branch -vv:  查看本地分支关联关系
    
    git config --global user.name "Zzm":设置全局用户名
    git config --global user.email "Zzm@foxmail.com": 设置全局邮箱
    
    ssh-keygen -t rsa -C "Zzm@foxmail.com":生成git的ssh密钥对
    git config --global credential.helper store:记住用户名密码(从https拉取)
    git remote set-url origin https://git.hony.com/citymap/etl.git:将ssh源切换为https源
    git remote set-url origin git@email:username/ProjectName.git:将https源切换为ssh源
    git remote -v:查看当前的remote url
    

    相关文章

      网友评论

          本文标题:Git使用简述

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