概述
为什么选择git?
Git 是一个强大、灵活且高效的版本控制体系,被广泛用于软件开辟和其他领域,是开辟者不可或缺的工具之一
为什么选择git?
- 版本控制: Git 提供了强大的版本控制功能,可以追踪文件的每一次修改,记录项目的演变历史。这使得开辟者可以随时回滚到之前的版本,比力不同版本之间的差别,以及分析项目的发展轨迹。
- 分布式开辟: Git 是一种分布式版本控制体系,每个开辟者都可以在本地拥有完整的项目副本,不依靠于中央服务器。如许可以在离线状态下举行工作,并允许灵活的分支管理和归并。
- 协同工作: Git 提供了强大的协同工作机制,多人可以同时在一个项目上工作,而不会干扰相互的修改。分支归并、冲突办理等功能使得团队协作更加高效。
- 灵活的分支管理: Git 的分支管理是其刚强之一,开辟者可以轻松创建、归并、删除分支,实现不同功能的并行开辟,而不会影响主干代码。
- 长途仓库: Git 支持将代码托管到长途仓库,如 GitHub、GitLab、Bitbucket 等平台。这使得团队可以或许长途协作、分享代码,同时享受到版本控制和备份的利益。
版本控制工具
a、集中式版本控制工具
集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代码,是必须联网才华工作,局域网或互联网。个人修改后然后提交到中央版本库。
举例:SVN和CVS
b、分布式版本控制工具
分布式版本控制体系没有“中央服务器”,每个人的电脑上都是一个完整的版本库,如许工作的时间,无须要联网了,由于版本库就在你自己的电脑上。多人协作只须要各自的修改推送给对方,就能相互看到对方的修改了。
举例:Git
根本设置
- git config --global user.name “zhangsan”
- git config --global user.email "123456@qq.com"
复制代码
- git config --global user.name
- git config --global user.email
复制代码
$ git config --local 只对单个仓库有效
$ git config --global 对当前所有仓库有效(常用)
$ git config --system 对体系所有登录用户有效
创建Git仓库
场景一
已有项目纳入git管理
- $ cd 项目代码所在文件夹`
- $ git init
复制代码 场景二
新建项目用git管理
- $ cd 某个文件夹`
- $ git init your_project
- $ cd your_project
复制代码 基础操作
仓库管理
利用 git add 将修改的文件添加到暂存区。
利用 git commit 将暂存区的内容提交到本地库。
- git add (工作区 --> 暂存区)
- git commit (暂存区 --> 本地仓库)
git commit -am 下令用于提交所有已经被Git管理的文件,同时添加了提交消息。相当于分别执行了git add .和git commit -m "message"两个步调。
-am 选项只会提交已经被 Git 管理的文件,对于未被 Git 管理的新文件,你须要手动利用 git add 将它们添加到暂存区。
作用:查看的修改的状态(暂存区、工作区)
下令情势:git status
作用:添加工作区一个或多个文件的修改到暂存区
下令情势:git add 单个文件名|通配符
将所有修改参加暂存区:git add .
作用:提交暂存区内容到本地仓库的当前分支
下令情势:git commit -m '解释内容'
作用:查看提交记录
下令情势:git log [option]
–all 显示所有分支
–pretty=oneline 将提交信息显示为一行
–abbrev-commit 使得输出的commitId更简短
–graph 以图的情势显示
作用:版本切换
下令情势:git reset --hard commitID
commitID 可以利用 git-log 或 git log 指令查看
git reflog
这将显示一个列表,其中包含了本地仓库近来的操作历史,包括提交、分支切换等。每个操作都有一个对应的 HEAD 指针位置和一个唯一的哈希值。
如果你须要查找丢失的提交或还原已删除的分支,可以利用 git reflog 找到相应的哈希值,然后利用其他 Git 下令举行操作,比如:
- # 恢复到指定的哈希值
- git reset --hard <commit-hash>
- # 创建分支并切换到指定的哈希值
- git checkout -b <new-branch> <commit-hash>
复制代码
作用:执行 git commit --amend 将会打开文本编辑器(通常是你设置的默认编辑器),让你修改近来一次的提交信息。你可以修改提交信息并保存退出编辑器,Git 将会更新近来的提交,并利用你修改后的提交信息。
下令情势:git commit --amend
- git rebase
交互式rebase (interactive rebase)是 Git 中一个非常强大的工具,它允许你以交互方式重新排列、编辑和归并提交记录。通过交互式rebase,你可以轻松地从一系列提交记录中选择特定的提交,并将它们重排或者归并到目标分支上。
下面是利用交互式 rebase 的一样平常步调:
这里的<commit>是你希望从哪个提交开始举行rebase的提交的哈希值或者引用。如果你想从当前分支的HEAD开始,可以省略这个参数。
- Git 会打开一个文本编辑器,显示一个提交记录列表,类似于下面如许:
- pick abc123 Commit message 1
- pick def456 Commit message 2
- pick hij789 Commit message 3
复制代码 每一行都以 pick 开头,背面跟着提交的哈希值和提交信息。
- 在编辑器中,你可以修改这个列表以达到你的目的。你可以:
- 将pick修改为edit,如许会在应用到这个提交时暂停rebase进程,让你有机会修改提交的内容或者重新提交。
- 将pick修改为squash或者fixup,如许会将当条件交归并到前一个提交中,或者将当条件交归并到前一个提交并抛弃提交信息。
- 删除某些提交记录,以跳过它们。
- 调解提交记录的顺序。
- pick:保留该提交,不做修改。
- reword:保留该提交,并修改提交消息。
- edit:保留该提交,并让你修改提交的内容。
- squash:将该提交与前一个提交归并。
- fixup:将该提交与前一个提交归并,但忽略该提交的提交消息。
- drop:删除该提交。
- 修改完毕后,保存并退出编辑器,Git 将会按照你的指示重播提交记录。当 rebase UI界面打开时, 你能做3件事:
- 调解提交记录的顺序
- 删除你不想要的提交
- 归并提交,允许你把多个提交记录归并成一个。
- 整理提交记录
git cherry-pick 下令用于将指定提交的更改应用到当前分支的位置上。它的语法是:
- git cherry-pick <commit-hash>...
复制代码 <commit-hash>是要应用的提交的哈希值。
利用git cherry-pick可以很方便地将其他分支上的单个或多个提交应用到当前分支上,而无需将整个分支归并过来。这在须要单独引入特定变更而不影响其他变更时非常有用
利用 git diff
下令可以比力工作区中的修改和暂存区中的内容之间的差别。比方:
这将显示工作区中未暂存的修改。
利用 git diff
--staged下令可以比力暂存区中的修改和最新提交(HEAD)之间的差别。比方:
这将显示暂存区中即将提交的内容和最新提交之间的差别。
可以联合利用git diff
和 HEAD参数来比力工作区和最新提交(HEAD)之间的差别。比方:
分支管理
利用分支意味着你把工作从开辟主线上分脱离来举行庞大的Bug修改、开辟新的功能,以免影响开辟主线。
HEAD指向分支,分支指向版本号
创建本地分支
下令:git branch 分支名
下令:git branch -v
下令:git checkout 分支名
下令:git checkout -b 分支名
一个分支上的提交可以归并到另一个分支
下令:git merge
把指定的分支(分支名称)上的修改归并到当前所在的分支
Fast-Forward归并:
如果要归并的两个分支之间没有分叉(即一个分支是另一个的直接后继),Git 可以通过简单地移动指针来完成归并,这种情况称为 Fast-Forward 归并。在这种情况下,归并后的提交历史形成一条直线,没有额外的归并提交。这种归并非常快速和简单,不会产生额外的提交。
平凡归并:
如果要归并的两个分支之间有分叉,Git 就须要创建一个新的归并提交来将两个分支的历史归并在一起。在这种情况下,Git 会自动创建一个新的归并提交,将两个分支的历史整合在一起。归并提交包含了两个分支最后一个共同提交的内容,以及之后的各自的提交。
不能删除当前分支,只能删除其他分支
git branch -d b1删除分支时,须要做各种查抄
git branch -D b1不做任何查抄,强制删除
- 强制修改分支位置
下令:git branch -f
用于强制移动一个分支的指针到另一个提交上。:
- git branch -f <branchname> <commit>
复制代码 <branchname> 是你想要移动的分支的名称。
<commit> 是你想要将分支移动到的目标提交的引用,可以是提交的哈希值、分支名或相对引用。
撤销变更指的是将之前的代码更改回滚到之前的状态,使得代码库恢复到之前的版本或状态。
git reset:用来移动当前分支的指针位置,并且可以选择是否同时修改暂存区和工作目次。
有三种模式可以用于git reset下令:--soft、--mixed 和 --hard。
--soft 模式只会移动分支指针,不会修改暂存区和工作目次,这意味着变更仍然保留在暂存区和工作目次中,你可以重新提交它们。
--mixed 模式会移动分支指针,并且将变更从暂存区撤销到工作目次中,但不会删除工作目次中的变更。
--hard 模式会移动分支指针,并且将暂存区和工作目次中的变更全部删除,慎用,由于它会永久性地抛弃变更。
在reset后,所做的变更还在,但是处于未参加暂存区状态
git revert:
用于创建一个新的提交,该提交的内容是指定提交的相反变更。换句话说,它会撤销某次提交的变更,但是会保留该提交的历史记录。git revert 下令会创建一个新的提交,该提交的内容与指定提交的相反。如许做的利益是可以保留提交历史,克制破坏代码库的完整性。
通过这种方式,其他开辟者可以从长途分支获取到撤销提交,并将其应用到自己的分支中,从而保持代码库的一致性,克制造成杂乱和不须要的冲突。
- # 创建一个新分支以防止直接在主分支上进行实验
- git checkout -b fix-bug
- # 使用 git revert 撤销之前的提交变更
- git revert <commit-hash>
- # 提交撤销更改
- git commit -m "Revert previous commit"
- # 将撤销更改推送到远程分支
- git push origin fix-bug
复制代码
Git 提供了一种称为标签(Tags)的功能,可以用来永久性地标识某个特定的提交。标签是指向某个特定提交的指针,它们不会随着新的提交而移动,因此非常适合用来标识软件发布的版本、修复紧张的 Bug 或者添加新特性等紧张的提交。
利用标签可以确保你可以在任何时间轻松地回到标记的提交状态,而不必担心它会移动或被覆盖。这对于软件发布非常有用,由于你可以在发布软件的同时创建一个标签,以便随时可以通过标签回到该版本。
可以利用 git tag 下令来创建一个新的标签,并指定要标记的提交。比方:
这将创建一个名为 v1.0 的标签,并将其指向指定的提交。你也可以利用 -a 选项来创建一个带解释的标签,以便记录标签的相关信息。
- git tag -a v1.0 -m "Release version 1.0" <commit>
复制代码 创建标签后,你可以利用git show <tag>下令来查看标签的信息,以及标签所指向的提交。
git describe
专门设用来形貌离你近来的锚点的下令(也就是标签)
git describe 的语法是:
git describe <ref>
<ref> 可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会利用你现在所在的位置(HEAD)
它输出的效果是
<tag>_<numCommits>_g<hash>
tag表示的是离ref近来的标签,numCommits是表示这个ref与tag相差有多少个提交记录,hash表示的是你所给定的ref所表示的提交记录哈希值的前几位。
当 ref 提交记录上有某个标签时,则只输出标签名称
$ git mv readme readme.md
等同于三个步调
- $ mv readme readme.md # 在文件系统中重命名文件
- $ git add readme.md # 将重命名后的文件添加到 Git 暂存区
- $ git commit -m "Rename readme to readme.md"
复制代码
$ git log --oneline简便
$ git log -n4 看所有分支近来四次
$ git log --graph 图形化
$ gitk
.git目次
目次内容
- branches: 包含本地分支的信息。
- hooks: 包含客户端和服务器端的钩子脚本。这些脚本允许你在特定的 Git 事件发生时执行自定义操作。
- info: 包含一个全局的清除文件,用于指定哪些文件不应被纳入版本控制。
- objects: 包含所有的 Git 对象(提交、树、Blob 等)。
- **refs :**存储引用(分支、标签等)的目次。
- config: 存储仓库的设置信息,如用户信息、别名等。
- HEAD: 指向当前所在分支的引用。
- index: 存储暂存区的内容,包括文件路径、SHA-1 哈希值等信息。
- logs: 包含引用的历史信息。
- COMMIT_EDITMSG: 存储上一次提交的提交消息。
- FETCH_HEAD: 包含近来的长途获取操作的信息。
以下是一些查看文件夹内容须要利用的相关指令
显示文件内容:
显示指定对象的范例:
- git cat-file -t <object-id>
复制代码 其中 <object-id> 是对象的哈希值或引用(分支、标签等)。执行这个下令将显示指定对象的范例。
输出对象的范例,可能是 commit、tree(树对象)、blob(文件对象)等。
- -t: 显示对象的范例。
- -s: 显示对象的大小。
- -p: 显示对象的内容。
HEAD
HEAD 指针: HEAD 是一个特殊的指针,它总是指向当前所在的本地分支的最新提交。如果你处于某个分支上,HEAD 就会指向这个分支。
进入.git目次打开head
切换分支后
refs
在Git中,refs目次是用于存储引用(references)的地方。引用是指指向Git对象的指针,常用于表示分支、标签等。refs目次中包含了几个子目次,每个子目次都用于存储特定范例的引用。
以下是refs目次中常见的子目次:
- heads:这个子目次存储着本地分支的引用。每个文件代表一个分支,文件名就是分支的名称,文件内容是指向该分支最新提交的SHA-1值。比方,refs/heads/master文件存储着master分支的引用。
- tags:这个子目次存储着标签(tag)的引用。每个文件代表一个标签,文件名就是标签的名称,文件内容是指向该标签所指向的提交对象的SHA-1值。比方,refs/tags/v1.0文件存储着v1.0标签的引用。
- remotes:这个子目次存储着长途跟踪分支的引用。每个文件代表一个长途跟踪分支,文件名通常由长途仓库名和分支名组成,文件内容是指向该分支最新提交的SHA-1值。比方,refs/remotes/origin/master文件存储着origin仓库的master分支的引用。
- stash:这个文件存储着stash的引用。Stash是用于保存工作目次和暂存区的临时状态的功能。refs/stash文件存储着stash栈顶的引用。
这些目次和文件构成了Git中引用的存储结构,它们资助Git管理分支、标签、长途仓库和stash等紧张信息。
objects
objects 目次中包含以下子目次:
- info:这个子目次存储一些额外的信息,比如 Git 仓库的一些设置信息。
- pack:在 Git 中,当有很多松散的对象须要存储时,Git 会将这些对象打包成一个或多个 pack 文件,然后存储在这个子目次下。
- 哈希命名的对象目次:这些目次是 Git 对象的现实存储位置,它们的名称是根据对象的哈希值计算而来的。比方,一个对象的哈希值为 abcd1234,那么它就会被存储在名为 ab 的子目次下,并且以 cd1234 作为文件名存储在其中。
在这些哈希命名的对象目次中,现实上存储了 Git 的四种根本对象范例:blob、tree、commit 和 tag。每个对象都是通过哈希算法计算出来的哈希值来命名和索引的。
文件名(2位字符)加上文件内储存的38位字符组成40个字符的十六进制字符串
利用 git cat-file -t <object-id>
可以得出其范例
利用 git cat-file -p <object-id>打开其内容,发现blob范例文件
tips:Git 中的对象存储机制是基于内容的哈希值来决定对象的唯一性的,它们的 Blob 对象的哈希值也会类似,从而大大节流了存储空间。笔者的file02, file03, file04, file05都为空,文件内容类似,因此哈希值类似,这种机制使得 Git 在存储和比力文件时非常高效。
git根本对象范例
在 Git 中,有四种根本对象范例,它们之间有一定的关系,构成了 Git 的对象模子。这四种对象范例分别是:
- blob(文件内容对象): Blob 对象存储了文件的内容。每个文件对应一个唯一的 blob 对象,通过文件内容的 SHA-1 哈希值来唯一标识。
- tree(目次结构对象): Tree 对象存储了目次结构和文件与对应 blob 对象之间的映射关系。它包含了一组文件名、文件范例(blob 或 subtree)、以及与之关联的 blob 对象或 subtree 对象的 SHA-1 哈希值。
- commit(提交对象): Commit 对象存储了一次提交的信息,包括作者、提交时间、提交阐明以及指向一个树对象的引用。每个提交指向一个特定的树对象,表示该次提交的项目状态。
- tag(标签对象): Tag 对象存储了一个标签的信息,通常用于给某个提交打上一个有意义的标签。标签对象包含了标签名称、标签引用的对象(通常是一个 commit 对象)等信息。
- Commit 对象与 Tree 对象的关系: 每个 commit 对象都指向一个 tree 对象,表示该次提交的项目状态。
- Tree 对象与 Blob 对象的关系: 每个 tree 对象包含了一组文件名和对应的 blob 对象的 SHA-1 哈希值,表示文件和目次的结构。
Tree 对象代表目次结构,每个节点可以指向一个 Blob 对象(文件)或另一个 Tree 对象(子目次),以此类推,形成了文件和目次之间的层级关系。
快照是什么?
快照(snapshot)通常是指对整个项目状态的一次完整拍摄,包括所有文件和目次的当前状态。与传统的版本控制体系不同,Git 不仅仅记录每个文件的更改差别,而是创建了整个项目在某个时间点的快照。
分离头指针
“分离头指针”是指将HEAD指向一个特定的提交(commit),而不是指向分支的末端。这通常发生在你切换到一个特定的提交时,而不是切换到一个分支上。这种情况下,HEAD指针就会“分离”,由于它没有指向任何分支,而是直接指向一个提交。这可能会导致一些问题,由于你在分离头指针状态下举行的提交不会更新任何分支,而是直接在当条件交的基础上举行。
如果你不小心进入了分离头指针状态,想要回到一个分支上,可以简单地通过切换到想要的分支来办理:
- git checkout <branch_name>
复制代码 或者,如果你想在当前分离头指针状态下创建一个新的分支,可以利用以下下令:
- git checkout -b <new_branch_name>
复制代码 如许就会创建一个新的分支,并将其指向当前所在的提交。
分离头指针有时间是有用的,比如你想要查看或测试一个特定的提交,而不想在其基础上创建新的提交。但在大多数情况下,最好照旧在一个具有明确名称的分支上举行工作,以克制肴杂和不须要的麻烦。
GIT团队协作
团队内协作
分支管理
在团队内协作中,分支管理是一个关键的方面。每个团队成员可以在本地创建自己的分支举行开辟,而不影响主分支。一样平常而言,主分支(通常是 main 或 master)应该保持稳固且用于发布生产版本。团队成员可以在各自的分支上举行开辟,然后通过归并哀求(Pull Request)将自己的修改归并到主分支。
团队协作流程
- 拉取最新代码: 在开始工作之前,确保本地代码库是最新的。
- 创建新分支: 为了开辟新功能或修复问题,创建一个新的分支。
- git checkout -b feature-branch
复制代码 - 举行开辟: 在新分支上举行开辟工作,举行一系列的提交。
- git commit -m "feat: 新功能"
复制代码 - 同步主分支: 定期将主分支的最新代码归并到当前分支,以保持同步。
- 办理冲突: 如果在归并时发生冲突,须要手动办理冲突。
- 解决冲突后,添加修改并提交
- git add .
- git commit -m "fix: 解决合并冲突"
复制代码 - 归并到主分支: 完成开辟后,将当前分支归并到主分支。
- 推送到长途仓库: 将本地的修改推送到长途仓库。
- 创建归并哀求(Pull Request): 在长途仓库创建一个归并哀求,哀求将当前分支的修改归并到主分支。
- # 创建并切换到主分支git checkout main# 确保本田主分支是最新的git pull origin main
- # 切换回开辟分支git checkout feature-branch# 将主分支归并到开辟分支git merge main
复制代码 长途仓库操作
1.创建长途仓库
2.初始化
3.仓库创建完成后可以看到仓库地址
常见Git长途仓库操作下令
- 添加长途仓库,起别名:
- git remote add <远程仓库名> <远程仓库URL>
复制代码 - 查看长途仓库列表:
- 从长途仓库拉取更改到本地:
git pull 下令着实包含了git fetch和git merge两个步调。它的作用是从长途仓库获取更新,并且将这些更新归并到当前分支上。
git fetch:
git fetch 下令用于从长途仓库下载新的提交、分支和标签,但它不会自动归并这些更改到你当前的工作分支。你可以通过 git merge [长途仓库名]/[分支名] 或者 git rebase [长途仓库名]/[分支名] 将长途分支的更新归并到你当前的分支。
- 推送本地更改到长途仓库:
- git push <远程仓库名> <本地分支名>:<远程分支名>
复制代码 - 查看长途仓库详细信息:
- 移除长途仓库:
- 重命名长途仓库:
- git remote rename <旧仓库名> <新仓库名>
复制代码 - 克隆长途仓库到本地:
(1)拉取代码
(2)初始化本地仓库
(3)创建别名(默认"origin")
克隆不须要登录账号
用户二克隆用户已仓库后,须要被用户一邀请参加仓库,用户二才可以推送(push)更改到github仓库
跨团队协作
Fork作用
- 独立工作空间:Fork 允许你在 GitHub 上复制一个项目到你自己的账号下,形成一个独立的工作空间。这个 Forked 项目与原始项目相互独立,你可以在其中举行修改、添加新功能,而不影响原始项目。
- 贡献代码:通过 Fork 一个项目,你可以在自己的 Forked 项目中举行修改,然后通过 Pull Request 向原始项目提交你的修改。如许原始项目的维护者可以检察你的修改,并决定是否将其归并到原始项目中。这是开源社区中贡献代码的常见方式之一。
- 实行性修改:如果你想尝试对一个项目举行修改,但又不确定是否会被原始项目接受,你可以先 Fork 这个项目,在自己的 Forked 版本中举行实行性的修改。如许做不会影响原始项目,同时也可以保留你的修改历史记录。
- 独立版本管理:Fork 的项目拥有独立的版本控制,你可以在自己的 Forked 项目中举行恣意的提交、分支和版本管理,而不会影响原始项目的版本历史。
Fork 是 GitHub 中一种紧张的协作方式,它允许开辟者在保持原始项目的完整性的同时,对项目举行修改和贡献,促进了开源社区的发展和代码共享。
Fork操作流程
Fork 操作的步调如下:
- 在 GitHub 上找到目标仓库: 首先,你浏览到你感兴趣的 GitHub 仓库的页面。
- 点击 “Fork” 按钮: 在目标仓库的右上角,有一个名为 “Fork” 的按钮。点击它将会在你的 GitHub 账户下创建一个该仓库的拷贝。
- 等待复制完成: GitHub 将会在你的账户下创建一个新的仓库,其中包含原始仓库的所有代码、分支、提交历史等。你会被自动重定向到这个新仓库。
- 在你的账户下修改代码: 现在,你可以在你 Fork 的仓库中举行修改、添加新功能、修复问题等。
- 向原始仓库提出归并哀求(Pull Request): 如果你希望你的修改被原始仓库接受,你可以向原始仓库提交一个归并哀求。这个哀求会通知原始仓库的维护者检察你的更改,并决定是否将它们归并到原始仓库中。
Fork的重要上风在于允许你贡献到其他项目而不须要直接访问它们的代码库。你可以在你自己的 Fork 下举行任何更改,而这些更改不会影响到原始仓库,直到你主动提出归并哀求并得到原始仓库维护者的答应。开辟者可以或许方便地参与到其他项目的开辟中。
SSH 密钥
SSH 密钥作用:
- 身份验证: SSH 密钥提供了一种更安全的身份验证方式。它利用密钥对举行验证,其中私钥保存在本地,而公钥被添加到 GitHub。这比基于用户名和暗码的身份验证更加安全。
- 免暗码登录: 一旦将 SSH 密钥添加到 GitHub,你就无需每次都输入暗码来举行操作。如许可以减轻不须要的麻烦,并提高操作的服从。
- 方便的 Git 操作: 添加 SSH 密钥后,你可以方便地利用 SSH 协议举行 Git 操作,如克隆、推送、拉取等,而不再须要每次输入暗码。
- 安全性: SSH 利用非对称加密,提供了更高的安全性。私钥储存在本地,不容易被他人获取,而公钥存储在 GitHub 上。
添加 SSH 密钥到 GitHub
- 打开git bash,输入下方下令生成.ssh文件夹
- $ ssh-keygen -t rsa -C <github登陆邮箱>
复制代码
- 打开github,点击右上角的头像,选择 Settings。
- 在左侧导航栏中选择 SSH and GPG keys。
- 在 Title 字段中,为密钥起一个形貌性的名称。
在 Key 字段中,粘贴你复制的公钥。
补充知识
- git中复制–>双击左键, 粘贴–>鼠标中键
- 当Vi或Vim编辑器打开时:
(1)按下 i 键 进入插入模式,此时可以输入文本。
(2)输入你的提交信息。
(3)按下 Esc 键 退出插入模式。
(4)输入 :wq 并按下 Enter 键保存并退出Vi编辑器。
如果你想取消提交,可以按下 Esc 键,然后输入 :q! 并按下 Enter 键。
如有错误烦请指正。
感谢您的阅读
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |