本教程适用于以下产品:

AppCode、CLion、Datalore、DataGrip、GoLand、IntelliJ IDEA、PhpStorm、PyCharm、Rider、RubyMine、WebStorm 等 JetBrains 的 IDEs

下面以 PhpStorm 为例进行介绍

一、前提

1、下载并安装好 PhpStorm

2、下载并安装好 Git

3、熟悉 Git 相关命令行操作

二、Git pull & commit(add)

下面简单说一下相关操作:

PhpStorm 打开一个 Git 的项目

右上角就会有类似的两个按钮

新版的界面是这个

左边这个就是拉代码的,命令行是:Git pull

右边这个是Commit的,命令行是:add 和 Commit

提交代码快捷键:Ctrl + Shift + K ,命令行是:Git Push

与 SVN 不同的是,Git commit 后还需要 push 代码才会真正被提交到 Git 仓库

三、切换版本分支以及代码合并

切换版本分支命令行:Git checkout

选择你要切换的分支,直接 Checkout 即可,若是本地没有的分支,在远程分支列表中选择 Checkout As ,输入名称即可,如下图:

    

分支合并命令行:Git merge

比如我想把本地的分支 A 合并到分支 B 里面,首先先确保你本地的 B分支 的代码是“最新的

即:切换到 B分支,更新代码,选中 A分支,鼠标左击,选中 Merge into Current  ( PS:旧版本可能是 Merge )

(这里也可以进行远程分支合并,即在 Remote Branches 里面,选择想要合并的分支,选择 Merge into Current 进行合并)

点中这个进行合并,合并后 Push 到 Git 仓库即可

四、回滚

下面关于 Commit 之后反悔的操作,我 Commit 了一些修改,但是我突然不想要了,右下角切换到 Log,看你的 Commit,不想要的直接右键选择 Revert,可以直接撤销刚刚的 Commit(这个只能撤销自己的 Commit)

Revert Current Branch to Here 可以直接撤销前面的所有 Commit,包括别人已经 Push 的修改也可以撤销,撤销之后,代码会回到 Commit 之前的状态,即文件是蓝色绿色红色那种

选择 Reset Current Branch to Here ,还可将代码回滚到指定的地方,点了之后有四个选项可以选,根据实际情况选一个就行,默认就选 Mixed 如图:

然后 Force Push 就可以实现代码的回滚,注意一定要强制Push,不然代码是推不上去的,如图:

注意:master分支在 PhpStorm 里面好像不能强制push(默认是保护的分支),可以直接用命令行

$ git push -u origin master -f

或者修改配置(直接删掉就行):

注意:上面两种方式都会影响当前分支,即会丢失代码提交记录等,若不想用 revert 或者 reset 的话,参考下面目录第“十一”,Check Revision 创建新的分支

五、新建分支

Git 新建分支,右下角直接切换到你想要复制的分支上,保证代码是最新的情况下,点击 New Branches,输入名字即可

比如:我想要复制 A 分支,并命名为 B 分支,首先我先切换到 A 分支上,然后 New Branch 创建一个新分支,并命名为 B,接着把 B Push 即可

六、Stash / Unstash

Stash:把当前项目所修改的地方暂存到本地

Unstash:恢复上次暂存的文件

比如现在我有个 Bug,想切换到其他分支修改这个 Bug,但是呢,我当前开发的分支已经修改了一些东西,而我又不想提交,

这个时候可以用 stash 暂存一下你的代码,然后切换到其他分支修改完 Bug 后再切回开发的分支,执行 unstash 就可以恢复到当时修改的文件

流程如下图:

1、暂存

2、恢复,选中当时暂存的版本,点击 apply 恢复即可

七、Cherry-Pick

假设我在 A 分支有一个提交记录,由于改动的地方比较多,我想单独把这条已经在 A 分支 push 过的提交记录在 B 分支也加上去(我不想直接合并两个分支)

这种情况的话,直接使用 Cherry-Pick ,对应命令

git cherry-pick <commit id>

下面说下操作:

先切换到 B 分支,打开 Git 提交记录,在Branch 选择 A 分支,然后找到你提交的那条记录(如上图),右键,选择 Cherry-Pick(如下图),然后 commit 跟 push,完毕,这样就把 A 分支的某条提交记录单独的“合并”到 B 分支。

八、Annotate

下面说一下黑科技,Annotate,甩锅神器

打开文件,在左边显示行数的地方右键,选择Annotate

选择之后左边行号那里会多出一些神秘的东西,选择其中的一个即可查看你当前文件对应的某一行代码上一次的修改情况,甩锅跟排查 BUG 必备

如果你某一天,线上的某个功能有人偷偷改了,未经过测试就出现问题,用这个可以快速看出是谁捅的篓子,尽快修复安排上线。

九、Tag

创建 tag:

打开 Version Control -> log,选择某条提交记录,右键,选择 New Tag,可以对某一条提交记录打上 Tag 标签,如下图

或者

PS:创建完标签后记得把 tag 推送到 Git 服务器!

如何推送呢?如下图:

选择 All:即推送所有 tag

选择 Current Branch:推送当前分支的 tag

命令行是:

$ git push origin [tagname]  #推送单个tag
$ git push [origin] --tags   #推送所有tag

打上标签可以在部署代码的时候,选择部署到标签指向位置的代码,标签后面的所有提交记录都不会部署,以 Jenkins 为例

这样的话,部署代码到服务器只会部署标签所在位置之前的代码,标签后面的提交记录不会被部署,打上标签可以快速回滚系统版本

删除 tag:

找到你创建的 tag,右键删除

注意右下角,Restore是还原,Delete on Remote是把 Git 服务器上的标签删除

命令行:

$ git tag -d tagname              //本地删除tag
$ git push origin :refs/tags/tagname    //本地tag删除了,再执行该句,删除线上tag

十、查看文件修改历史

打开你想要查看的文件,在顶部文件的 tab 处右键;也可以直接在左侧的文件列表右键,效果一样, Git -> Show History 如下图:

点击 Show History 后会打开一个新的面板,里面会展示当前文件所有的提交历史,双击某条提交历史可以查看这条提交记录所修改的地方

十一、Checkout Revision

版本回退或者想从某个提交记录开始创建新的分支,打开 Git Log 窗口,选择某条提交记录,假设为 001,右键,选择 Checkout Revision ,这个时候会创建一个新的临时分支,这个分支会保留提交记录 001(包括001)之前的所有提交记录,即保留提交记录 001 之前的所有代码,注意,这个时候这个分支是临时的分支,任何 git pull 和 git push 都不会生效,点击右下角的 git,选择 New branch,输入名称后创建一个新的分支,这个新创建的分支保留有 001 之前的所有代码,然后我们再把这个分支的代码推送到服务器,这个时候新的分支就创建好了,这个分支保留有 001 之前的所有代码,这样创建新的分支的方式即不用回滚丢弃不要的提交,也不会对其他版本造成任何影响,又避免误使用 reset 或者 revert 对代码造成不可恢复的影响,这样做无非就多了一个新的分支而已,如下图:

选择后创建的临时分支

以当前的代码创建新的分支,然后推送到远程服务器即可

十二、删除版本

删除本地分支或者删除远程分支,右下角选择 git,选择想要删除的分支,鼠标左击,选择 Delete

Phpstorm Git 操作的更多相关文章

  1. PhpStorm Git 配置(解决文件没有变色的问题)

    摘要: PhpStorm Git 配置 首先需要安装windows下的Git版本,网上有很多我下载的是msysgit反正都差不多,不会的自己百度. 其次打开PhpStorm,点击File ,Setti ...

  2. Intellij 中的git操作 转!

    http://blog.csdn.net/lovesummerforever/article/details/50032937 Git原理以后会分章节介绍,本次主要说一下intellij怎样操作git ...

  3. 使用Git操作GitHub代码入门教程

    GitHub除了网页操作外,还可以借助本地客户端git(或github for windows)来增删修改远程代码.使用Git操作来连接GitHub可以通过Https或SSH方式,使用SSH方式可以免 ...

  4. 转 git操作小结

    UNDER MIT LICENSE. 公司几乎所有的项目都是使用 git 仓库来管理代码,以前对 git 只有些肤浅的了解,每次提交代码或者上线的时候总是会提心吊胆,生怕出现一些未知的问题.经过三个月 ...

  5. svn 迁移至git操作手册

    svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...

  6. git操作常用命令

    一.使用git 1.git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己 ...

  7. IDEA环境下GIT操作浅析之二-idea下分支操作相关命令

    上次写到<idea下仓库初始化与文件提交涉及到的基本命令>,今天我们继续写IDEA环境下GIT操作之二--idea下分支操作相关命令以及分支创建与合并. 1.idea 下分支操作相关命令 ...

  8. IDEA环境下GIT操作浅析之一Idea下仓库初始化与文件提交涉及到的基本命令

    目标总括 idea 下通过命令操作文件提交,删除,与更新并推送到github 开源库基本操作idea 下通过命令实现分支的创建与合并操作 idea 下通过图形化方式实现idea 项目版本控制基本操作 ...

  9. Git操作自动触发企业微信机器人webhook

    [本文出自天外归云的博客园] 背景 在git做一些merge或push的操作,我们希望可以自动在企业微信群发送自定义的通知. 服务代码 这里选用php作为网络服务的开发语言,关键的代码如下(githo ...

随机推荐

  1. encodeURI,encodeURIComponent编码

    encodeURI().encodeURIComponent().decodeURI().decodeURIComponent() URL编码 Global对象的encodeURI()和encodeU ...

  2. BZOJ4010:[HNOI2015]菜肴制作

    我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...

  3. 洛谷 2312 / bzoj 3751 解方程——取模

    题目:https://www.luogu.org/problemnew/show/P2312 https://www.lydsy.com/JudgeOnline/problem.php?id=3751 ...

  4. debian软件安装和卸载

    用root身份执行如下命令: dpkg -l |grep "^rc"|awk '{print $2}' |xargs aptitude -y purge dpkg是Debian P ...

  5. JZ2440 启动NFS网络文件系统_初试led驱动

    http://blog.csdn.net/emdfans/article/details/12260969 u-boot ---> q 修改bootargs变量 默认: bootargs=noi ...

  6. Spring整合JUnit4测试时,使用注解引入多个配置文件

    转自:https://blog.csdn.net/pwh309315228/article/details/62226372 一般情况下: @ContextConfiguration(Location ...

  7. 【总结整理】http-https

    上面这种加密消息的方式就是对称加密,你知道如何加密,也知道如何解码.然后李雷跟韩梅梅用的字母表偏移的加密方法叫 Caesar cipher, 凯撒加密.现实世界中用的加密算法会更复杂,但是基本原理相同 ...

  8. Spring IOC 少

    控制反转好处 IOC:控制反转也叫依赖注入,IOC利用java反射机制,AOP利用代理模式.所谓控制反转是指,本来被调用者的实例是有调用者来创建的,这样的缺点是耦合性太强,IOC则是统一交给sprin ...

  9. servlet与filter的加载顺序详解

     项目:3个filter,3个servlet,匹配的url路径/hello. 情况1:servlet没加<load-on-startup></load-on-startup>情 ...

  10. hdu1068

    #include<stdio.h>#include<string.h>const int MAXN=1000;int map[MAXN][MAXN];int n;int lin ...