git常用命令介绍

1、git merge

Git merge是一种用于将一个分支的更改合并到另一个分支的操作。

示例:

          A---B---C                [master]
           \
            D---E---F             [feature-branch]

在这个示例中,master分支上有三个提交(标记为A、B和C),而feature-branch分支上有三个提交(标记为D、E和F)。我们希望将feature-branch分支的更改合并到master分支。

执行合并操作后的结果如下:

          A---B---C---M           [master]
           \         /
            D---E---F             [feature-branch]

合并后的结果是一个新的提交(标记为M),它包含了feature-branch分支的更改并被添加到了master分支上。这样,master分支就包含了来自feature-branch分支的最新更改。

需要注意的是,如果在合并过程中发生了冲突,Git会暂停合并并提示解决冲突。解决冲突涉及手动编辑代码,以确保合并的结果正确并符合预期。

在Git中,合并操作不仅仅是简单地将两个分支的提交按照顺序连接起来,而是通过比较和合并两个分支上的更改来创建一个新的合并提交。合并提交包含了两个分支上的共同祖先以及它们之间的差异

综上所述,合并操作不仅仅是简单的连接提交,它需要考虑分支之间的差异并生成正确的合并结果,保持代码库的完整性和一致性。

2、Git revert

Git revert是一种撤销Git提交的命令。当你想撤销之前的提交并创建一个新的提交来取消更改时,可以使用git revert命令。

使用git revert会创建一个新的提交,该提交将撤销先前提交所做的更改。这样做的好处是保留了Git提交历史的完整性,不会改变先前提交的内容,而是通过创建一个新的提交来撤销更改。

要使用git revert,可以使用以下命令:

git revert <commit-hash>

其中,<commit-hash>是要撤销的提交的哈希值或引用。

使用git revert时,Git会自动创建一个新的提交撤销先前提交所做的更改新的提交将包含与先前提交相反的更改,以将代码恢复到先前的状态。

需要注意的是,git revert只会撤销指定提交的更改,并创建一个新的提交。它不会修改任何其他提交,也不会删除提交历史。因此,如果需要撤销多个提交,可以多次使用git revert命令。

此外,git revert还支持一些选项和参数,例如--no-commit选项用于撤销提交的更改但不创建新的提交,以便你可以对撤销的结果进行修改或添加其他更改。

总而言之,git revert是一个有用的命令,可以帮助你在Git中撤销先前的提交并保持提交历史的完整性。

        A---B---C---D---E (master)
                    ^
                    |
                HEAD, origin/master

 

在上面的示例中,提交历史中有一条分支master,最新的提交是E。现在我们想要撤销提交D的更改。

使用git revert命令,会创建一个新的提交F,该提交撤销了D中的更改,但不会影响E

git revert D

 

执行以上命令后,提交历史将如下所示:

        A---B---C---D---E---F (master)
                    ^
                    |
                HEAD, origin/master

 

D是不会被删除的,新的提交F会将代码恢复到提交C的状态,并且保留了提交E的内容。这样可以确保提交历史的完整性,其他人可以看到撤销操作的记录。

所以,使用git revert不会覆盖或修改先前的提交,而是通过创建一个新的撤销提交来撤销更改。

3、git rebase

Git中的rebase是一个用于重新应用提交的命令。它允许将一个分支上的提交移到另一个分支上,或者修改提交的顺序、合并提交等操作,从而改变提交历史的结构。

考虑以下示例,假设有两个分支:featuremaster,它们的提交历史如下:

          A---B---C  feature
         /
---D---E---F---G    master

 

现在我们希望将feature分支上的提交重新应用到master分支上。我们可以执行以下命令:

git checkout feature
git rebase master

 

执行完rebase后,提交历史将变为:

                    A'--B'--C'  feature
                   /
---D---E---F---G           master

 

在这个示例中,rebase命令将feature分支上的提交ABC重新应用到master分支上。这样,feature分支的提交历史线性地连接到了master分支的末端。

另外,如果我们使用交互式的方式进行rebase操作,可以打开一个编辑器,对提交进行编辑、重新排序或合并。例如,执行以下命令:

git rebase -i master

 

这将打开一个编辑器,其中列出了feature分支上的提交。你可以移动、删除、合并提交,然后保存并退出编辑器。在保存后,rebase将按照你的指示重建提交历史。

总结起来,通过git rebase命令,我们可以将一个分支的提交重新应用到另一个分支上,从而改变提交历史的结构。这可以通过移动提交、编辑提交或合并提交来实现。使用图示可以更直观地展示rebase操作对提交历史的影响。

4、git reset

当你想撤销之前的提交调整分支历史时,可以使用git reset命令。下面是几个使用git reset的例子:

  1. 撤销最新的提交并保留更改:

    git reset HEAD~
    Before:         After:
    A -- B -- C     A -- B
              ↑          ↑
             HEAD     branch
    在这个示例中,HEAD指针和分支指针从提交C移动到提交B,最新的提交C被撤销,但工作目录和暂存区的更改保留下来。

    这将撤销最新的提交并将HEAD指针分支指针移动到上一个提交,但保留更改。这样你可以重新调整和修改提交后再次提交。

  2. 撤销最新的提交并丢弃更改:

    git reset --hard HEAD~
    Before:         After:
    A -- B -- C     A -- B
              ↑          ↑
             HEAD     branch
    在这个示例中,HEAD指针和分支指针从提交C移动到提交B,最新的提交C被撤销,并且工作目录和暂存区的所有更改都被丢弃

    这将撤销最新的提交并将HEAD指针和分支指针移动到上一个提交,同时丢弃所有更改。请谨慎使用此命令,因为丢弃更改后无法恢复。

  3. 将分支指针移动到特定的提交:

    git reset <commit-hash>
    Before:         After:
    A -- B -- C     A -- B
              ↑          ↑
             HEAD     branch
    在这个示例中,HEAD指针和分支指针从当前位置移动到指定的提交,这里用B代表一个特定的提交哈希值。

    可以使用特定的提交哈希值来将分支指针移动到该提交。这在需要调整分支历史或回滚到先前的提交时很有用。

  4. 将分支指针移动到远程分支的位置:

    git reset origin/master
    Before:         After:
    A -- B -- C     A -- B
              ↑          ↑
             HEAD     branch

     

    在这个示例中,HEAD指针和分支指针从当前位置移动到远程分支origin/master所指向的位置。这通常用于将本地分支与远程分支同步。

    如果想将本地分支与远程分支同步,可以使用此命令将分支指针移动到远程分支的位置。注意,此操作将丢弃本地分支上的所有未提交更改

这些只是git reset命令的一些示例用法。在实际使用中,可以根据具体情况选择合适的选项和参数来满足需求。记住,使用git reset时要小心,并确保了解其影响,以免不小心丢失重要的更改。

5、

6、

7、

posted @ 2023-07-01 18:02  多一些不为什么的坚持  阅读(33)  评论(0编辑  收藏  举报