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
是一个用于重新应用提交的命令。它允许将一个分支上的提交移到另一个分支上,或者修改提交的顺序、合并提交等操作,从而改变提交历史的结构。
考虑以下示例,假设有两个分支:feature
和master
,它们的提交历史如下:
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
分支上的提交A
、B
和C
重新应用到master
分支上。这样,feature
分支的提交历史线性地连接到了master
分支的末端。
另外,如果我们使用交互式的方式进行rebase
操作,可以打开一个编辑器,对提交进行编辑、重新排序或合并。例如,执行以下命令:
git rebase -i master
这将打开一个编辑器,其中列出了feature
分支上的提交。你可以移动、删除、合并提交,然后保存并退出编辑器。在保存后,rebase
将按照你的指示重建提交历史。
总结起来,通过git rebase
命令,我们可以将一个分支的提交重新应用到另一个分支上,从而改变提交历史的结构。这可以通过移动提交、编辑提交或合并提交来实现。使用图示可以更直观地展示rebase
操作对提交历史的影响。
4、git reset
当你想撤销之前的提交或调整分支历史时,可以使用git reset
命令。下面是几个使用git reset
的例子:
-
撤销最新的提交并保留更改:
git reset HEAD~
Before: After: A -- B -- C A -- B ↑ ↑ HEAD branch
在这个示例中,HEAD指针和分支指针从提交C移动到提交B,最新的提交C被撤销,但工作目录和暂存区的更改保留下来。这将撤销最新的提交并将HEAD指针和分支指针移动到上一个提交,但保留更改。这样你可以重新调整和修改提交后再次提交。
-
撤销最新的提交并丢弃更改:
git reset --hard HEAD~
Before: After: A -- B -- C A -- B ↑ ↑ HEAD branch
在这个示例中,HEAD指针和分支指针从提交C移动到提交B,最新的提交C被撤销,并且工作目录和暂存区的所有更改都被丢弃。这将撤销最新的提交并将HEAD指针和分支指针移动到上一个提交,同时丢弃所有更改。请谨慎使用此命令,因为丢弃更改后无法恢复。
-
将分支指针移动到特定的提交:
git reset <commit-hash>Before: After: A -- B -- C A -- B ↑ ↑ HEAD branch
在这个示例中,HEAD指针和分支指针从当前位置移动到指定的提交,这里用B代表一个特定的提交哈希值。可以使用特定的提交哈希值来将分支指针移动到该提交。这在需要调整分支历史或回滚到先前的提交时很有用。
-
将分支指针移动到远程分支的位置:
Before: After: A -- B -- C A -- B ↑ ↑ HEAD branch
在这个示例中,HEAD指针和分支指针从当前位置移动到远程分支origin/master所指向的位置。这通常用于将本地分支与远程分支同步。如果想将本地分支与远程分支同步,可以使用此命令将分支指针移动到远程分支的位置。注意,此操作将丢弃本地分支上的所有未提交更改。
这些只是git reset
命令的一些示例用法。在实际使用中,可以根据具体情况选择合适的选项和参数来满足需求。记住,使用git reset
时要小心,并确保了解其影响,以免不小心丢失重要的更改。
5、
6、
7、