git使用

 

一、正常提交版本分支

1、启动

  直接在文件夹内右键,出现两个选项,一般使用Bash命令端

 

2、进入命令端后init初始化该文件夹,之后会在该文件夹下自动生成一个.git文件夹,它用于管理这个文件夹的所有版本管理

git init

3、git add添加文件进行暂存状态

git add filename  # 添加指定文件
git add .              # 添加当前目录下,以及子目录下的文件

4、status查看文件是否在管理状态或者有被改动

  1)、在暂存状态下,并且未被修改,文件显示绿色

  2)、不在暂存状态下,或者暂存状态下文件被修改,文件状态显示红色,此时需要重新add进行更新

5、真正进行提交版本,将文件添加到版本库的分支

git commit -m ‘版本描述’

  1)、第一次使用需要配置邮箱和用户名

 

   2)、配置完后再将文件添加到版本库的分支

6、查看提交记录,即:历史版本记录

 

至此一个版本已经建立完成。

 

二、几种回滚

  1、修改过的内容回滚到原内容

git checkout “文件名”

  2、版本分支回滚到暂存状态

get reset --soft  版本号

 

   3、将暂存状态回滚到非暂存状态(工作区):不常用

git reset head 文件名

  4、将版本分支回滚到非暂存状态:不常用

git reset --mix 版本号

  5、将当前版本分支回滚到任意版本分支

git reflog  # 先获取版本记录
git reset --hard 版本号

 

三、上线版本出现bug,需要立即进行处理。而此时新需求开发到一半,这时该怎么办。

  方案1:stash,将新需求已经开发的部分存放到另外一个地方。

git stash # 将已经开发到一半的新需求暂存起来
git status # 此时已经回到版本分支最初状态,开始修复bug
git add .  # bug 修复完成,将修复完的代码添加到暂存状态
git commit --m "版本描述:修复bug"  # 将修改bug后的版本提交到版本分支
git stash pop  #将开发到一半的需求再拿回来

修复bug时,覆盖了暂存起来的代码。当你把暂存起来的代码拿出来,此时会让你一 一手动选择

 

 stash相关常用命令:

git stash             将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
git stash list        查看“某个地方”存储的所有记录
git stash clear     清空“某个地方”
git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 
git stash drop      编号,删除指定编号的记录

  方案2:branch(常用)

    默认分支为master,该分支一般不会在上面操作,主要用于存储上线版本。使用命令创建另外一个分支,在分支下进行开发,一般修改bug在一个分支,开发在一个分支,协同开发另建分支,最后合并到master

    创建分支:

git branch dev  #创建dev分支
git checkout dev  #进入到dev分支

 

    进入到dev分支后,开始正常开发,开发完成新的需求后创建版本分支,此时master并不会受到影响,回到master分支后,内容还是开发新需求之前的内容。如果需要将dev分支上的新需求上线,此时可以将dev合并到master。

git checkout master # 首先需要将分支切换到需要合并至的分支
git merge dev # 将dev分支合并至master

 

    处理bug也是一样,先在上线版本分支下进行创建分支bug,处理完bug后合并即可

    注意:git merge 合并时也可能会出现冲突,解决冲突的方式上述stash相同,即:找到冲突文件,手动修改冲突并提交

branch常用命令:

git branch 分支名称             创建分支
git checkout 分支名称          切换分支
git branch -m 分支名称        修改分支名称
git branch                          查看所有分支
git branch -d 分支名称         删除分支
git merge 分支名称              将指定分支合并到当前分支

 

  

 

github:

  结合github远程仓库,将代码上传至远程仓库,实现异地无缝衔接开发

 

 

 

   1、创建github账户

   2、创建仓库

 

 

   3、通过git将项目上传至仓库,会弹出登录页面让你进行登录github账户

git remote add origin https://github.com/AikeCool/bbs.git  #为仓库地址取名为origin


git push -u origin master  # 将本地master分支内容以及版本信息推送到GitHub

 

   4、还可以将其它分支上传至仓库,因为真正开发一般都是在其他分支,例如dev,所以需要将dev分支上传至远程仓库

git push -u origin dev #将dev分支上传至远程仓库

  

 

 

   5、上传至远程仓库,主要用于异地无缝衔接开发,假如远程仓库是在公司创建的,我们在家中如何进行开发呢?

    第一次在家中进行开发:

      1)、将上传至远程仓库的文件克隆下来

git clone  https://github.com/AikeCool/bbs.git  # 克隆,默认只能取到master分支

 

      2)、因为真正开发都是在dev分支,所以需要从服务器上取到它

git branch dev origin/dev      # 创建dev分支且和远程dev分支同步

      3)、切换至dev分支

git checkout dev       # 切换到dev分支

 

      这时就可以在本地进行开发了,开发完毕后,记得将项目添加到版本库的分支,并且上传至服务器,这样才能在不同的工作地点接着开发。

$ vim app01/views.py                           # 继续开发新功能
$ git add .                                           # 添加文件到版本库的暂存状态
$ git commit -m '在家里开发的功能'        # 提交新功能到版本库的分支
$ git push origin dev                               # 提交dev分支内容到远程GitHub托管仓库的dev分支

  6、当家里开发的功能上传到远程仓库后,隔天回到公司该如何继续开发呢?

      1)、切换到dev分支

git checkout dev   # 切换到dev分支

      2)、从远程仓库获取最新dev分支内容,并合并到本地

git pull origin dev   # 从远程GitHub仓库获取dev分支最新内容,并合并到本地

 

       3)、开始开发

vim app01/views.py                          # 继续开发新功能
git add .                                         # 添加文件到版本库的暂存状态
git commit -m '在公司开发功能1'          # 提交新功能到版本库的分支
git push origin dev                              # 将dev分支提交到远程仓库

 

   7、继续在家中进行开发,但此时已经不是第一次在家里进行开发了

git checkout dev          # 切换到dev分支
git fetch origin dev      # 从GitHub仓库获取dev分支最新内容到版本库的分支
$ git merge origin/dev      # 将版本库的分支内容合并到工作区
app01/views.py                                 # 继续开发新功能
git add .                                          # 添加文件到版本库的暂存状态
git commit -m 'xxxxxxxxxxx'                        # 提交新功能到版本库的分支

长此以往,将Git和GitHub结合使用做到避免电脑损坏造成数据丢失以及多地开发的问题

【git pull origin 分支】命令等同于【git fetch origin 分支】+ 【git merge origin/分支】,并且在执行过程中可能会出现冲突,原因是由于本地代码和获取的最新代码有重合部分,那么就需要自己手动解决冲突然后再继续开发。

 

 

github协同开发:

  • 合作者,将其他用户添加到仓库合作者中之后,该用户就具有向当前仓库提交代码。
  • 组织,创建一个组织,然后再该组织下可以创建多个项目,组内成员可以向组内所有项目提交代码。PS:也可以对某个项目指定合作者

协同开发命令和以上步骤类似,此处就不再重新写代码,而是使用文件描述三人协同开发整个过程。

  • 创建程序
    • 用户A创建程序,提交到GitHub
    • 用户B克隆项目
    • 用户C克隆项目
  • 开发功能
    • 用户A开发功能1
    • 用户B开发功能2
    • 用户C开发功能3
  • 提交
    • 用户A提交功能1,并push(A用户手速快,先提交。)
    • 用户B提交功能2,无法push,因为GitHub上已经有其他人提交的新代码。
      解决方法:从GitHub上获取最新代码并合并到本地,提交自己开发的功能2。
    • 用户C提交功能3,无法push,无法提交,因为GitHub上已经有其他人提交的新代码。
      解决方法:从GitHub上获取最新代码并合并到本地,提交自己开发的功能3。
  • 获取最新代码
    • 用户A获取最新代码
    • 用户B获取最新代码
    • 用户C获取最新代码

在上面红色标注的解决方法位置可以有三种方式操作,三者都可以完成合并并提交新功能,但是日志记录会有差异,如:前两者版本记录中会出现合并,而第三种可以保证版本记录干净整洁。

  • 先 git pull origin master   然后 git push origin master
  • 先 git fetch origin master 然后 git merge origin/master   再 git push origin master 
  •  

  先 git fetch origin master 然后 git rebase origin/master  再 git push origin master

 

 

 

使用Git之小P创业上市期

终于终于小P等到了公司上市实现财务自由,但作为一个技术屌还是脱离不了屌丝的本质,所以每天都是逛逛github,看看别人有什么好的项目,自己可以给他挑挑bug装装逼,但是别人不可能给小P搞成合作者什么的,那怎么才能给别人贡献代码呢?那就是fork了。。。。

  • 找到想搞的项目,fork一下,然后这个项目就在自己仓库出现了
  • 从自己仓库获取代码并进行编辑提交
  • 创建并提交一个pull request,然后等待原作者是否同意这个pull request,如果同意那么在作者的源代码中就推出现小P提交的功能
      

其他补充

1. 配置文件

Git的配置文件有三个:

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

2. 用户凭证

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

  • 秘钥
    首先创建一对秘钥  ssh-keygen -t rsa,然后将 id_rsa.pub (公钥)内容拷贝到github中,日后操作无需再输入用户名和密码。
    注意:这种方式需要使用GIt中 git@github.com:WuPeiqi/xxxxx.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/WuPeiqi/xxxx.git 格式地址。
             指定用户名和密码: https://用户名:密码@github.com/wupeiqi/xxx.git 

版本相关:

    git tag -a v1.0 -m '版本介绍'        本地创建Tag
    git show v1.0                       查看
    git tags -n                         查看本地Tag
    git tag -l 'v1.4.2.*'               查看本地Tag,模糊匹配
    git tag -d v1.0                     删除Tag
    git push origin :refs/tags/v0.2     更新远程tag
    git checkout v.10                   切换tag
    git fetch origin tag V1.2

    git push origin  --tags
    git pull origin  --tags
    
    git clone -b v0.1

 

 

 

posted @ 2020-04-10 22:20  aikell  阅读(159)  评论(0编辑  收藏  举报