常用Git命令使用教程转载
原创常用Git命令使用教程
9.3k 次阅读 · 读完需要 29 分钟
26
0x00 写在前面
大多数开发团队现在 Git 作为您自己的版本控制工具,您需要 Git 用法非常熟悉。在本文中,我整理了开发过程中经常使用的内容。 Git 命令,方便偶尔忘记速度检查。使用 GUI 学习工具的学生也可以进行比较。
0x01 Git 配置
\1. 安装完成后 Git 之后,在正式使用之前,需要进行一些全局设置,例如用户名和电子邮件。
设置的主要命令是 git config
:
git config --global user.name "your name" // 设置全局用户名
git config --global user.email "your email" // 设置邮箱
其中, --global
如果未使用此参数,则为当前仓库的配置。
\2. 除了用户名和邮箱,还有许多配置可以自定义。 Git,如:
git config --global color.ui true // 让 Git 显示不同的颜色
git config core.ignorecase true // 让 Git 仓库中的文件区分大小写
\3. 查看已进行的所有配置:
git config -l
0x02 基础操作
1. 创建 Git 版本库
在本地创建 Git 存储库,您需要使用 git init
命令。
首先,您需要创建一个新目录来存储版本库,然后输入目录的路径,然后执行:
git init
然后查看目录结构,您可以看到它包含 .git
子目录,这意味着存储库已成功创建。
2. 将文件添加到存储库
要在存储库管理中包含文件,请首先将其添加到暂存区域(此处没有深入介绍)在提交到仓库之前。
2.1 使用将文件添加到临时区域 git add
:
git add Readme.md // 将单个文件添加到临时区域
git add . // 将当前目录中的所有更改添加到临时区域,但根据规则忽略的更改除外。
注意:此处的空文件夹不会添加到临时区域。
2.2 将暂存区中的文件提交到仓库。需要使用 git commit
:
git commit // 如果暂存区中有文件,请将其提交到仓库
git commit -m your comments // 提交意见,用于解释提交内容、变更、影响等。
注意:此处直接使用
git commit
提交,将首先弹出页面添加评论。
3. 查看仓库的状态
无论是创建新文件、将文件添加到临时区域还是进行其他更改,我们都可以传递:
git status
随时查看仓库中文件的状态。这应该被使用。 Git 在进行版本控制的过程中,我最多使用一个命令。
4. 查看仓库中的特定更改
通常,我们会对文档进行更改,但很快就会忘记。这次你可以通过 git diff
查看具体更改。
git diff // 查看存储库中的所有更改
git diff Readme.md // 查看对特定文件的更改
5. 查看提交历史记录
有时,您需要查看您提交的内容,以查看您完成的内容。或者,您需要查找特定的提交以查看当时的代码。需要在此处使用:
git log // 显示所有提交的历史记录
git log --pretty=oneline // 在单行中显示提交历史记录的内容
在 git log
在的输出中,您可以看到每个提交。 ID,是一个 40 一串比特。
6. 版本回退
有了 git log
要查看提交历史记录,我们可以通过 git reset --hard
来回切换到我们需要的特定版本,然后使用当时的代码进行各种操作。
git reset --hard HEAD^ // 回滚到以前的提交版本
git reset --hard HEAD^^ // 回滚到以前的提交版本
git reset --hard commit_id // 会退到 commit_id 指定的提交版本
7. 回到未来
返回到提交的版本后,通过 git log
在此之后无法显示提交信息。然而,通过 git reflog
可以获取操作命令的历史记录。
因此,想要回到未来,先通过 git reflog
从history命令中,找到要返回的提交版本。 ID然后通过 git reset --hard
来切换。
git reflog
git reset --hard commit_id
8. 撤销修改
撤消更改还包括两个方面,因为仓库中的文件可能位于工作区中,尚未处于版本控制中,或者在提交之前位于暂存区中。
8.1 放弃对工作区中文件的修改
git checkout -- Readme.md // 如果 Readme.md 工作区中的文件,放弃其修改
git checkout -- . // 放弃对当前目录下工作区中所有文件的修改
注意:
git checkout --
中的--
是必须的。
8.2 放弃已进入暂存区域的修改
git reset HEAD Readme.md // 将 Readme.md 恢复到 HEAD 提交版本的状态
9. 删除文件
在将文件添加到临时区域之前,可以直接物理删除要删除的文件。或通过 git checkout -- file
丢弃。如果文件已经提交,您需要 git rm
来删除:
git rm Readme.md // 删除已提交 Readme.md
注意:
git rm
只能删除已提交到存储库的文件。其他状态的文件直接使用此命令操作是错误的。
git rm 与 先 rm 然后 git add 的区别
更多详细信息,请参阅: “git rm” 和 “rm” 的区别
注:上图中的结果为 git 1.9.1 版本上的操作。在里面 git 2.0 以上两者之间没有区别。
0x03 分支管理
分支是版本控制系统中一个非常重要的概念。 Git 中的新分支和合并分支的操作非常简单和方便,因此我们将经常使用它们。
1. 查看分支
查看分支使用情况 git branch
:
git branch // 查看本地分支机构信息
git branch -v // 查看相对详细的本地分支机构信息
git branch -av // 查看分支机构信息,包括远程仓库
注意:在
git branch
在的输出中,前面有一个分支*
这标识了我们当前所在的分支。
2. 创建分支
当我们要修复 Bug,或开发新功能,即使您害怕破坏原始代码,也可以创建新分支以避免对原始代码的影响。
git branch dev // 创建一个名为 dev 的分支
3. 切换分支
创建分支后,我们需要切换到新分支,否则,所有更改仍在原始分支上。事实上,所有更改只能影响当前分支。
git checkout dev // 新建完 dev 分支后,切换到 dev 分支
4. 创建和切换分支
git checkout -b dev // 新建 dev 分支,并切换到该分支
此命令将前两个单独的命令组合在一起,通常在正常使用中使用。
5. 合并分支
当我们完成维修时 Bug,或开发新功能,我们将 Bug 或者 功能的修改被合并回原始主分支,此时需要该分支。 git merge
进行分支合并。
首先,您需要切换回要合并到的分支,例如 master
:
git checkout master // 切换回 master 分支
git merge dev // 将 dev 分钟内的修改被合并回 master 分支
当合并回主分支时,稍后可能会发生冲突。这里不解释冲突的解决。
6. 删除分支
当先前创建的分支完成其任务时 Bug 修复完成并合并分支后,不再需要该分支,可以删除该分支。
git branch -d dev // 删除 dev 分支
0x04 远程仓库
以上所有命令都适用于本地仓库操作。当我们希望多人协作时,我们会将代码发布到统一的远程仓库,然后在多人本地操作后将其推送到远程仓库。当其他人协作时,他们需要在推送自己的修改之前同步远程仓库的内容。
1. 从远程存储库克隆
如果您没有本地存储库,并且希望从现有的远程存储库复制代码的副本,那么您需要 git clone
。
git clone https://github.com/git/git.git // 通过 https 协议,克隆 Github 上 git 仓库的源代码
git clone linfuyan@github.com/git/git.git // 通过 ssh 协议,克隆 Github 上 git 仓库的源代码
注意:
git clone
以下仓库地址可以支持多种协议,例如 https, ssh 等。
2. 添加远程仓库
如果您已经有一个本地仓库,例如前面创建的仓库 git-guide
然后,您将远程发布它,供其他人协作。然后使用:
git remote add origin your_remote_git_repo // 将远程仓库添加到本地仓库
3. 将本地内容推送到远程存储库
当代码在本地仓库中提交时,需要将代码推送到远程仓库,以便其他合作者可以从远程仓库同步内容。
git push -u origin master // 用于第一次推送,可以简化后续推送或拉送命令的使用。
git push origin master // 将本地 master 分支推送 origin 远程分支
注意:
git push -u origin master
当你第一次使用它时,带上它。-u
参数,在本地 master 分支推送远程新的 master 分支机构同时,还将 master 分支和远程 master 分支是链接的。
4. 从远程存储库获取最新内容
在多人协作的过程中,当您在本地仓库中完成提交时,需要获取远程仓库的最新内容,然后才能将其推送到远程仓库。
可以通过 git fetch
和 git pull
获取远程存储库的内容。
git fetch origin master
git pull origin master
git fetch
和 git pull
区别:
git fetch
它只获取远程仓库的更新内容,不会自动合并。git pull
在获得远程仓库的内容后,它会自动合并,这可以被视为git fetch
之后git merge
。
注意:建议使用更多
git fetch
。
5. 查看远程仓库信息
git remote [-v] // 显示远程仓库信息
6. 关联本地和远程分支
本地仓库的分支和远程仓库的分支对应。通常,远程存储库中的分支名称与本地存储库中分支名称相同。
有时,我们需要指定本地分支和远程分支之间的关联。
git branch --set-upstream local_branch origin/remote_branch
7. 修改本地仓库对应的远程仓库地址。
当远程仓库地址更改时,需要修改本地仓库对应的远程仓库地址。主要应用于 工程迁移 过程中。
git remote set-url origin url
0x05 标签管理
在项目开发过程中,当发布一个版本时,需要标记代码以供后续检索。出于其他原因,您需要在提交文件上添加特定标签。
1. 创建标签
git tag -a tagname -m comment commit_id
-a
参数指定标签名称, -m
添加备注信息, ‘commit_id’ 指定标记的提交。
2. 查看所有标记
git tag // 查看本地仓库中的所有标签
3. 查看特定标签信息
git show tagname
4. 删除本地标签
如果标记键入错误,或者不再需要标记,则可以将其删除。
git tag -d tagname
5. 删除远程标签
git push origin :refs/tags/tagname
git push origin --delete tagname
git push origin :tagname
6. 将标签推送到远程仓库
标签完成后,需要将其推送到远程仓库。
6.1 将单个标签推送到远程存储库
git push origin tagname
6.2 立即将所有标签推送到远程仓库。
git push origin --tags
0x06 进阶操作
1. 临时保存更改
在实施过程中 Git 在操作时,需要维护当前操作的是仓库。/分支处于 clean 状态,没有未提交的更改。这样的 git pull
, git merge
等等,如果有未提交的更改,这些更改将无法运行。
但在执行这些操作时,您可能修改了很多代码,但不想放弃它。然后,您需要暂时保存这些更改,这些更改需要使用。 git stash
。
1.1 临时保存更改 ,以便仓库可以返回 clean 状态。
git stash // 在本地存储库中保存临时更改。
注:可以多次
git stash
保存不同的临时更改。
1.2 查看临时保存 。暂时保存时,仍需要稍后将其取回。他们在哪里?
git stash list // 显示所有临时修改
1.3 当我们完成处理其他操作时,我们希望恢复临时保存的更改。
git stash apply // 还原所有保存的临时修改
git stash pop // 恢复上次保存的临时修改
1.4 或者,如果我们觉得暂时不需要它,我们可以丢弃它。
git stash clear // 放弃所有保存的临时修改
0x07 写在最后
这些是我在当前项目中经常使用的操作。此处对其进行了整理,可作为手册使用。对于 Git 这里没有反映理解或更多解释。您可以参考其他更多信息。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除