git 常用命令

发布于:2024-04-23 ⋅ 阅读:(15) ⋅ 点赞:(0)

部分内容来自AI

git revert

git revert 是一个命令,它用于撤销指定提交的更改。它会创建一个新的提交,执行与指定提交相反的更改。

使用方法如下:

git revert <commit-hash>

这里的 <commit-hash> 是你想要撤销的提交的hash值。可以使用 git log 命令来查找对应的 <commit-hash> 。

例如,如果你想要撤销最近的提交,你可以使用以下命令(HEAD是指向你当前所在的最后一个提交的指针):

git revert HEAD

如果你想要撤销倒数第二个提交,你可以使用:

git revert HEAD~1

git revert 命令会打开一个文本编辑器,让你输入新提交的提交信息。如果你不想改变自动生成的提交信息,你只需直接退出编辑器即可。

需要注意的是,git revert 并不会删除指定的提交,而是创建一个新的提交。如果你想要完全删除一个提交,你需要使用 git reset 或 git rebase

git reset

git reset是一个命令,它用于将当前工作区和staging area(暂存区)重置到一个指定的commit。有三种模式:--soft, --mixed, --hard

  • git reset --soft <commit>: 此命令会将HEAD指针移动到指定的commit,但不会改变staging area和工作区。换句话说,它保留了工作区和staging area的状态。

  • git reset --mixed <commit>: 这是默认的模式。此模式下,命令会将HEAD指针和staging area移动到指定的commit,但不改变工作区。这样可以重新添加和提交文件。

  • git reset --hard <commit>: 此命令将完全重置您的工作区、staging area和HEAD指针到指定的commit。这将删除所有指定commit之后的更改。这是一个具有破坏性的命令,应谨慎使用。

请替换 <commit> 为要重置到的commit的hash。例如,如果你想要恢复到前两个提交的状态,你可以使用 git reset HEAD~2

如果你想要完全舍弃所有uncommit的更改(包括工作区和staging area的更改),你可以使用 git reset --hard HEAD

git rebase

git rebase 是一种变基操作,它用于将一系列提交应用到另一个基(base)上。其可以用于整理提交历史,使其更加线性,也可以用于将分支上的修改更新到最新的主分支上。

基本的 git rebase 命令如下:

git rebase <base>

这里的 <base> 可以是任何一种提交的引用(比如分支名,标签名,或者是 commit hash)。

使用这个命令,Git 将首先找到当前分支与指定基之间的公共祖先(common ancestor),然后获取当前分支自那个时间点以来所做的修改,并将这些修改在 <base> 指向的提交上重新应用一次。

在可能的情况下,Git 会进行自动的合并,但如果同一部分代码在两个地方都被修改过,就可能发生冲突。这种情况下,就需要手动解决冲突。

另外, git rebase 有一种交互模式(interactive mode),可以通过添加 -i 参数来开启。在交互模式下,你可以改变提交的顺序,改写提交信息,将多个提交合并为一个,等等。

需要注意的是,git rebase 是一个改写历史的操作,你可能需要force push来将变更更新到远程仓库。也因此,在公开的分支上使用 rebase 需要特别小心,因为它可能会打乱其他人的工作。