石家庄网站建设策略,百度下载安装到手机,郑州注册公司流程,淘宝这种网站怎么做的git详细教程 区域划分单分支操作git log语法常用的参数及其详解git log 结果 git refloggit diff常用的参数及其详解 git reset常用的参数及其详解 git checkoutgit rm常用的参数及其详解 git remote常用的参数及其详解 多分支切换代码融合git switch常用的参数及其详解 git br… git详细教程 区域划分单分支操作git log语法常用的参数及其详解git log 结果 git refloggit diff常用的参数及其详解 git reset常用的参数及其详解 git checkoutgit 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 gitgithub.com: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...]以下是命令中各个部分的说明 options用于控制 git log 命令的输出方式和内容的选项。例如 --oneline、--graph 等。 revision range可选参数用于指定查看哪些提交的范围。例如分支名称、提交哈希值、标签名称等。如果未指定范围则默认为当前分支的所有提交。 --可选参数用于隔离路径参数。如果指定了path参数则 git log 将只显示与指定路径相关的提交。 path可选参数用于指定与路径相关的提交。只显示与指定路径相关的提交。
常用的参数及其详解
--oneline: 以紧凑的格式显示每个提交的简略信息只显示提交的哈希值和提交消息。 --prettyoneline: 同上区别是显示的提交哈希值为完整信息 --graph: 在提交历史的左侧显示 ASCII 字符以形成图形表示展示分支和合并的情况。 --authorauthor: 按照作者筛选提交记录只显示指定作者的提交历史。 --sincedate: 只显示指定日期以后的提交记录。 --untildate: 只显示指定日期之前的提交记录。 --greppattern: 按照指定的模式匹配提交消息只显示匹配的提交记录。 --follow: 如果指定的文件在提交过程中被重命名或移动继续显示它们的历史。 --stat: 显示每个提交的简略统计信息包括修改的文件和插入/删除的行数。 --patch: 显示每个提交的详细差异信息包括修改的文件和修改内容的具体行。 --decorate: 在提交历史中显示分支和标签的名称。 --abbrev-commit: 使用较短的提交哈希值显示提交记录。 --prettyformat指定自定义的输出格式。例如
git log --prettyformat:%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 logcommit d87f4c26a6f2a682e8e029d209a5e7b48330c60e (HEAD - main, origin/main origin/HEAD)
Author: John Smith johnexample.com
Date: Mon Sep 18 13:47:21 2023 0300Added new feature: login functionalitycommit 0b427baffe75d4e24e690a88821982a4f19a5e79 (origin/develop)
Author: Jane Doe janeexample.com
Date: Fri Sep 15 09:22:47 2023 0300Fixed bug in registration form validationcommit 0b427baffe75d4e24e690a88821982a4f19a5e79
Merge: 346f84a c1bf48e
Author: John Smith johnexample.com
Date: Fri Sep 20 10:15:52 2023 0300Merge branch feature/login into mainResolved conflicts and added login featureCommit c1bf48e fixed bug in navigation menuCommit 346f84a added new feature: search functionality示例中每个提交记录都有以下主要部分 提交哈希值commit hash: commit d87f4c26a6f2a682e8e029d209a5e7b48330c60e 它是用于唯一标识提交记录的字符串可以用来在 Git 中引用这个提交。 作者Author: Author: John Smith johnexample.com 显示了提交者的姓名和邮箱地址。 提交日期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 commit commit逐一比较两个提交之间的文件差异显示每个文件的具体变化。 git diff commit..commit比较两个提交之间的提交范围与工作区的差异以统计信息的方式显示差异情况。 git diff branch..branch比较两个分支之间的差异。 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~n 可以撤销最近的 个提交。 在Git中用HEAD表示当前版本也就是最新的提交哈希值上一个版本就是HEAD^ 上上一个版本就是HEAD^^ 当然往上100个版本写100个^比较容易数不过来所以写成HEAD~100。
git reset HEAD^
git reset HEAD~2git reset HEAD readme.txt 和 git 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 commit 可以将当前分支指针移动到指定的 commit并将之后的提交丢弃。该操作会修改版本历史慎用。常见的选项有
常用的参数及其详解
--soft: 仅移动分支指针保留修改和暂存区的内容。此时可以使用 git commit 重新提交。 --mixed (默认选项): 仅移动分支指针保留修改和暂存区的内容。此时可以使用 git add 和 git commit 重新处理更改。 --hard: 这个选项是最彻底的选项它会完全删除指定提交及其之后的所有提交移动分支指针重置暂存区和工作区丢弃修改。使用该选项需要谨慎因为它会永久删除你的更改无法恢复。
git reset d87f4c26a6f2a682e8e029d209a5e7b48330c60e注意: Git必须知道要将指针打到哪个版本上 用git log可以查看提交历史以便确定要回退到哪个版本。要重返意外回退的版本用git reflog查看命令历史以便确定要回到之前意外回退的哪个版本。 git checkout
git checkout 是一个在 Git 中用于切换分支、恢复文件和检出提交的命令。
恢复文件git checkout -- file 撤销在工作区中被修改但尚未被添加到暂存区的内容将其恢复到最近一次提交的状态。这对于丢弃未保存的更改或修复错误修改很有用。例如运行 git checkout – myfile.txt 将撤销对 “myfile.txt” 文件的修改。
git checkout -- readme.txt切换分支git checkout branch 可用于切换到指定的分支。将使你的工作区和版本库中的文件变为该分支的最新状态。
git checkout feature #切换到名为 “feature” 的分支创建并切换分支git checkout -b branch 可用于创建一个新的分支并立即切换到该分支。
git checkout -b feature # 创建并切换到名为 “feature” 的新分支检出提交git checkout commit 可用于将工作区和版本库状态恢复到指定提交的状态。这会导致分离头指针detached HEAD在这种模式下你不会处于任何分支上所以任何提交将会导致一个匿名分支。使用 git checkout 需要指定提交的哈希值或引用名。例如git checkout HEAD~2 将使工作区和版本库恢复到倒数第二次提交的状态。 git checkout HEAD~2 和 git reset HEAD~2 在功能上有所不同 git checkout HEAD~2这个命令会将分支指针移动到前两个提交之前的位置并切换到该提交状态。在执行完这个命令后你将进入“分离头指针”状态即不再位于任何分支上。工作区和暂存区将被重置为该提交的内容。这意味着你将丢失当前分支上未提交的更改并且切换到的那个提交的内容将成为工作区和暂存区的内容。git reset HEAD~2这个命令会将分支指针移动到前两个提交之前的位置并重置暂存区为该位置的内容但保留工作区的修改。这意味着你可以保留当前分支上未提交的更改并将它们保留在工作区中。暂存区则被重置为之前的状态即丢弃了最近的两个提交带来的修改。这个命令通常用于撤销之前的提交或重新组织提交历史。 所以这两个命令的区别在于 git checkout HEAD~2 会切换到指定提交状态并重置工作区和暂存区丢失未提交的更改。git reset HEAD~2 会将分支指针移动到指定提交之前的位置重置暂存区但保留工作区的修改保留未提交的更改。 还原某文件的特定版本git checkout commit -- file 将commit替换为目标版本的提交标识符或引用名并将 替换为要还原的文件的路径和名称。例如要将某个文件 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.txt 和 rm 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 addrm readme.txt 是操作系统的命令它只是简单地从文件系统中删除了 “readme.txt” 文件而不涉及 Git。 如果在删除文件后执行 git add readme.txtGit 会将这个已删除的文件添加到暂存区。这意味着 Git 认为这是一个新的文件并准备将其包含在下一次提交中。 在执行完 git add 后你还需要执行 git commit 来记录这个新文件的添加操作。 综上所述 git rm 是 Git 提供的用于删除文件的命令将删除操作记录在 Git 的提交历史中。rm 是操作系统的命令只是简单地从文件系统中删除文件。git add 用于将被删除的文件添加到暂存区 注先rm文件然后使用git rm file和git addfile效果是一样的。 git remote
git remote 是一个用于管理远程仓库的 Git 命令。它用于查看、添加、重命名或删除与你的本地仓库相关联的远程仓库。
常用的参数及其详解
git remote查看当前本地仓库关联的所有远程仓库的名称。 git remote -v以详细模式查看当前本地仓库关联的所有远程仓库包括它们的 URL。 git remote add name url添加一个新的远程仓库。使用指定的名称和 URL 将一个远程仓库与你的本地仓库关联起来。
git remote add origin gitgithub.com:vvd/vvd.git上述将一个名为 “origin” 的远程仓库与你的本地仓库关联起来 git remote add 是一个 Git 命令用于添加一个新的远程仓库。 origin 是这个远程仓库的名称它可以是任何合法的字符串通常用于表示主要的远程仓库。 gitgithub.com 是远程仓库的地址这里使用的是 SSH 协议。 vvd/vvd.git 是远程仓库的路径表示应该关联的远程仓库是 GitHub 上的 vvd/vvd.git 仓库。 添加后远程库的名字就是origin这是Git默认的叫法也可以改成别的但是origin这个名字一看就知道是远程库。 git remote rename old-name new-name将一个已存在的远程仓库重命名。 git remote remove name 或 git remote rm name移除本地仓库与指定名称的远程仓库之间的关联。 git remote set-url name new-url修改一个远程仓库的 URL。 git remote show name查看指定远程仓库的详细信息包括它的 URL 和与之相关联的分支。 git remote prune name删除本地已经不存在的远程分支与指定远程仓库的关联。
多分支切换代码融合
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 branch切换到指定的分支。 git switch -c branch 或 git switch --create branch创建并切换到一个新的分支。并将当前分支的更改合并到新分支 git switch -b branch创建并切换到一个新的分支。 git switch - 或 git switch --切换回上一次所在的分支。 git switch commit切换到指定的提交创建一个分离头指针detached HEAD状态这意味着不会自动创建新的分支而是直接切换到指定提交。 git switch --track remote-branch创建并切换到与指定远程分支关联的本地分支。 git switch --detach切换到分离头指针detached HEAD状态即不在任何分支上工作。 切换分支或提交时git switch 会自动更新工作区以反映目标分支或提交的内容。切换分支时会保留当前分支的修改并将其应用到新分支上如果可能。 git checkout -b dev、git switch -b dev 和 git 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 branch创建一个新的分支。 git branch -d branch删除指定的分支。要求分支已被合并到其他分支。 git branch -D branch强制删除指定的分支即使分支尚未合并。 git branch -m branch重命名当前分支。 git branch -a列出所有本地分支和远程跟踪分支。 git branch -v显示每个分支的最后一次提交信息。 git branch --merged列出已经合并到当前分支的分支。 git branch --no-merged列出尚未合并到当前分支的分支。 git branch -r查看远程仓库的分支。 git branch --set-upstream-toorigin/branch-name branch-name 设置本地分支与远程分支的跟踪关系。当在本地分支 dev 上执行 git pull 或 git push 命令时Git 会自动将本地分支与远程分支进行关联并根据需要进行代码拉取或推送操作。 git checkout -b dev 和 git 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 branch将指定分支 branch 的更改合并到当前所在的分支。 git merge --no-ff branch使用非快进合并模式将分支 branch 的更改合并到当前分支。这将创建一个新的合并提交即使合并是快进合并也是如此。 git merge --squash branch将分支 branch 的更改合并到当前分支但是将合并提交压缩为单个提交。这样可以避免历史记录中出现过多的合并提交。 git merge --abort如果合并过程中遇到冲突或问题可以使用该命令中止合并操作并恢复到合并前的状态。 注在执行 git merge branch 命令时Git 会尝试将指定分支 branch 的更改应用到当前分支。这可能会导致三种情况 快进合并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 # 弹出暂存内容, 即恢复暂存内容后删暂存信息