git详细教程

git详细教程

  • 区域划分
  • 单分支操作
    • git log
      • 语法
      • 常用的参数及其详解
      • git log 结果
    • git reflog
    • git diff
      • 常用的参数及其详解
    • git reset
      • 常用的参数及其详解
    • git checkout
    • git rm
      • 常用的参数及其详解
    • git remote
      • 常用的参数及其详解
  • 多分支切换代码融合
    • git switch
      • 常用的参数及其详解
    • git branch
      • 常用的参数及其详解
    • git merge
      • 常用的参数及其详解
    • git cherry-pick
      • 常用的参数及其详解
  • 暂存

区域划分

在 Git 中,有三个主要的区域,用于管理文件的状态和版本控制。这三个区域分别是:工作区(Working Directory) 暂存区(Staging Area) 版本库(Repository)

工作区(Working Directory):工作区是你在电脑上实际进行文件编辑和修改的地方。这里包含了项目的所有文件,包括已经被 Git 管理的文件和未被 Git 管理的文件。
暂存区(Staging Area):暂存区是一个中间区域,你可以将工作区中的文件添加到暂存区。在 添加到暂存区(add) 之后,这些文件就处于等待被提交的状态。暂存区的主要功能是允许你对提交做出更细粒度的控制。
版本库(Repository):版本库是 Git 的核心部分,用于存储项目的所有历史记录和元数据。当你 执行提交(commit) 操作后,暂存区中的文件会被复制到版本库中,并生成一次新的提交记录。

简单来说,工作区是你实际进行编辑和修改的地方,暂存区是存放准备提交的文件的地方,而版本库则是存储所有历史记录的地方。
通过这三个区域的结合使用,你可以有效地管理和追踪项目中文件的状态和变化,并进行版本控制。

注: HEAD : 指针,指向的本地版本库的当前版本 HEAD^ 指针的上一个版本

单分支操作

git init #初始化git
git log #查看当前分支历史提交记录
git reflog #查看Git日志,历史提交记录
git clone [email protected]:vvd/vvd.git #克隆指定的远程仓库到本地,在本地创建一个与远程仓库完全一样的副本
git status #查看当前工作区状态
git diff #对比显示未暂存的变更
git checkout -- readme.txt #撤销在工作区中被修改但尚未被添加到暂存区的内容 例如将误删的文件找回 删修改 
git add #将工作区的文件添加到暂存区
git reset HEAD readme.txt #取消暂存的文件 不删修改
git commit #将暂存区的文件添加到版本库中
git reset HEAD^ #撤销上一次提交  不删修改
git checkout HEAD^ #撤销上一次提交  删修改
git pull #将远程版本库的代码拉至本地版本库
git push #将本地版本库代码推送至远程库中
git diff #比较文件差异

git log

git log 是一个用于查看 Git 提交历史记录的命令。它列出了当前分支上的所有提交,并提供有关每个提交的详细信息,如提交作者、提交时间、提交消息等。

语法

git log [<options>] [<revision range>] [--] [<path>...]

以下是命令中各个部分的说明:
:用于控制 git log 命令的输出方式和内容的选项。例如 --oneline--graph 等。
:可选参数,用于指定查看哪些提交的范围。例如分支名称、提交哈希值、标签名称等。如果未指定范围,则默认为当前分支的所有提交。
--:可选参数,用于隔离路径参数。如果指定了参数,则 git log 将只显示与指定路径相关的提交。
:可选参数,用于指定与路径相关的提交。只显示与指定路径相关的提交。

常用的参数及其详解

--oneline: 以紧凑的格式显示每个提交的简略信息,只显示提交的哈希值和提交消息。
--pretty=oneline: 同上,区别是显示的提交哈希值为完整信息
--graph: 在提交历史的左侧显示 ASCII 字符以形成图形表示,展示分支和合并的情况。
--author=: 按照作者筛选提交记录,只显示指定作者的提交历史。
--since=: 只显示指定日期以后的提交记录。
--until=: 只显示指定日期之前的提交记录。
--grep=: 按照指定的模式匹配提交消息,只显示匹配的提交记录。
--follow: 如果指定的文件在提交过程中被重命名或移动,继续显示它们的历史。
--stat: 显示每个提交的简略统计信息,包括修改的文件和插入/删除的行数。
--patch: 显示每个提交的详细差异信息,包括修改的文件和修改内容的具体行。
--decorate: 在提交历史中显示分支和标签的名称。
--abbrev-commit: 使用较短的提交哈希值显示提交记录。
--pretty=:指定自定义的输出格式。例如:

git log --pretty=format:"%h - %an, %ad : %s"`  
d87f4c2 - name, Mon Sep 18 13:47:21 2023 +0300 : Added new feature: login functionality

%H:提交的完整哈希值。
%h:提交的短哈希值。
%an:作者的姓名。
%ae:作者的电子邮件地址。
%ad:作者日期(使用日期格式)。
%s:提交的标题/消息。
%cn:提交者的姓名。
%ce:提交者的电子邮件地址。
%cd:提交日期(使用日期格式)。

git log 结果

git log

commit d87f4c26a6f2a682e8e029d209a5e7b48330c60e (HEAD -> main, origin/main origin/HEAD)
Author: John Smith <[email protected]>
Date:   Mon Sep 18 13:47:21 2023 +0300

    Added new feature: login functionality

commit 0b427baffe75d4e24e690a88821982a4f19a5e79 (origin/develop)
Author: Jane Doe <[email protected]>
Date:   Fri Sep 15 09:22:47 2023 +0300

    Fixed bug in registration form validation

commit 0b427baffe75d4e24e690a88821982a4f19a5e79
Merge: 346f84a c1bf48e
Author: John Smith <[email protected]>
Date:   Fri Sep 20 10:15:52 2023 +0300

    Merge branch 'feature/login' into main

    Resolved conflicts and added login feature

    Commit c1bf48e fixed bug in navigation menu
    Commit 346f84a added new feature: search functionality

示例中,每个提交记录都有以下主要部分:
提交哈希值(commit hash): commit d87f4c26a6f2a682e8e029d209a5e7b48330c60e
它是用于唯一标识提交记录的字符串,可以用来在 Git 中引用这个提交。
作者(Author): Author: John Smith [email protected]
显示了提交者的姓名和邮箱地址。
提交日期(Date): Date: Mon Sep 18 13:47:21 2023 +0300
表示提交的时间戳,包括日期和时间信息。本例中的 +0300 表示时间偏移值。
提交消息(Commit message): Added new feature: login functionality
提交者在提交代码时提供的描述信息,用于说明该次提交的目的和内容。
Merge commit信息(Merge commit message): Merge: 346f84a c1bf48e
如果当前提交是一个合并提交(Merge commit),则会显示这个合并提交的信息,包括被合并的分支和父提交。
分支和标签(Branches and tags): (HEAD -> main, origin/main origin/HEAD)
如果提交记录所在的分支或标签存在,则会在括号内的标记提供了分支和远程分支的相关信息。是帮助理解当前所在分支及其对应的远程分支的位置和追踪关系的指示器,
其中
HEAD: 表示当前所在的分支。在这个例子中,HEAD 指向main分支,说明当前所在的分支是 main。
main: 表示当前所在的本地分支。这是仓库中的一个分支名称。
origin/main: 表示 main 远程分支的引用。origin 是远程仓库的名称,而 origin/main 则表示该仓库中 main 分支的引用。
origin/HEAD: 表示 origin 远程仓库中当前所在的分支。origin/HEAD 是一个特殊的指针,它指向 origin 仓库中当前活动的分支。

git reflog

git reflog是一个用于查看 Git 引用日志(reference log)的命令。它记录了本地仓库中的引用(如分支、标签等)的更新历史,包括这些引用的创建、更新以及删除操作。
即:记录你的每一次命令!

通过 git reflog,你可以查看最近的引用操作历史,以便进行回退、恢复、分析或修复操作。如果意外地删除了分支、标签等引用,可以使用 git reflog 来找回被删除的引用。

需要注意的是,git reflog 记录的日志信息是针对本地仓库的操作历史,不同的本地仓库之间的 git reflog 是相互独立的。

git diff

git diff 是一个用于比较文件差异的命令。它可以比较不同的 Git 对象之间的差异,如工作区和暂存区之间的差异,或者暂存区和最新提交之间的差异。帮助了解和管理项目中的更改内容。

常用的参数及其详解

git diff:比较 工作区中的文件和暂存区之间的差异。这将显示哪些文件已修改但尚未被添加到暂存区。
git diff --cached:比较暂存区和最新提交之间的差异。这将显示将要被提交的更改内容。
git diff --staged:与 git diff --cached 相同,比较暂存区和最新提交之间的差异。
git diff :逐一比较两个提交之间的文件差异,显示每个文件的具体变化。
git diff ..:比较两个提交之间的提交范围与工作区的差异,以统计信息的方式显示差异情况。
git diff ..:比较两个分支之间的差异。
git diff --color-words:以单词为单位显示差异,更易读。
git diff --stat:只显示差异的统计信息,包括修改的文件、插入的行和删除的行等。
git diff --ignore-space-change:忽略空格变化,只关注实际的代码更动。
git diff --name-only:只显示发生变更的文件名,而不显示具体的差异内容。

git reset

git reset是一个用于撤销提交和调整当前分支指针的 Git 命令,只能在本地仓库中使用。请记住在使用之前要确保理解其影响,并小心地考虑操作对代码库的影响。不要在与他人共享的分支上使用,以免引起冲突和问题。

取消暂存文件:git reset 或 git reset HEAD 可以取消暂存文件。如果你已经使用 git add 将文件添加到暂存区,但又不想提交它们,可以使用此命令将文件从暂存区移除并保留在工作区。

git reset HEAD readme.txt

撤销提交git reset HEAD~ 可以撤销最近的 个提交。 在Git中,用HEAD表示当前版本,也就是最新的提交哈希值,上一个版本就是HEAD^ ,上上一个版本就是HEAD^^ , 当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reset HEAD^
git reset HEAD~2

git reset HEAD readme.txtgit reset HEAD~2 是不同的命令,它们的作用和效果有所不同:

  • git reset HEAD readme.txt:这个命令将取消 readme.txt 文件的暂存状态,也就是将文件从暂存区移除,但保留其在工作区中的更改。这个命令通常用于撤销对文件的暂存操作,使文件重新变为未暂存状态。
  • git reset HEAD~2:这个命令将当前分支指针(HEAD)重置到前两个提交之前的位置。它会移动分支指针,丢弃那两个提交以及之后的所有提交。此操作会修改版本历史,要谨慎使用。默认情况下,这个命令将暂存区和工作区重置为重置之前的状态,即丢弃那两次提交带来的修改。

所以,这两个命令的区别在于:

  • git reset HEAD readme.txt 撤销指定文件的暂存状态。
  • git reset HEAD~2 则是将分支指针移动到前两个提交之前的位置,并相应地重置暂存区和工作区,丢弃这两个提交带来的更改。

调整分支指针git reset 可以将当前分支指针移动到指定的 ,并将之后的提交丢弃。该操作会修改版本历史,慎用。常见的选项有:

常用的参数及其详解

--soft: 仅移动分支指针,保留修改和暂存区的内容。此时可以使用 git commit 重新提交。
--mixed (默认选项): 仅移动分支指针,保留修改和暂存区的内容。此时可以使用 git add 和 git commit 重新处理更改。
--hard: 这个选项是最彻底的选项,它会完全删除指定提交及其之后的所有提交,移动分支指针,重置暂存区和工作区,丢弃修改。使用该选项需要谨慎,因为它会永久删除你的更改,无法恢复。

git reset d87f4c26a6f2a682e8e029d209a5e7b48330c60e

注意: Git必须知道要将指针打到哪个版本上:

  1. git log可以查看提交历史,以便确定要回退到哪个版本。要重返意外回退的版本,
  2. git reflog查看命令历史,以便确定要回到之前意外回退的哪个版本。

git checkout

git checkout 是一个在 Git 中用于切换分支恢复文件检出提交的命令。

恢复文件git checkout -- 撤销在工作区中被修改但尚未被添加到暂存区的内容,将其恢复到最近一次提交的状态。这对于丢弃未保存的更改或修复错误修改很有用。例如,运行 git checkout – myfile.txt 将撤销对 “myfile.txt” 文件的修改。

git checkout -- readme.txt

切换分支git checkout 可用于切换到指定的分支。将使你的工作区和版本库中的文件变为该分支的最新状态。

git checkout feature #切换到名为 “feature” 的分支

创建并切换分支git checkout -b 可用于创建一个新的分支并立即切换到该分支。

git checkout -b feature  # 创建并切换到名为 “feature” 的新分支

检出提交git checkout 可用于将工作区和版本库状态恢复到指定提交的状态。这会导致分离头指针(detached HEAD),在这种模式下,你不会处于任何分支上,所以任何提交将会导致一个匿名分支。使用 git checkout 需要指定提交的哈希值或引用名。例如,git checkout HEAD~2 将使工作区和版本库恢复到倒数第二次提交的状态。

git checkout HEAD~2git reset HEAD~2 在功能上有所不同:

  • git checkout HEAD~2:这个命令会将分支指针移动到前两个提交之前的位置,并切换到该提交状态。在执行完这个命令后,你将进入“分离头指针”状态,即不再位于任何分支上。工作区和暂存区将被重置为该提交的内容。这意味着你将丢失当前分支上未提交的更改,并且切换到的那个提交的内容将成为工作区和暂存区的内容。
  • git reset HEAD~2:这个命令会将分支指针移动到前两个提交之前的位置,并重置暂存区为该位置的内容,但保留工作区的修改。这意味着你可以保留当前分支上未提交的更改,并将它们保留在工作区中。暂存区则被重置为之前的状态,即丢弃了最近的两个提交带来的修改。这个命令通常用于撤销之前的提交或重新组织提交历史。

所以,这两个命令的区别在于:

  • git checkout HEAD~2 会切换到指定提交状态,并重置工作区和暂存区,丢失未提交的更改。
  • git reset HEAD~2 会将分支指针移动到指定提交之前的位置,重置暂存区但保留工作区的修改,保留未提交的更改。

还原某文件的特定版本git checkout -- ,将替换为目标版本的提交标识符或引用名,并将 替换为要还原的文件的路径和名称。例如,要将某个文件 myfile.txt 还原到提交标识符为 abcd1234 的版本,可以运行 git checkout abcd1234 – myfile.txt。
注:在切换分支或检出提交时,请确保将当前工作区中的更改保存、添加或提交。否则,可能会丢失未保存的更改。

git rm

git rm 是用于删除文件和目录的 Git 命令。它可以删除已跟踪的文件,并将删除操作记录在 Git 的提交历史中。你还可以使用不同的选项来保留文件或目录在工作区中,或删除目录及其所有内容。

常用的参数及其详解

git rm file.txt:删除一个已跟踪的文件。执行此命令后,Git 会从工作区和暂存区中删除该文件,并将删除操作记录在 Git 的提交历史中。该文件将不再出现在未来的提交中。

git rm --cached file.txt:移除一个已跟踪的文件,但保留在工作区中。执行此命令后,Git 会从暂存区中删除该文件,但会保留在工作区中。这意味着文件将不再被 Git 跟踪,但不会被物理删除。

git rm -r directory/:删除一个目录及其所有内容。执行此命令后,Git 会从工作区和暂存区中删除目录及其所有内容,并将删除操作记录在 Git 的提交历史中。

git rm --cached -r directory/:移除一个已跟踪的目录,但保留在工作区中。执行此命令后,Git 会从暂存区中删除目录及其所有内容,但会保留在工作区中。这意味着目录将不再被 Git 跟踪,但不会被物理删除。

git rm readme.txtrm readme.txt 后跟 git add 的区别如下:

  • git rm readme.txt:这是 Git 提供的删除文件的方法。执行 git rm readme.txt 命令会将文件 “readme.txt” 从 Git 的版本控制中删除,并将删除操作记录在 Git 的提交历史中。
    删除的文件将从工作区和暂存区中移除,不再被 Git 跟踪。
    你可以直接执行 git commit 来提交这个删除操作,将其记录在 Git 的提交历史中。
  • rm readme.txt 后跟 git add:rm readme.txt 是操作系统的命令,它只是简单地从文件系统中删除了 “readme.txt” 文件,而不涉及 Git。
    如果在删除文件后执行 git add readme.txt,Git 会将这个已删除的文件添加到暂存区。这意味着 Git 认为这是一个新的文件,并准备将其包含在下一次提交中。
    在执行完 git add 后,你还需要执行 git commit 来记录这个新文件的添加操作。

综上所述

  • git rm 是 Git 提供的用于删除文件的命令,将删除操作记录在 Git 的提交历史中。
  • rm 是操作系统的命令,只是简单地从文件系统中删除文件。git add 用于将被删除的文件添加到暂存区,
    注:先rm文件,然后使用git rm git add效果是一样的。

git remote

git remote 是一个用于管理远程仓库的 Git 命令。它用于查看、添加、重命名或删除与你的本地仓库相关联的远程仓库。

常用的参数及其详解

git remote:查看当前本地仓库关联的所有远程仓库的名称。
git remote -v:以详细模式查看当前本地仓库关联的所有远程仓库,包括它们的 URL。
git remote add :添加一个新的远程仓库。使用指定的名称和 URL 将一个远程仓库与你的本地仓库关联起来。

git remote add origin [email protected]:vvd/vvd.git

上述将一个名为 “origin” 的远程仓库与你的本地仓库关联起来
git remote add 是一个 Git 命令,用于添加一个新的远程仓库。
origin 是这个远程仓库的名称,它可以是任何合法的字符串,通常用于表示主要的远程仓库。
[email protected] 是远程仓库的地址,这里使用的是 SSH 协议。
vvd/vvd.git 是远程仓库的路径,表示应该关联的远程仓库是 GitHub 上的 vvd/vvd.git 仓库。
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

git remote rename :将一个已存在的远程仓库重命名。
git remote remove 或 git remote rm :移除本地仓库与指定名称的远程仓库之间的关联。
git remote set-url :修改一个远程仓库的 URL。
git remote show :查看指定远程仓库的详细信息,包括它的 URL 和与之相关联的分支。
git remote prune :删除本地已经不存在的远程分支与指定远程仓库的关联。

多分支切换代码融合

git checkout -b dev # 新建 dev 分支并将HEAD指向dev
git checkout dev # HEAD切换到已经创建的dev分支上
git branch # 查看当前分支 当前分支前面会标一个*号
git merge dev # 将dev分支merge 到当前分支上
git branch -d dev # 删除 dev 分支

最新版本的Git提供了新的git switch命令来切换分支,这里的切换分支 checkout 可用 switch 命令替换

git switch

git switch 是 Git 2.23 版本引入的命令,用于在不同的分支或提交之间切换。

常用的参数及其详解

git switch :切换到指定的分支。
git switch -c 或 git switch --create :创建并切换到一个新的分支。并将当前分支的更改合并到新分支
git switch -b :创建并切换到一个新的分支。
git switch - 或 git switch --:切换回上一次所在的分支。
git switch :切换到指定的提交,创建一个分离头指针(detached HEAD)状态,这意味着不会自动创建新的分支,而是直接切换到指定提交。
git switch --track :创建并切换到与指定远程分支关联的本地分支。
git switch --detach:切换到分离头指针(detached HEAD)状态,即不在任何分支上工作。
切换分支或提交时,git switch 会自动更新工作区以反映目标分支或提交的内容。切换分支时会保留当前分支的修改,并将其应用到新分支上(如果可能)。

git checkout -b devgit switch -b devgit switch -c dev 是在 Git 中创建并切换到一个新分支的命令。

  • git checkout -b dev:这是 Git 旧版本中用于创建并切换到新分支的命令。它会创建一个名为 “dev” 的新分支,并将 HEAD(当前活动分支的引用)切换到该新分支。这个命令可以在 Git 的任何版本中使用,包括较新的版本。
  • git switch -b dev:这是在 Git 2.23 版本中引入的新命令,用于创建并切换到新分支。它的作用与 git checkout -b dev 相同,都是创建名为 “dev” 的新分支并切换到该分支。git switch -b dev 是为了替代旧版本的 git checkout -b dev 的方式,使得分支操作的语义更加直观和清晰。
  • git switch -c dev:这也是在 Git 2.23 版本中引入的新命令,用于创建并切换到新分支,与 git switch -b dev 类似。使用 git switch -c dev 时,Git 会将当前分支(如果存在)与新分支的内容合并到工作区,然后创建名为 “dev” 的新分支,并将 HEAD 切换到该分支上。

总结来说:

  • git checkout -b dev 是旧版本中的创建并切换到新分支的命令,适用于任何 Git 版本。
  • git switch -b dev 是新版本中引入的创建并切换到新分支的命令,语义更加清晰和直观。
  • git switch -c dev 是新版本中引入的创建并切换到新分支的命令,它会将当前分支的更改合并到新分支,适用于需要保留当前分支修改的情况。

git branch

git branch 是用于管理 Git 分支的命令。它可以列出、创建、删除和重命名分支,以及查看分支的合并情况和最后一次提交信息。通过这个命令,你可以更轻松地进行分支的管理和操作。

常用的参数及其详解

git branch:列出所有本地分支。在分支前面加一个星号 * 的是当前所在的分支。
git branch :创建一个新的分支。
git branch -d :删除指定的分支。要求分支已被合并到其他分支。
git branch -D :强制删除指定的分支,即使分支尚未合并。
git branch -m :重命名当前分支。
git branch -a:列出所有本地分支和远程跟踪分支。
git branch -v:显示每个分支的最后一次提交信息。
git branch --merged:列出已经合并到当前分支的分支。
git branch --no-merged:列出尚未合并到当前分支的分支。
git branch -r:查看远程仓库的分支。
git branch --set-upstream-to=origin/ :设置本地分支与远程分支的跟踪关系。当在本地分支 dev 上执行 git pull 或 git push 命令时,Git 会自动将本地分支与远程分支进行关联,并根据需要进行代码拉取或推送操作。

git checkout -b devgit branch dev 后 git checkout dev 都是用于创建并切换到一个名为 “dev” 的新分支,但它们的操作顺序和效果略有不同。

  • git checkout -b dev: 这个命令是一个合并了两个步骤的快捷方式。它会创建一个名为 “dev” 的新分支,并切换到该分支。相当于以下两个命令的组合:
    git branch dev
    git checkout dev
    使用快捷方式 git checkout -b dev 可以在一条命令中完成这两个操作。这个命令在创建新分支时,会将当前所在分支的内容完全复制到新分支。

两种方式最终都会在本地仓库中创建一个名为 “dev” 的新分支,并将工作区切换到新分支上。不同之处在于 git checkout -b dev 是一个原子操作,将创建分支和切换分支合并为一条命令,而 git branch dev 和 git checkout dev 是分开执行的。
无论使用哪种方式,最终的结果都是创建了一个名为 “dev” 的新分支,并将工作区切换到该分支上,可以在新分支中进行后续的开发工作。

git merge

git merge 是 Git 的一个命令,用于合并分支的更改。
合并是将不同的分支上的更改结合到一起的过程。git merge 命令允许你在 Git 中执行合并操作。以下是一些常用用法和选项:

常用的参数及其详解

git merge :将指定分支 的更改合并到当前所在的分支。
git merge --no-ff :使用非快进合并模式将分支 的更改合并到当前分支。这将创建一个新的合并提交,即使合并是快进合并也是如此。
git merge --squash :将分支 的更改合并到当前分支,但是将合并提交压缩为单个提交。这样可以避免历史记录中出现过多的合并提交。
git merge --abort:如果合并过程中遇到冲突或问题,可以使用该命令中止合并操作并恢复到合并前的状态。

注:在执行 git merge 命令时,Git 会尝试将指定分支 的更改应用到当前分支。这可能会导致三种情况:

  • 快进合并(Fast-forward merge):如果当前分支的提交历史中没有新增的提交,Git 可以直接将当前分支指向指定分支的最新提交。这种情况下,Git 会简单地将当前分支更新到指定分支的最新状态。
  • 自动合并(Automatic merge):如果当前分支和指定分支之间有共同的祖先,但是有不同的更改,Git 将尝试自动合并这些更改。如果合并过程中没有冲突,Git 会创建一个新的合并提交,并将当前分支更新到合并之后的状态。
  • 冲突合并(Merge conflict):如果当前分支和指定分支之间有不同的更改并且无法自动合并,Git 将产生合并冲突。在这种情况下,你需要手动解决冲突,编辑文件以解决冲突并标记为已解决后,再提交合并结果。

git cherry-pick

git cherry-pick 复制一个特定的提交到当前分支,它会将指定的提交复制到当前所在的分支中,并创建一个新的提交。

注:如果在应用提交的过程中遇到冲突,需要手动解决冲突,并通过 git add 命令将解决后的文件标记为已解决,最后要通过 git cherry-pick --continue 命令完成 cherry-pick 操作。

常用的参数及其详解

git cherry-pick -e--edit:生成新提交前,允许编辑提交信息。
git cherry-pick -n--no-commit:只应用提交的更改,不自动生成新的提交。这样可以将多个提交的更改合并成一个提交。
git cherry-pick -x--signoff:在生成新提交时自动添加「Signed-off-by」行。
git cherry-pick -s--strategy:指定应用差异的合并策略。

暂存

git stash # 暂存当前分支下未提交的内容
git stash list # 查看当前分支下暂存的信息
git stash apply # 恢复暂存的内容 但不删暂存信息
git stash drop # 删除暂存信息
git stash pop # 弹出暂存内容, 即恢复暂存内容后删暂存信息 

你可能感兴趣的:(git,git,学习)