当前位置:   article > 正文

极简并优雅的在IDEA使用Git远程拉取项目、本地推送项目、合并分支和版本回撤_idea拉去git项目

idea拉去git项目

连接Git

 搜索Git然后将你下载好的Git的文件目录位置给他弄进去就行

本地分支管理

分支管理通常是在IDEA的右下角找到

 

分支合并

1.概念

rebase和merge的区别

merge 是合并的意思,rebase是复位基底的意思 

merge

  1. 合并将两个分支的历史合并成一条线。当你合并两个分支时,Git会创建一个新的“合并提交”(merge commit),它将两个分支的末端提交作为父提交。
  2. 合并保留了分支的历史结构,可以看到明显的分支和合并点,这有助于理解项目的历史发展过程。
  3. 使用场景:当你想要保留分支的完整历史,或者需要将特性分支合并回主分支时。

rebase

  1. 变基将一个分支上的提交“复制”并“重新应用”到另一个分支上。这会导致历史记录变得更加线性,因为变基操作会改变历史。
  2. 变基使得项目的历史看起来更加整洁,因为它避免了额外的合并提交,所有的提交都会在一条直线上。
  3. 使用场景:当你想要清理提交历史,或者在特性分支上应用主分支的最新更改时。

假设现在有一个test分支。

  1. D---E test
  2. /
  3. A---B---C---F master

1.merge

会产生一个新的节点G,是将分支和master合并到同个节点

  1. D--------E
  2. / \
  3. A---B---C---F---G test , master

2.rebase

不会产生一个新的节点,而是将分支弄到主分支上

  1. A---B---C---F---D*---E* test , master

2.案例:

1.在master上新开一个kkoneone分支并创建一个新类进行一些操作。

2.commit一下内容,把更改的内容和分支推送到远程仓库

回到主分支看是没有代码的,接下来的操作就是要把kkoneone分支合并到matser中

3.合并分支 

在master主分支,点击kkoneone分支可以看到有这两条,选择上面那个,就是说把kkoneone这条分支rebase到master里面去

可以看到这时候master就已经有了kkoneone分支里的内容

然后进行push一下,这时候远程代码库的master分支也已经有了kkoneone分支上的代码 

 版本回撤

首先当前版本是这样的,“初始化”就是当前的版本

然后添加一语句,并commit和push提交为版本1

System.out.println("test2");

额外小知识:HEAD、master、origin/master的区别

  • HEAD 是当前工作目录的分支或提交的指针。
  • master 是本地仓库中的分支,你可以直接在其上工作和提交。
  • origin/master 是远程仓库中的 master 分支的指针,用于比较和合并。

而此时我们不想要这个更改过后的版本,想跳回到之前的版本,不做任何代码的保存,就对你想要的版本右键(这里我跳回初始化这个版本)

根据自己的需求选择,这里我选择hard,意思就是你这个版本写的代码不会保存,直接回调到你想要的那个版本的代码(本地),但commit的版本还会存在

可以看到代码已经消失并且指针回到了上一次初始化的版本,但可以看到远程代码仓库的代码还没更改,远程仓库代码还是存在的

git reset中soft、mixed、hard、keep的区别

  1. --soft

    • 使用 --soft 选项时,git reset 会将HEAD移动到指定的提交,但是不会修改索引(即暂存区)或工作目录。这意味着所有的更改都会保留在索引中,准备进行下一次提交。
    • 这相当于重置了HEAD,但是保留了所有更改,以便你可以重新提交。
  2. --mixed(默认):

    • --mixed 是 git reset 的默认行为。它会将HEAD和索引重置到指定的提交,但是不会改变工作目录。这意味着所有在索引中的更改都会被更新,但是工作目录中的更改仍然保留。
    • 这相当于重置了HEAD和暂存区,但是工作目录中的更改未受影响。
  3. --hard

    • 使用 --hard 选项时,git reset 会将HEAD、索引以及工作目录全部重置到指定的提交状态。这将丢弃所有未提交的更改。
    • 这相当于重置了HEAD、暂存区以及工作目录,使得当前的工作状态与指定的提交完全一致。
  4. --keep

    • --keep 选项用于当存在本地提交时,你想要重置HEAD和索引到远程分支的状态,但又不想丢失本地的提交。它会尝试保持本地提交,即使它们在远程分支中不存在。
    • 如果本地提交可以安全地应用到远程分支上,--keep 会重置HEAD和索引,但是保留本地提交。如果存在冲突,它会停止重置并允许你解决这些冲突。

额外小知识

问题:

如果这个时候不做任何更改单纯是进行push就会出现这个问题,是因为我们之前选择的那个方案只是改了本地仓库的代码,但远程仓库的代码没变,因此两边版本不一致导致无法push。(当和其他人协作开发的时候,别人push上去了的代码我们没有及时pull下来本地,这个时候我们push上去也是会有这个问题)

连接远程仓库

方法1本地项目推送到远程仓库

 如果当前项目还没交给Git管理的则按照以下图所示先将项目交给Git管理

 然后此时文件都会是红色的,这表明都还没有加入到缓存区,因此要先add一下

 然后commit

 可以看到文件都被加入进来了,然后填写一个备注信息之后就可以commit了

 如果想按照模块来看的话可以选择这个

 注意此时是master分支 

此时他需要你填入一个URL,因此得先去GItHub上新建一个专属于这个项目的仓库

创建好后将这里的HTTPS或者SSH复制进去即可

这的意思就是说本地master分支会推送到远程origin的master分支上并连接上,我们直接push即可

 这种情况不用惊慌,重启一下项目再来push即可

 

方法2 基于远程上已有的项目

项目交给Git管理后找到右下角的Git

 按照以下步骤填入远程仓库URL,表示连接远程仓库

填入远程仓库名字和URL 

 

至此我们就连接上了远程仓库,但还没有将本地分支和远程仓库分支连接起来 

 

可以在右下角先打开当前分支,找到远程分支右键,选择从远程仓库新建一条分支,这时候命名一下然后本地那就会出现一条分支 

 

当我们commit完之后push,之后就能看到那条分支已经连接上远程分支

 本地分支

 

连接远程的那条分支 

可以看到push完显示这样已经是本地分支已经连接上了远程分支 

 GItHub上也已经有这条分支。注意这种方法是在之前那条分支的基础上新增的,也就是说会保留之前项目的内容

本地克隆远程

本地拉取远程

方法1拉取人家的项目 

从新建这个地方选择

然后将人家的地址的URL地址复制进去

 Directory是该项目拉取下来后存在的位置

方法2 拉取自己仓库的项目

看到右上角的

选择要拉取的仓库名字

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/799189
推荐阅读
相关标签
  

闽ICP备14008679号