git

 

  git是一个用于帮助用户实现版本控制的软件

  下载安装:https://git-scm.com/downloads,下载后点点点

 

第一阶段 管起你的项目

  开始管理你的项目

  进入到你要管理的项目程序目录下,右键选择Git Bash Here命令行

  • git init 让git帮你管起当前目录

  执行后,它帮你创建了一个.git文件,默认是隐藏的,需要查看要到文件夹选项下勾选显示隐藏文件

  • git status  查看当前目录下所有目录文件的状态

  显示红色的,说明git还没对此目录文件管理到,需要命令操作

  • git add xx.py 管起某个文件

  再次status查看时,xx.py是绿的,代表管到了

  • git add . 管起当前目录下所有目录文件
  • git commit -m ‘创建第一个版本’  进行创建版本  -m为描述信息

  不过执行命令的时候,报错了,主要你没告诉你是谁,所以你还要这么做

  • git config --global user.email "xxx@qq.com"  设置邮箱
  • git config --global user.name “laoliu”  设置名字

  再次进行commit时,就没报错了,并有create字眼,就说明提交成功

  这个时候查看status,显示信息不再有目录文件了,但是本地这些文件都是有的,说明提交后,本地文件相对git是透明的

  如果我对某个文件进行修改,查看status,修改文件变红了,说git检测到文件的变化

  然后你再进行git add .    git commit -m ‘增加xx功能’,目录文件又透明了

  • git log 查看提交记录

  从查看的内容,可以看到有两次提交记录,表示提交了两个版本

  如果我想回退到上个版本,怎么做了?

  • git reset --hard 版本号(log里commit后面跟的那串随机字符)   回退到指定版本

  回退后查看log,发现刚才回退的版本记录不存在了,如果想看之前回退版本号,就要用下面命令了

  • git reflog  查看提交和回退版本记录

  如果我又想回到刚才那个回退版本,怎么做了?

  使用git reset --hard 版本号(而此时的版本号是reflog下提交版本时的版本号,不是回退时的版本号,它要比回退时的版本长度更短)

 

第二阶段 开发到一半,线上与bug

  比如有这么一个场景,就是你接到一个新增功能的任务,开发到一半,线上的突然有问题了,你需要修复这个问题,提交代码时,你需要做到只提交修复bug的代码,新开发一半的代码不能提交

  方式一

  • git stash  把带红的(修改的)临时存在某个地方

  你修改完bug提交后,你要继续开发新任务另一半,可以用下面的命令,并且恢复回来的 会保留你刚才修复好bug的内容

  • git stash pop 把之前存的再拿回来
  • git stash list  可以查看你存在某地方的记录

  当除了上述这方法解决上述过程中代码的冲突,还可以用分支的方式来解决,分支你就理解有两套代码,一套用于你修复线上问题,一套则是用新开发任务,现在目前只有一套,你需要先创建一套

  方式二

  • git branch dev  创建一个分支
  • git branch 查看所有分支

  假如dev,这套代码用于新功能开发的,当前分支默认master,怎么切换到dev分支呢?

  • git checkout dev  切换到指定分支

  在dev你功能开发到一半,你需要修改线上的一个bug,你可以dev分支先提交你开发一半的代码,然后切换到master分支里去修复bug

  当然在实际开发,一般是不让你修改master分支代码(主要是让master里的代码和线上的时时刻刻保持一致),所以修复bug,你再创建一个分支,在这个分支里,你尽情的改

  那问题来,现在有三套代码,每套代码都不一样,那合并代码时应该怎么合并呢?合并前你需要先切换到master

  • git merge bug分支   把修复完bug的分支合并到当前分支master下

  合并后你不需要再提交了,因为在bug分支里,你已经提交过,当然合并后,之前bug分支就没有存在的必要了,就要进行删除了

  • git branch -d bug分支  删除bug分支

  这个时候,你再次切换dev里继续开发你自己的新增功能,开发完后,你需要再次合并了,切回到master里,执行git merge dev,因为修复bug的功能master里有,而dev里没有,新开发功能在mester里没有,它跳出让输入记录操作的信息,你输入完后,:wq保存一下就可以了

  如果合并过程中,代码冲突,你慢慢找,手动修改一下

 

第三阶段 两地开发代码管理

  如果你要跨设备开发,每次复制到u盘或者通过百度云上传下载都还是比较麻烦的,而GitHub则可以完美支持这个方面,它的功能主要就是提供一个代码托管的地方

  开始你的托管前,你必须要到GitHub上进行注册,登录后,你需要先在GitHub上先创建接收你项目的目录,点击New repository

  填好项目名和描述,点击创建就可以了,看到下面这几条命令

  • git remote add origin https://github.com/caijingkuangmo/chou-ti.git   对你的提交网址进行重命名
  • git push -u origin master 把master里的代码提交到origin网址里

  执行完后,刷新提交网址,就能看到我们提交的代码了

  好,那我们现在换台设备开发了,怎么操作了

  • git clone https://github.com/caijingkuangmo/chou-ti.git  把指定url里代码全部下载下来

  此时你处在跟目录外,所以你需要cd到根目录下,再执行相应的命令,默认是只是把master分支的下载下来了,如果你想把dev分支的代码下载下来,你还需要这么做

  创建分支dev,切换到dev分支,然后执行git pull origin dev   把dev分支代码拉下来(clone下载的代码是保存了之前对提交url命名的)

  pull拉代码的动作本质上是分两步:

  • git fetch origin dev   先把dev代码拉下来放在版本库里
  • git merge origin/dev  把版本库里的代码合并到本地dev

  当然上述过程,提交记录可能会出现分叉的情况,如果想保持记录的整洁,可以把第二条命令换成下面这条命令

  • git rebase origin/dev

 

第四阶段 多人协同开发

  创建完项目后,别人如果想开发,你必须给他这个项目的管理(读写)权限吧?那怎么邀请别人加入项目呢?

  有两种方式,一种是合作者模式

  另外一种方式就是创建组织,组织内的成员共同管理项目

  创建后,你在首页就能看到你创建的组织

  创建完后,你就要邀请成员了

  做好邀请成员工作后,你需要思考协同开发,需要创建几个分支呢?

  master分支 保持和线上一致

  dev分支  新功能开发完成合并分支

  review分支  用于开发完后合并代码,待检视代码,检视通过后,合并到dev分支,检视工作一般组长或带你的人来

  每个人个人分支   保证代码开发到一半提交,不至于影响其他人,等功能开发完成,合并到review分支

 

  另外需要注意的是:提交代码前,为保证最新代码,先拉一下

  为了防止合并产生冲突,都争先第一个提交代码就跑,必须确立一个原则,就是 合并代码时,尽量参与开发的人都在场,并且最好维持1-2天就合并一次

 

第五阶段 阅读优秀项目代码,并尝试修复bug成为贡献者

  fork项目代码到自己仓库里,修改bug

  pull request发送修改bug信息给项目组织者,一旦得到组织者确认,开源项目就会合并你的代码,这样你就成为了这个开源项目贡献者

 

其他

  不用反复输入用户名密码登录

  https --> git remote add origin https://用户名:密码@github.com/caijingkuangmo/chou-ti.git  这种方式不安全

  ssh-->   git@github.com/caijingkuangmo/chou-ti.git

      ssh-keygen.exe 生成公钥和私钥,会提示本地生成地址 

      cat 获取公钥内容,复制到

   本地ssh -T git@github.com验证是否成功

  git config设置用户名和邮箱

  git remote add origin git@github.com/caijingkuangmo/chou-ti.git(git remote--查看, git remote remove 名字--删除)

  git clone git@github.com/caijingkuangmo/chou-ti.git

 

  不用管理的文件

  比如:sql文件和.idea文件

  vim .gitignore

  加入内容 *.sql\n *.pyc

  把gitignore文件提交 push

 

更多匹配规则

  以斜杠“/”开头表示目录;

  以星号“*”通配多个字符;

  以问号“?”通配单个字符

  以方括号“[]”包含单个字符的匹配列表;

  以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

   当然排除这些文件,你永远想不全的,GitHub已经帮我们做了这么一件,就是在创建仓库时,有这么一个选项,搜索点选就可以了

 

 

  版本管理

  你看人家的项目,在releases下,都有版本

    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 gitbub地址

 

  骚师博客

posted @ 2018-09-20 23:58  财经知识狂魔  阅读(244)  评论(0编辑  收藏  举报