pycharm使用git github的pull request流程

                                       原生git命令真的没有IDE香!!! 信我

一、pycharm使用git

项目前提:远程github仓库克隆来的项目只有master分支,创建自己的dev分支开发后,提交到远程仓库,远程仓库发起pr流程,管理者审批后merge内容到master分支

- 前提是你已经安装了git,可能pycharm自带的也有吧,不清楚

- 在远程仓库或者是fork或者是git clone过来项目,用pycharm打开

1.整体了解

-  git入口

 -  文件颜色代表被git管理的状态不同

我们文件中有很多文件是不需要提交到版本库的,比如本地数据库文件、log文件、pycharm生成的文件、test.py本地测试脚本等,就需要编写这个.gitignore文件,编写方法百度就好了

 2.提交本地版本库

修改文件后,我们点击顶部绿色对号就可以提交,他执行的是git add操作+git commit

使用IDE的好处就是这么明显,我们可以随便提交任何一个文件,你想提交谁就提交谁,还可以看到任何一个文件的改动是什么,选择提交任何一处具体改动

- 选择要提交的文件打对勾,逐个查看各个文件

-选择文件中要提交的内容

-填写注释信息

-commit版本库,或者commit并push到远程仓库

 3.分支操作

比如现在在dev分支下,你点击master分支的小箭头:

  -然后点击checkout就会切换到master

  -点击merge就会将master合并到dev

  -点击push就会将masterpush到远程

 

 4.冲突解决

情况一:当你merge其他分支到当前分支

情况二:你点击顶部的pull箭头拉取远程的分支来更新本地分支(git pull origin master //相当于git fetch 加 git merge)

我们提交远程仓库前必须先pull再push:

  -假如开发人员共用一个dev分支开发,就直接pull,拉取的就是远程dev,保证远程dev和本地dev不冲突

  -比如我的自己独用一个dev,最后要领导审批后合并到master,我就不需要pull远程dev,根本不会冲突,我需要做的是切换到master然后pull远程master,然后再切换回dev,merge本地的master到dev,保证本地dev和远程master不冲突(有时候开发中担心把大家给公用的开发分支搞乱了就可以建立自己的my_dev分支,最后合并到dev上就好了)

 看下图解决冲突就好了:

 5.版本操作

-比较两个版本的不同

 -回滚版本

  可以用^来回滚,一个表示往前回滚一次,也可以指定版本号回滚

 

6.暂存操作git stash

应用场景:

情景1: 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时是不能直接切换分支的,可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容 情景2:由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。 总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。

git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中

新增加的文件,比如test.txt,还没有执行add操作,他是不受git管理的自然也不受git stash影响,你切换到哪个分支他都会跟着过去,你在哪个分支add他就属于谁

git stash # 将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
git stash save '提示信息' #作用等同于git stash,区别是可以加一些注释,如: git stash save '测试一下'
git stash list #查看当前stash中的内容
git stash pop #将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。 注:该命令将堆栈中最近保存的内容删除(栈是先进后出)
git stash apply #将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况
git stash drop + 名称 #从堆栈中移除某个指定的stash
git stash clear  #清除堆栈中的所有 内容
git stash show #查看堆栈中最新保存的stash和当前目录的差异。
git stash show stash@{1} #查看指定的stash和当前目录差异
git stash show -p #查看详细的不同
git stash show stash@{1} -p #查看指定的stash的差异内容

pycharm中切换分支时自带stash,如果你不commit本地仓库,你切换分支时会提示smart checkout,其实就是在当前分支执行了git stash,在目标分支执行了git stash apply,就会将你做的更改带到目标分支,当然也可能会冲突,需要手动解决

 

 当我们当前dev分支开发到一半,接到任务需要开发master分支时,我们还不想提交本地库也不想带到master分支,可以git stash,然后就可以切换到master开发,完成任务后再次切换到dev,执行git stash apply就可以恢复我们之前的代码了:

 

 

 

 

 

二、github的pull request流程

pr流程就是你要合并代码到某个分支如master,你先将自己的代码push到远程dev分支,然后在github中切换到dev分支,然后提交pr流程,管理者就可以收到,然后可以批改审阅你的代码,并且可以评论给出指导修改意见,然后你去修改代码重新push到远程,多次修改多次push,每一次都会有记录,最后领导满意了,就可以merge你的dev分支到master,你的代码就算是正式代码了

1.代码提交流程

以下详细流程只是为了便于理解,可别自己敲命令了,直接在pycharm中进行相应操作就好了,人家造好的车它不香么?

$ git clone https://github.com/xxoo.git  //克隆项目

$ git checkout -b dev  //创建并切换分支

$ git add .  //提交暂存区
$ git commit -m "我到仓库了"  //提交本地仓库

$ git checkout master  //切换到master
$ git pull origin master // 拉取远端分支以获取最新内容,如果有冲突就解决冲突

$ git checkout test-pr // 切换到自己的分支
$ git merge master  //合并master到dev,如果有冲突就解决冲突
 
$ git push origin dev  //提交到远程

2.发起pull request流程

第一步:进入github界面,切换到dev分支,在右上角就会出现绿色的pull request按钮,点击

 

 第二步:选择提交到哪个分支,添加注释信息,创建

 

 第三步:领导审批提出意见,然后你反复修改再提交,最终合并

 

 参考:https://www.jianshu.com/p/704c0561d3ff

 

 

posted @ 2020-09-03 18:51  www.pu  Views(3334)  Comments(0Edit  收藏  举报