一. 背景:
由于之前对Git不重视, 到了新公司以后, 发现自己对Git的很多操作都不熟悉, 遇到问题很容易束手无策, 在经过一番学习以后, 将上传代码的流程整合到PyCharm上, 这样在需要上传代码时就不需要再敲那些指令, 可以用很短的时间(1min内)把代码传上去, 大大提高了效率, 所以决定把这个过程总结一下, 方便后续使用.
二. 基础设置
首先要把PyCharm的设置指向本机上安装的git, 打开File - Settings  然后打开版本控制, 选择Git, 注意这里我选择了cmder自带的git路径, 如果你们自己安装了git, 就写你们自己的路径 
三. 上传
上传分成几种情况
- 首次上传, 需要创建新的分支
- 往已有的分支上传代码
以下我将使用自己的gitee账号来演示整个过程, 但是原理是一样的, 在Gitlab上一样会生效.
3.1 首次上传, 需要创建新的分支
3.1.1 在上传任何代码之前, 请先素质三连(fetch, pull, rebase)
- 首先切换到master分支
打开你的项目, 在右下角点击分支名, 选择master, 然后选择Checkout  对应指令: git checkout master
如果右下角已经是master, 则不需要切换.
-
顶部菜单栏, 选择Git - Fetch 这一步仅仅是把代码从远端下载下来, 但是还没有更新到进来  对应指令: git fetch -
Git - Pull… 这一步从远端拉取代码, 默认就是从当前对应的分支拉取, 比如master默认拉取的就是origin/master 
这一步的origin是固定的不可选, master就是对应的远程分支, 不要选错了.
 对应指令: git pull
- Git - Rebase…
这一步是将之前自己的提交, 放到别人的提交之后, 可以防止提交树的混乱  选择基于远程分支的提交即可

3.1.2 创建自己的分支
- 在master分支下, 右下角选择新增一个分支(该分支将会基于master创建, 如果在打开其他分支下新建分支, 就会基于该分支进行创建)
 在弹出的窗口输入分支名, 并选择切换到该分支

可以看到右下角分支名已经更改, 并且本地分支也多了一个br2  对应指令: git checkout -b br2
- 如果你想删除这个分支, 那么同样需要切换到master分支, 然后选择br2分支,选择Delete
 对应指令: git branch -D br2 这一步仅仅会删除你本地的分支.
3.1.3 更新代码
-
如果你打算使用这个分支上传代码, 那么就按照以下操作 为了演示,我在br2下进行了修改, 新增了一行, 你可以当成是你的更新  -
提交 提醒: 如果在提交之前有一些其他检查比如代码规范之类的, 请做完再提交.  你也可以使用这个按钮   对应指令: git commit -m “XXX” -
推送
注意红框里的内容, 向origin/br2推送, 而不是向origin/master推送, 这一点要注意检查
 对应指令: git push?--set-upstream origin?br2 其中的–set-upstream就是指定上传(上游)分支
- 此时你可能要到Git上检查一下,看是否push成功
不过一般PyCharm左下角会有提示,你也可以点开看看操作日志  当然, git中也已经创建了新的分支 
我的修改也已经更新到br2分支上.

3.1.4 更新小修改
- 此时你突然想起, 你还有一个txt文件需要上传, 那么你可以这么操作
如果之前那个commit界面还在, 你可以先把它缩小  如果还是没有看到项目文件, 可以通过以下方式将它显示出来 
- 好, 现在我往项目中添加一个txt文件, 用于记录一些事情
如果你在加文件的过程中有以下提示, 点击add即可

-
然后我在这个文件加上以下内容  -
由于这次不需要再次添加注释, 所以我直接将它按照默认方式提交 amend表示不需要保留上次的提交记录, 将会保留最新的, 由于你不想让别人知道你忘了提交一个txt, 所以你就选这个  对应指令: git commit --amend --no-edit -
这次更新使用强制推送的方式即可  对应指令: git push -f
此时会出现如下警告,这样操作将会覆盖远程提交, 这正是我们想要的,选择强制推送即可 
3.1.5 看看远端
此时我们再去看远程分支 可以看到, changes文件夹明明是我1分钟前push上去的, 结果看到的却是30分钟前的推送 
然后看提交历史, 今天也只有一次提交 
至此, 新建分支的推送结束!
3.2 往已有的分支上传代码
你的第一版代码被上司看过以后, 指出了10多处错误, 责令你立即解决, 于是你熬夜奋斗, 准备上传新的一版代码.
3.2.1 进行任何更改之前, 请素质三连(fetch, pull, rebase)
由于这部分和前面相似, 就不重复了
3.2.2 拉取你的提交, 放在别人的提交后面
为了不干扰提交树, 在你更新完master后, 需要把你上次提交抽出来, 在别人的master上再提交一次 操作如下
首先切换到你的分支 
然后选择Git - Rebase… 
此次rebase需要在master的基础上, 进行手动rebase, 所以需要添加-i参数,

此时会弹出你commit的记录,如果你不需要更新, 直接rebase即可  左下角将会有rebase成功的提示 
3.2.3 推送到远端
这次推送的目的是把你的rebase操作推送到远端, 这样你的后面的commit也会在这次rebase之后, 防止中间穿插一些其他commit

3.2.4 更新代码, 推送到远端
此时你可以再检查一下代码, 没问题的话, 就更新到br2中, 然后commit 和push即可
 强制推送  此时会出现如下警告,选择强制推送即可  至此, 推送完毕!
|