开启成长之旅!这是我参与「日新方案 2 月更文挑战」的第 28 天,点击检查活动概况

前言

布景

由于本社新人并不常用Git,再加上国内的网络并不算好,在这样一个布景下,为了简化Git的运用,我在这里简略记录了一个关于 Git的教程,期望对咱们有所帮助。

关于本教程的编写环境

本文根据Windows10体系Mac体系的小伙伴能够测验Homebrew。由于自己手里并没有搭载MacOS的电脑,因而Homebrew相关的运用请自行测验。

对于运用 Windows11体系 的小伙伴,本文的教程是通用的,不过一些细节可能略有不同,这点期望小伙伴们注意一下

关于Git

Git 是一个开源的分布式版别操控体系,能够有用、快速的进行项目版别办理。Git 是 Linus Torvalds 为了帮助办理 Linux 内核开发而开发的一个开放源码的版别操控软件。 ——来自 Git 简介 | 程序员大彬 (topjavaer.cn)

简略来说,Git 便是一个项目代码办理软件

关于本教程的评论

这个教程根据我的个人实践,许多东西根据我个人的了解,所以有望咱们多多指教。假如你发现了这个教程的过错之处,欢迎你经过邮箱或者QQ联系我,我会及时的进行改进。假如教程中有表述不清楚的地方,也请指出,或提供建议。

关于本教程的转载

任何个人或安排能够转载我的这个教程系列,甚至能够对其进行一些批改。但条件是要保证实时更新,而且保存本教程的版权信息,谢谢支撑,我也会不守时的更新这个系列的教程。

正文

装置与运用

具体装置教程能够看看这个系列的第一期:手把手教你用Git——Git运用教程(一) – ()

常用技巧

条件包括 (Include-if)

条件包括 (Include-if) 是一种文本处理语法,它答应在文档中根据条件包括或扫除某些文本。在编写具有多个变体或选项的文档时,这种语法特别有用。

语法格式为:

{{#condition}}
    text to include if the condition is true
{{/condition}}

{{#condition}}
    text to include if the condition is true
{{else}}
    text to include if the condition is false
{{/condition}}

其间,condition 能够是任何在文档处理器中可用的条件句子,例如变量、函数或比较操作符等。假如 condition 为真,那么坐落 {{#condition}}{{/condition}} 之间的文本将包括在输出中;不然,假如存在 {{else}} 部分,则坐落 {{else}}{{/condition}} 之间的文本将被包括在输出中。

例如,当在多个 Git 库房中作业时,您可能期望为每个库房提供不同的默许设置,例如默许的用户名、电子邮件地址、缺省分支等。这样做能够防止在提交代码时不小心运用过错的身份或默许分支等问题。

  1. 打开您的 Git 装备文件(~/.gitconfig),并在其间增加以下内容:
[includeIf "gitdir:/path/to/repo1/.git/"]
    path = ~/.gitconfig-repo1
[includeIf "gitdir:/path/to/repo2/.git/"]
    path = ~/.gitconfig-repo2

这将使 Git 检查您的 Git 库房目录,并为每个库房运用不同的装备文件。在上面的示例中,假如 Git 库房的目录是 /path/to/repo1/.git/,则将加载 ~/.gitconfig-repo1 文件中的装备;假如 Git 库房的目录是 /path/to/repo2/.git/,则将加载 ~/.gitconfig-repo2 文件中的装备。

  1. 在每个装备文件中设置恰当的默许设置,例如:
[user]
    name = John Doe
    email = john.doe@example.com
[init]
    defaultBranch = main

在上面的比如中,咱们设置了默许的用户名和电子邮件地址,并将默许分支设置为 main

这样做后,当您运用 git init 指令在不同的 Git 库房中创立新的库房时,它们将运用各自的默许设置。同样,当您提交代码时,Git 将主动运用正确的身份和分支。

多作业区

Git支撑咱们创立多作业区,同一个 Git 库房中创立多个不同的作业区,每个作业区能够包括不同的文件和批改,以便咱们能够在不同的使命之间快速切换。例如,咱们能够在一个作业区中进行开发,一同在另一个作业区中进行批改缺点或打补丁。

要创立一个新的作业区,请运用 git worktree 指令,后跟一个新的目录途径。例如,要创立名为 new-workspace 的新作业区,请运转以下指令:

git worktree add new-workspace

这将在当时库房的根目录中创立一个名为 new-workspace 的新目录,并将其链接到 Git 库房中的一个分支。您能够在新的作业区中进行批改和提交,而不会影响主作业区或其他作业区。

要切换到不同的作业区,请运用 git worktree list 指令列出所有的作业区。然后,运用 cd 指令进入您要切换到的作业区的目录。例如,要切换到 new-workspace 作业区,请运转以下指令:

cd new-workspace

您能够在新的作业区中履行 git 指令,例如 git statusgit addgit commit,而不会影响其他作业区或主作业区。

要删去作业区,请运用 git worktree remove 指令,并指定要删去的作业区的目录途径。例如,要删去 new-workspace 作业区,请运转以下指令:

git worktree remove new-workspace

这将删去作业区并断开链接到 Git 库房中的分支。

常用指令

git commit --fixupgit commit --squash 是两个相关的 Git 指令,它们能够让您更轻松地安排您的 Git 提交前史。这些指令一般与 git rebase--autosquash 选项一同运用,以便您能够对提交前史进行重新排列和批改。

git commit --fixup 指令能够创立一个 “批改” 提交,该提交仅包括当时更改所需的内容,但将其符号为要在将来与另一个提交兼并。例如,假如您要更改某个文件,但期望在未来将其兼并到曾经的提交中,能够运用 git commit --fixup 指令创立一个符号该更改的批改提交。批改提交的提交音讯应以 fixup! 最初,后跟原始提交的提交音讯。

git commit --squash 指令类似于 --fixup,但是它将当时更改兼并到从前的提交中,并在提交音讯中包括原始提交的提交音讯。运用 --squash 选项提交更改时,能够运用 -m 选项为提交音讯指定前缀,以便稍后将其与其他提交兼并。

当您在 git rebase 指令中运用 --autosquash 选项时,Git 会主动识别符号为 “批改” 或 “兼并” 的提交,并将它们放置在要兼并到的提交的正确位置。例如,假如您在运用 --autosquash 选项时运转 git rebase -i 指令,并在修改器中将 pick 指令替换为 squashfixup 指令,Git 将主动将这些提交兼并到其他提交中。

总之,运用 git commit --fixupgit commit --squash 指令能够更轻松地安排您的提交前史,并使其更易于阅览和了解。运用 git rebase--autosquash 选项能够进一步简化提交前史的批改进程,以便您能够更轻松地重新排列和修改提交

在这里,我在介绍一些常用的指令:

1. git init:在一个新项目中创立 Git 库房。
2.  git clone:在本地复制长途 Git 库房中的代码,一般用于获取和开端处理一个项目。
3.  git add:即将提交的更改增加到 Git 库房的暂存区,一般在进行一些小的更改后运用。
4.  git commit:将更改提交到 Git 库房,一般在对一组文件进行一系列更改后运用。
5.  git push:将本地 Git 库房中的更改推送到长途 Git 库房,一般在完结一组更改后运用。
6.  git pull:从长途 Git 库房获取最新版别的代码并将其兼并到本地库房中,一般在团队中协作开发时运用。
7.  git branch:创立、删去或检查本地分支,一般在进行杂乱的开发使命或批改过错时运用。
8.  git merge:将两个分支兼并在一同,一般在完结分支开发或批改过错后运用。
9.  git status:检查文件的状况,一般用于检查文件是否被批改或增加到暂存区。
10.  git log:检查 Git 库房的提交前史记录,一般用于了解项目的开发历程或查找特定提交。
11.  git diff:比较不同版别之间的差异,一般用于查找更改或解决兼并冲突。
12.  git stash:将当时的作业目录和暂存区的更改暂时保存,并复原到 Git 库房的上一版别,一般用于暂时保存未完结的作业。
13.  git tag:用于创立和办理 Git 库房的标签(版别号),一般用于符号项目的版别。
14.  git remote:列出已装备的长途 Git 库房,一般用于办理多个长途库房。
15.  git reset:撤销已提交的更改,并将 Git 库房回滚到之前的版别,一般用于撤销过错的提交或复原项目到之前的状况。