IntelliJ IDEA With Git

2023-05-16

记录下Git如何与IntelliJ IDEA协作

文章目录

  • 环境准备
  • IntelliJ IDEA With Git 开发过程
    • 1. 初次获取远端代码
    • 2. 查看远端仓库分支
    • 3. 将指定的远端分支同步到本地(建议同远端名一致)
    • 4. 查看本地当前所在分支 & 关联的远端分支
    • 5. 准备在指定分支开发
    • 6. coding & show diff
    • 7. 将文件添加到暂存区 & 提交工作分支的修改 | 更改提交的comments
    • 8. 撤销本地的修改
    • 9. 切换到与远端同步的主分支 & 同步可能的远端修改
    • 10. 切换到工作分支 & rebase | resoleve conflicts
    • 11. 切换到主分支 & 合并修改到主分支
    • 12.本地分支同步到远端分支(会改变远程分支的文件)
  • Git 相关
    • 回退到分支指定版本
    • Cherry-Pick
    • 本地分支重命名
    • 本地新建分支推送到远端
    • 删除本地分支 & 删除远端分支
    • 查看版本变动
  • 参考

环境准备

  • Git下载
  • IntelliJ IDEA下载
  • IntelliJ IDEA 的 License server 可以使用:http://8lovelife.com:1017

IntelliJ IDEA With Git 开发过程

1. 初次获取远端代码

  • 使用IntelliJ IDEA Terminal

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2uotZYcM-1675266252937)( https://8lovelife-1256398294.cos.ap-shanghai.myqcloud.com/Intellij%20Idea/IdeTerminal.png)]

Mac:code mac$ git clone https://github.com/grpc/grpc-java.git
Cloning into 'grpc-java'...

2. 查看远端仓库分支

Mac:dmz-inward- mac$ git branch -av
* master                 0388b70 some feture
  remotes/origin/HEAD    -> origin/master
  remotes/origin/feature cd52891 some features
  remotes/origin/master  0388b70 some feture

3. 将指定的远端分支同步到本地(建议同远端名一致)

Mac:dmz-inward- mac$ git checkout -b feature origin/feature
Branch 'feature' set up to track remote branch 'feature' from 'origin'.
Switched to a new branch 'feature'

4. 查看本地当前所在分支 & 关联的远端分支

Mac:dmz-inward- mac$ git branch  // 查看当前分支
* feature
  master
  
Mac:dmz-inward- mac$ git branch -avv  // 查看当前分支关联的远端分支
* feature                bb87089 [origin/feature] Merge branch 'feature_test' into feature
  feature_test           dd90129 //
  master                 0388b70 [origin/master] some feture
  remotes/origin/HEAD    -> origin/master
  remotes/origin/feature bb87089 Merge branch 'feature_test' into feature
  remotes/origin/master  0388b70 some feture
  • View 确认

image

5. 准备在指定分支开发

Mac:dmz-inward- mac$ git checkout -b feature_test
Switched to a new branch 'feature_test'

6. coding & show diff

  • coding
  • 随时查看本地的变动,防止遗漏:

image

image

7. 将文件添加到暂存区 & 提交工作分支的修改 | 更改提交的comments

Mac:dmz-inward- mac$ git add . // 添加暂存区

Mac:dmz-inward- mac$ git commit -m "feature add test" // 提交
[feature_test 7590940] feature add test
 2 files changed, 7 insertions(+)
 create mode 100644 dmz-inward-test/src/test/java/Test.java
 
Mac:dmz-inward- mac$ git commit --amend  // 修改提交的comments
[feature_test 90b9e43] feature add retests
 Date: Mon May 21 10:40:06 2018 +0800
 2 files changed, 7 insertions(+)
 create mode 100644 dmz-inward-test/src/test/java/Test.java
  • 暂存区与HEAD

image

8. 撤销本地的修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KZkboOe4-1675266252938)( https://8lovelife-1256398294.cos.ap-shanghai.myqcloud.com/Intellij%20Idea/revert.png)]

9. 切换到与远端同步的主分支 & 同步可能的远端修改

Mac:dmz-inward- mac$ git checkout feature  // 切换分支
Switched to branch 'feature'
Your branch is up to date with 'origin/feature'.

Mac:dmz-inward- mac$ git pull  // 同步远端可能的修改
Already up to date.

10. 切换到工作分支 & rebase | resoleve conflicts

Mac:dmz-inward- mac$ git checkout feature_test 
Switched to branch 'feature_test'

Mac:dmz-inward- mac$ git rebase feature
Current branch feature_test is up to date.

若rebase遇到冲突则手动解决,利用Intelli Idea 的show diff 可以清晰观察冲突点
冲突解决后进行:
git add * 
git rebase --continue

11. 切换到主分支 & 合并修改到主分支

Mac:dmz-inward- mac$ git checkout feature
Switched to branch 'feature'
Your branch is up to date with 'origin/feature'.

Mac:dmz-inward- mac$ git merge --no-ff feature_test
Merge made by the 'recursive' strategy.
 dmz-inward-test/src/test/java/Test.java     | 6 ++++++
 dmz-inward-test/src/test/java/TestFast.java | 1 +
 2 files changed, 7 insertions(+)
 create mode 100644 dmz-inward-test/src/test/java/Test.java
  • 分支

image

12.本地分支同步到远端分支(会改变远程分支的文件)

Mac:dmz-inward- mac$ git push
Counting objects: 17, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (17/17), 1.36 KiB | 698.00 KiB/s, done.
Total 17 (delta 10), reused 0 (delta 0)
remote: Resolving deltas: 100% (10/10), completed with 4 local objects.

Git 相关

Git 常用的操作命令

回退到分支指定版本

  • 查看分支历史变动历史,回退指定版本号

image

Mac:dmz-inward- mac$ git reset --hard bb8708981a01eb568d114ed7ddad71f6cd881f7e
HEAD is now at bb87089 Merge branch 'feature_test' into feature


Cherry-Pick

将某一分支的commit修改,应用到当前本地分支。如:将feature上的某一commit修改应用到master上

Mac:dmz-inward- mac$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
  1. Cherry-Pick

image

  1. Intellij Idea With Git 开发过程

本地分支重命名

Mac:dmz-inward- mac$ git branch -m feature feature_rename

本地新建分支推送到远端

Mac:dmz-inward- mac$ git push --set-upstream origin feature_one
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/dreamming/dmz-inward-.git
 * [new branch]      feature_one -> feature_one
Branch 'feature_one' set up to track remote branch 'feature_one' from 'origin'.

删除本地分支 & 删除远端分支

Mac:dmz-inward- mac$ git branch -d feature_one  // 删除本地分支
warning: deleting branch 'feature_one' that has been merged to
         'refs/remotes/origin/feature_one', but not yet merged to HEAD.
Deleted branch feature_one (was dd90129).

Mac:dmz-inward- mac$ git push origin :feature_one  // 删除远端分支
To https://github.com/dreamming/dmz-inward-.git
 - [deleted]         feature_one

查看版本变动

  1. 查看分支历史变动
Mac:dmz-inward- mac$ git reflog
47128b4 (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: commit: //
0388b70 HEAD@{1}: checkout: moving from feature to master
bb87089 (feature_two, feature) HEAD@{2}: checkout: moving from master to feature
0388b70 HEAD@{3}: checkout: moving from feature to master
bb87089 (feature_two, feature) HEAD@{4}: reset: moving to bb8708981a01eb568d114ed7ddad71f6cd881f7e
06d0579 (origin/feature) HEAD@{5}: commit: __
bb87089 (feature_two, feature) HEAD@{6}: checkout: moving from master to feature
0388b70 HEAD@{7}: checkout: moving from feature_one to master


image

  1. 查看文件更改人

image

image

参考

我的博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IntelliJ IDEA With Git 的相关文章

  • TortoiseGit 与 TortoiseSVN 并存?

    我已经使用 TortoiseSVN 好几年了 但我正在考虑慢慢改用 git 因为我真的很喜欢它的分支和合并 我目前正在通过命令行使用 git 但正在考虑安装 TortoiseGit 有人有并排使用两只乌龟的经验吗 这有什么已知的问题吗 我真
  • GIT Rebase 对多个 0.5GB 二进制文件致命

    这个问题本质上是重新开rebase 期间 git 崩溃 https stackoverflow com q 7692944 1286639从来没有答案 我正在尝试从我的 secc 分支进行变基 git rebase main First r
  • 如何使用 jenkins shell 创建新的 git 分支

    我想达到以下目标 在某些詹金斯工作中 从 dev branch 创建一个新分支 对新创建的分支 new branch 进行一些更改 将新创建的分支推送到 git repo 我在詹金斯中执行了以下步骤 我已经在 源代码管理 部分配置了我的 g
  • Azure DevOps/VSTS 始终在干净的存储库上报告“DETACHED HEAD”

    Friends 我现在厌倦了 Azure DevOps VSTS Jenkins 好多了 现在仍然如此 只是我的组织想要使用 Azure DevOps 我有一个谜团需要帮助来解决 以下是我的笔记本电脑上的存储库 它没有未跟踪或未提交的更改
  • 从TFS迁移到GIT,共享项目到nuget

    我所在的软件团队由 4 5 名开发人员组成 他们从事一个 TFS 项目 我们正在考虑将整个代码库移至 GIT 该代码库由约 50 个 Visual Studio 2013 解决方案组成 分为约 300 个项目 引用项目中另一个程序集的首选过
  • 使用 'gitbranch' 命令显示当前 git 分支

    我在处理太多分支时遇到问题 需要花费很多时间才能找到我现在正在处理的当前分支 有没有办法在使用时显示的列表顶部列出当前分支git branch命令 如果您只想要签出分支 请使用git branch show current
  • 如何使用 git-svn 使 svn:external 保持最新?

    将我的存储库视为 SVN 存储库 我得到 svn co http myrepo foo trunk foo foo bar baz gt http myrepo baz trunk 将其视为 Git 存储库 我得到 git svn clon
  • 我可以用一个命令销毁并重新创建 Git 远程分支吗?

    在 Git 中 我有时会在长期运行的分支上工作 我喜欢时不时地重新建立 master 基础 以便在准备好时使合并变得更容易 变基后 我无法将先前推送的分支推送到远程 因为我的分支的历史记录不再与该分支的远程历史记录一致 所以我必须先删除它
  • 如何仅对暂存内容运行 git 预提交检查?

    Suppose git status给出这个 On branch X Changes to be committed use git reset HEAD
  • Git 二进制文件与 .gitattributes 中的 -diff

    在 gitattributes 中有以下等价内容 chm binary chm diff 我努力了 chm二进制文件 但恐怕它仍然可能尝试合并这些文件 是 diff更适合我打算做什么 另外 在提交给定类型的文件后 此设置是否适用 Thank
  • git am:补丁格式检测失败

    我以前从未在 Git 中使用过补丁 我需要一些帮助 我正在尝试将补丁应用到 Git 存储库来测试 Wine 补丁 特别是这个补丁在这里 https bugs winehq org attachment cgi id 60752 所以我做了以
  • 从历史记录中删除不需要的文件,包括带有过滤分支的所有引用

    我最近克隆了一个 SVN 存储库 其中曾经有一些二进制文件 但不再需要了 不幸的是 我已经将它和包含的二进制文件推送到了 Github 我现在想使用 git filter branch 删除它们 但在标签和分支方面我遇到了一些问题 基本上
  • React Native:即使文件不存在,也会出现 hprof 文件太大错误

    当我尝试跑步时git push origin master在我的 React Native 应用程序中 我得到 file android java pid60072 hprof is 564 94 MB this exceeds GitHu
  • Github README.md 和 readme.md - 如何删除其中一个?

    不知何故 我最终在 github 上有了 README md 和 readme md 现在这两者相互影响 所以我的 GitHub app 完全混乱了 Github网站没有任何文件删除功能 如何删除这些文件之一 只需删除其中一个文件并提交删除
  • git-daemon 的日志保存在哪里? (Windows 上的 Git 使用 Cygwin)

    我正在将 git daemon 作为 Windows 服务运行 使用创建进程 服务中使用的命令是 git daemon reuseaddr base path data test work export all verbose enable
  • 如何归档旧的 git 标签?

    我的 git 存储库中有一些不再重要的旧标签 我想存档标签 以便在运行 git tag 时默认情况下它们不会显示 我不想删除它们 因为我想保留历史记录 我怎样才能做到这一点 可以将标签保留在存储库中并避免将它们列为标签 它还可以避免默认克隆
  • git 无法暂存文件,将所有文件显示为重复,但字符大小写不是问题

    就我而言 我对我的文件之一进行了简单的一项更改 并想提交我的更改 但注意到 commit am 没有添加 提交该文件 发出 git 后ls files stage 我看到项目中的所有文件可能都显示为重复项 这是其中一个文件的示例 10064
  • 在 PowerShell 错误消息中使用 touch 命令创建新文件

    我的桌面上有一个使用 PowerShell 创建的目录 现在我尝试在其中创建一个文本文件 我确实将目录更改为新目录 然后输入touch textfile txt 这是我收到的错误消息 touch The term touch is not
  • Git 提交从 Windows 上的守护程序返回错误 docker/error 响应

    我正在为我的 Laravel 应用程序 BE 运行 docker 我对 readmeme md 文件进行了简单的更新 并尝试将此文件提交并推送到 git 当我尝试提交时 这就是我得到的 gt git c user useConfigOnly
  • 子 git 存储库作为主存储库的子集

    我正在寻找一种方法来设置 git 存储库 其中包括来自较大存储库的文件子集 并从该主存储库继承历史记录 我的主要动机是能够通过 GitHub 共享代码子集 我目前通过单个 git 存储库管理我的研究相关 主要是 Matlab 代码 代码本身

随机推荐