Git命令详解

54 阅读4分钟

1 git reset HEAD~ --soft

以下是ChatGPT的回答:

git reset HEAD~ --soft 命令用于取消上一次提交,并将取消的更改保留在暂存区(Index)中。这个命令可以让你“撤销”最近的提交,但是保留更改,以便你可以在进行修订后重新提交。

具体作用如下:

  1. git reset: 这是 Git 的一个命令,用于调整当前分支的指针。
  2. HEAD~: 表示在当前提交的父提交。数字可以更改,例如 HEAD~2 表示倒数第二个提交。
  3. --soft: 这是重置模式,它表示只更改分支指针而不更改工作目录或暂存区。即,保留更改在暂存区。

假设你有以下提交历史:

sqlCopy code
commit C (HEAD)
commit B
commit A

如果你运行 git reset HEAD~ --soft,它将:

  1. HEAD 指针移动到 B,即 C 的父提交。
  2. 保留 C 的更改在暂存区(Index)中。

这样你可以在暂存区修订你的更改,然后使用 git commit 重新提交,以创建一个新的提交。

使用 git reset HEAD~ --soft 可以很方便地修正上一次提交的错误或者重新调整提交历史,但要小心使用,因为它会影响到你的仓库历史。

2 git reset

要丢弃 Git 中暂存区的内容,可以使用 git reset 命令。具体取决于你想要的操作,有两种常见的情况:

  1. 丢弃暂存区的所有内容: 如果你想要完全丢弃暂存区的所有更改,可以使用以下命令:

    git reset
    

    这将清空暂存区,将所有暂存的更改退回到工作目录。这个操作不会影响之前的提交历史。

  2. 丢弃暂存区中特定文件的内容: 如果你只想丢弃暂存区中特定文件的更改,可以使用以下命令:

    git reset <file>
    

    <file> 替换为要丢弃的文件的路径。这会将指定文件在暂存区的更改退回到工作目录,不会影响其他文件或之前的提交历史。

需要注意的是,git reset 默认会使用 --mixed 模式,即将暂存区的内容退回到工作目录,但保留更改。如果你想要完全丢弃暂存区的更改,可以在命令后添加 --hard 参数:

git reset --hard

无论如何,使用 git reset 命令时请谨慎操作,因为它会影响你的工作目录和暂存区。最好在操作前确认你的更改和意图。

3 Git丢弃修改

如果你想撤销工作目录中的修改,即丢弃对文件的更改,可以使用 git checkoutgit restore 命令。以下是这两个命令的用法:

  1. 使用 git checkout

    git checkout -- <file>
    

    这个命令会撤销指定文件的工作目录中的更改,恢复到上一次提交的状态。你可以将 <file> 替换为要撤销修改的文件路径。

    例如,如果要撤销对 test.txt 文件的修改,可以运行:

    git checkout -- test.txt
    
  2. 使用 git restore(需要 Git 版本 >= 2.23):

    git restore <file>
    

    这个命令也会撤销指定文件的工作目录中的更改,恢复到上一次提交的状态。你同样需要将 <file> 替换为要撤销修改的文件路径。

    例如,如果要撤销对 test.txt 文件的修改,可以运行:

    git restore test.txt
    

这两个命令都可以将文件恢复到最近的提交状态,丢弃工作目录中的更改。请注意,在执行这些命令之前,确保你已经保存了你希望保留的任何更改,因为这些命令会不可逆地覆盖工作目录中的内容。

4 Git添加远程仓库

# 添加远程仓库
git add remote origi https://github/.../.../test.git
# 重命名
git rename origi origin

git push -u 命令用于将本地分支的更改推送到远程仓库,并建立本地分支与远程分支的关联。通常在首次推送本地分支时,使用-u参数来建立远程分支的跟踪关系,以便后续使用简化的git push` 命令。

5 Git分支

# 新建分支并切换
git checkout -b branchname