本教程适用于以下产品:

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. tiny4412sdk-1506原生uboot卡死

    于16年2月多购买了tiny4412sdk-1506,用友善之臂(以下简称友善)的superboot是可以进入linux,而用三星原始的uboot_tiny4412-20130729则不可以.出现现象 ...

  2. 洛谷【P1080】国王游戏

    我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html 题目传送门:https://www.luogu.org/problemnew/show/P10 ...

  3. java web基础学习 Forward和Redirect区别

    Forward和Redirect代表了两种请求转发方式:直接转发和间接转发.对应到代码里,分别是RequestDispatcher类的forward()方法和HttpServletRequest类的s ...

  4. Ruby迭代器(Iterator)

    简单的讲,一个迭代器就是一个能接受代码块的方法.当初为了进行迭代操作而设置了带块方法,现在很多时候仍然称它为迭带器. 可实际上,早期版本的 Ruby 将使用代码块的方法称为迭代器,因为它们就是被设计来 ...

  5. linux日常管理-rsync后台服务方式-2

    把本地的数据拷贝到远程 这里是个错误,read only.只允许读,不允许写. 改一下远程机器的配置文件 把read only改为no 拷贝到远程成功 tree一下远程机器的目录 ////////// ...

  6. BLUETOOTH_DEVICE_INFO 函数

    typedef struct _BLUETOOTH_DEVICE_INFO { DWORD dwSize; BLUETOOTH_ADDRESS Address; ULONG ulClassofDevi ...

  7. javaScript之深度理解原型链

    经过多次的翻阅书籍终于对原型链在实际代码中的应用有了新的认识,但是不知道是否有错误的地方,还请大神多多指教. 构造函数.原型和实例的关系:每个构造函数都有一个原型对象funName.prototype ...

  8. Mac系统的launchd、守护进程daemon(2013笔记整理)

    1. launchd Mac系统下通用的进程管理器,是Mac系统下非常重要的一个进程,一般来说该进程不允许直接以命令行的形式调用.只能通过其控制管理界面,launchctl来进行控制. launchd ...

  9. ARC097D Equals

    传送门 题目 We have a permutation of the integers from 1 through N, p1, p2, .., pN. We also have M pairs ...

  10. 【机器学习】EM最大期望算法

    EM, ExpectationMaximization Algorithm, 期望最大化算法.一种迭代算法,用于含有隐变量(hidden variable)的概率参数模型的最大似然估计或极大后验概率估 ...