Git使用简述

2019-02-17  本文已影响0人  Zzmi
  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的三个配置文件:

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
上一篇下一篇

猜你喜欢

热点阅读