学而实习之 不亦乐乎

Git 的安装及基本用法

2024-06-19 06:39:15

一、安装

安装Git的过程涉及多个步骤,具体取决于你的操作系统。以下是在不同操作系统上安装Git的概述:

1、Windows系统

下载Git安装包:访问Git官网,选择适合Windows系统的版本,通常推荐下载“Git for Windows Setup.exe”。

  • 双击安装包:运行下载的安装程序。
  • 选择安装路径:在安装向导中选择你希望安装Git的路径,建议使用默认路径。
  • 选择组件:在接下来的步骤中,你可以选择需要安装的组件,通常建议保持默认设置。
  • 配置环境变量:勾选“Use Git from the Windows Command Prompt”以配置环境变量,这样你就可以从命令提示符直接使用Git命令。
  • 开始安装:点击“Install”按钮开始安装过程。
  • 检查安装结果:安装完成后,打开命令提示符,输入“git --version”来确认Git是否成功安装。

另一个简单的方法是安装 GitHub Desktop。 该安装程序包含图形化和命令行版本的 Git。 它也能支持 Powershell,提供了稳定的凭证缓存和健全的换行设置。 稍后我们会对这方面有更多了解,现在只要一句话就够了,这些都是你所需要的。 你可以在 GitHub for Windows 网站下载,网址为 GitHub Desktop 网站。

2、macOS系统

在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系统中,在 Terminal 里尝试首次运行 'git' 命令即可。

# git --version

如果没有安装过命令行开发者工具,将会提示你安装。

下载Git安装包:访问Git官网,选择适合macOS的版本,通常是一个.dmg文件。

双击安装包:运行下载的.dmg文件,将Git图标拖入“Applications”文件夹。

使用Homebrew(如果需要更新):如果你需要通过Homebrew保持Git更新,可以运行brew install git和brew upgrade git命令。

3、Linux系统

如果你想在 Linux 上用二进制安装程序来安装基本的 Git 工具,可以根据你的Linux发行版(如Ubuntu、Fedora等),使用发行版包含的基础软件包管理工具来安装。 使用 apt-get、dnf 或其他包管理器来安装 Git。

以 Fedora 为例,如果你在使用它(或与之紧密相关的基于 RPM 的发行版,如 RHEL 或 CentOS),你可以使用 dnf:

# dnf install git-all

如果你在基于 Debian 的发行版上,如 Ubuntu,请使用 apt:

# apt install git-all

安装完成后,你可能还需要进行一些配置,如设置全局用户名和电子邮件地址,这是为了将你的身份信息附加到你的提交中。你可以通过运行以下命令来设置这些信息。

# git config --global user.name "<First_name> <Last_name>"
# git config --global user.email "<user_email_address>"

注意:

  • 对于Windows用户,如果你想要更新Git,可以通过下载新版本的安装程序进行就地更新,或者使用适用于 Windows 的 Git 的图形化安装程序从官方网站获取最新版本。
  • 对于macOS用户,如果通过 Homebrew 安装了Git,可以使用 Homebrew 的升级选项来更新 Git。

4、从源代码安装

有人觉得从源码安装 Git 更实用,因为你能得到最新的版本。 二进制安装程序倾向于有一些滞后,当然近几年 Git 已经成熟,这个差异不再显著。

如果你想从源码安装 Git,需要安装 Git 依赖的库:autotools、curl、zlib、openssl、expat 和 libiconv。 如果你的系统上有 dnf (如 Fedora)或者 apt(如基于 Debian 的系统), 可以使用对应的命令来安装最少的依赖以便编译并安装 Git 的二进制版:

$ sudo dnf install dh-autoreconf curl-devel expat-devel gettext-devel \
  openssl-devel perl-devel zlib-devel

$ sudo apt-get install dh-autoreconf libcurl4-gnutls-dev libexpat1-dev \
  gettext libz-dev libssl-dev

为了添加文档的多种格式(doc、html、info),需要以下附加的依赖:

$ sudo dnf install asciidoc xmlto docbook2X
$ sudo apt-get install asciidoc xmlto docbook2x

注意:使用 RHEL 和 RHEL 衍生版,如 CentOS 和 Scientific Linux 的用户需要 开启 EPEL 库 以便下载 docbook2X 包。

如果你使用基于 Debian 的发行版(Debian/Ubuntu/Ubuntu-derivatives),你也需要 install-info 包:

$ sudo apt-get install install-info

如果你使用基于 RPM 的发行版(Fedora/RHEL/RHEL衍生版),你还需要 getopt 包 (它已经在基于 Debian 的发行版中预装了):

$ sudo dnf install getopt

此外,如果你使用 Fedora/RHEL/RHEL衍生版,那么你需要执行以下命令:

$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

以此来解决二进制文件名的不同。

当你安装好所有的必要依赖,你可以继续从几个地方来取得最新发布版本的 tar 包。 你可以从 Kernel.org 网站获取,网址为 https://www.kernel.org/pub/software/scm/git, 或从 GitHub 网站上的镜像来获得,网址为 https://github.com/git/git/releases。 通常在 GitHub 上的是最新版本,但 kernel.org 上包含有文件下载签名,如果你想验证下载正确性的话会用到。

接着,编译并安装:

$ tar -zxf git-2.8.0.tar.gz
$ cd git-2.8.0
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info

完成后,你可以使用 Git 来获取 Git 的更新:

$ git clone git://git.kernel.org/pub/scm/git/git.git

二、基本用法

Git有三个主要的工作区域:工作区(working directory)、暂存区(staging area)和版本库(repository)。

  1. 工作区是指您电脑文件系统上用于修改文件的目录。在这里,您可以创建、编辑和删除文件。
  2. 暂存区是一个中间状态,它充当了您提交更改的缓冲区。在Git中,您必须明确地将文件添加到暂存区,然后才能将其提交到版本库中。这样做的好处是,您可以对每个更改进行精细控制,并确保只提交需要保存的更改。
  3. 版本库包含Git存储库的所有历史记录和元数据。它是Git存储库的核心组成部分,是由Git自动维护的。

简而言之,工作区是您正在处理的实际文件,而暂存区是下一次提交所需更改的文件列表。它们之间的区别在于,您可以对工作区中的任何文件进行修改,但只有将它们添加到暂存区并将其提交到版本库中,它们才会成为Git跟踪的部分。

1、创建版本库

首先,打开终端或命令行界面,进入要创建版本库的目录下。

接着,使用以下命令初始化一个空的 Git 仓库:

$ git init

然后,将需要管理的文件添加到暂存区:

$ git add <file>

你也可以使用以下命令一次性将所有变更添加到暂存区:

$ git add .

接下来,提交暂存区中的变更到本地仓库,并添加一个描述信息:

$ git commit -m "Initial commit"

现在,你已经成功地创建了一个版本库。你可以使用其他 Git 命令来管理它,例如:

  • git status:查看当前工作区和暂存区的状态。
  • git log:查看提交记录。
  • git branch:管理分支。
  • git remote:管理远程仓库。

2、版本回退

要将Git存储库版本回退,请使用 git reset 命令。如果您想要撤消上次提交并返回到上一个提交,则可以使用以下命令:

$ git reset HEAD~1

这将使HEAD指向上一个提交,但不会删除您最新的更改。如果您希望完全返回到以前的提交并放弃所有更改,则可以添加--hard选项:

$ git reset --hard HEAD~1

请注意,此操作将永久删除您最新的更改,请谨慎使用。如果您已经将更改推送到远程存储库,则在执行此操作之前应先备份这些更改。

3、Git撤销修改和删除文件操作

要撤销对文件的修改,可以使用git checkout命令:

$ git checkout -- <filename>

此命令将覆盖工作树中指定文件的更改,还原为最近提交或上次检出的状态。

要删除文件并将此更改提交到Git存储库中,可以使用git rm命令:

$ git rm <filename>
$ git commit -m "Remove file"

这将从工作树和版本历史记录中删除指定的文件。如果只是想从Git版本库中删除文件但保留在工作树中,则可以使用git rm命令的--cached选项:

$ git rm --cached <filename>
$ git commit -m "Remove file from repository"

这将从版本历史记录中删除指定的文件,但保留在工作树中。

三、远程仓库

1、添加远程仓库

要将本地代码库连接到远程仓库,步骤如下:

首先,将本地代码库初始化为Git仓库(如果尚未完成):

git init

添加远程仓库的URL,其中<remote-name>是自定义名称,<remote-url>是远程仓库的URL:

git remote add <remote-name> <remote-url>

可以使用以下命令确认远程仓库是否已成功添加:

git remote -v

此后,您就可以使用git push命令将代码推送到远程仓库,或使用git pull命令从远程仓库拉取代码。

2、从远程库克隆

要从远程仓库克隆代码到本地,可以使用以下git命令:

git clone <remote-url>

其中<remote-url>是远程仓库的URL。执行此命令后,Git将在当前目录下创建一个新目录,其中包含克隆的代码库副本。如果想指定不同的目录名,可以将目录名作为可选参数添加到命令中:

git clone <remote-url> <directory-name>

在执行git clone命令时,还可以通过添加其他标志来更改默认行为,例如指定要克隆的分支、禁用克隆时自动检查的文件等。有关详细信息,请参阅相应的文档。

3、创建与合并分支

创建一个新的分支可以使用以下命令:

git branch <branch_name>

这将在当前所在的提交上创建一个名为 <branch_name> 的新分支。

要切换到新创建的分支,可以使用以下命令:

git checkout <branch_name>

创建并立即切换到该分支,可以使用以下命令:

git checkout -b <branch_name>

合并分支可以使用以下命令:

git merge <branch_name>

这将将 <branch_name> 分支中的更改合并到当前分支。

4、处理冲突

当两个分支上的代码修改了同一部分,并且尝试将这两个分支合并时,就会发生代码冲突。Git提供了以下步骤来解决冲突:

  • 运行 git status 命令查看哪些文件包含冲突。
  • 编辑有冲突的文件,手动解决文件中的冲突。
  • 对编辑后的文件进行 git add,标记为已解决冲突的文件。
  • 使用 git commit 提交更改,Git 会自动生成一个合并提交,其中包含各自分支中的更改。

注意:在解决冲突前,最好先备份当前的代码状态,以免不小心破坏代码库。另外,在处理冲突之前,可以通过运行 git diff 命令来查看冲突的源代码,以便更好地理解要解决的问题。

四、分支管理策略

在 Git 中,常见的分支管理策略包括以下几个方面:

  • 主分支:主分支通常是最稳定的分支,用于发布生产版本。在 Git 中,主分支通常是 master 分支或者 main 分支。
  • 开发分支:开发分支通常从主分支派生而来,在其上进行新功能或修复错误的开发。在 Git 中,通常使用 develop 分支作为开发分支。
  • 特性分支:特性分支是为了开发单独的功能而创建的分支。这些分支通常从开发分支派生而来,并在实现目标后被合并回开发分支。在 Git 中,通常使用 feature/ 分支命名约定来表示特性分支。
  • 发布分支:发布分支是用于准备发布版本的分支,通常从主分支派生而来。这些分支应该包含与发布相关的所有更改,并且应该经过全面测试和审核后再合并回主分支。在 Git 中,通常使用 release/ 分支命名约定来表示发布分支。
  • 热修复分支:热修复分支通常用于快速修复紧急问题,例如安全漏洞或崩溃。这些分支通常从主分支派生而来,并且只包含必要的更改。在 Git 中,通常使用 hotfix/ 分支命名约定来表示热修复分支。

通过采用合适的 Git 分支管理策略,可以帮助团队更好地组织和管理代码,提高团队的协作能力和生产效率。除了上述常见的分支管理策略,还可以根据团队的具体需求和工作流程定制适合自己的分支管理策略。

bug分支

在 Git 中,通常使用 bug 分支用于修复代码中的错误或缺陷。当发现 bug 时,可以从当前开发分支(如 develop 分支)创建一个 bug 分支,在该分支上进行错误修复。修复完成后,可以将更改提交到 bug 分支,并将其合并回开发分支和主分支。

以下是一个典型的使用 Git bug 分支的流程:

1.从当前开发分支(如 develop 分支)创建一个新的 bug 分支:

git checkout -b bug/fix-xxx

2.在 bug 分支上进行错误修复,包括必要的测试和代码审查。

提交更改并推送到远程仓库:

git add .
git commit -m "Fix xxx bug"
git push origin bug/fix-xxx

3.将 bug 分支合并回开发分支(如 develop 分支):

git checkout develop
git merge --no-ff bug/fix-xxx

4.测试修复是否正确,如果一切正常,则将开发分支合并回主分支(如 master 分支):

git checkout master
git merge --no-ff develop

通过使用 Git bug 分支,可以帮助团队更好地管理和修复代码中的错误和缺陷,同时保持代码库的稳定性和可靠性。

五、多人协作

Git 是一个优秀的多人协作工具,以下是 Git 多人协作的一些最佳实践:

  • 使用分支:使用分支可以帮助团队成员在不影响主分支的情况下进行开发和测试,避免代码冲突和错误。建议采用主分支、开发分支、特性分支、发布分支、热修复分支等分支管理策略。
  • 提交规范:每次提交代码时应该附加有意义的提交信息,描述本次提交的更改内容和目的。建议采用语义化版本号和提交信息模板等规范,以便更好地记录和追踪代码变更历史。
  • 定期合并:团队成员应该定期将自己的分支合并回主分支或者开发分支。这可以避免较大的代码冲突和错误,并且保持代码库的整洁和可维护性。
  • 代码审查:通过代码审查可以确保代码的质量和一致性,并且可以识别和纠正潜在的问题和错误。建议采用 pull request 和 code review 等工具和流程,以便团队成员对彼此的代码进行审查和反馈。
  • 团队协作:团队成员之间应该保持及时和有效的沟通,共享技术和经验,并尽可能避免个人行为和偏见对项目和团队产生不良影响。

通过采用上述最佳实践,可以帮助团队高效协作、保证代码质量和稳定性,并提高团队的生产力和创造力。

1、推送分支

在 Git 中,推送分支指将本地的分支提交到远程仓库中,使得其他团队成员可以访问和获取该分支的代码。

推送当前分支到远程仓库,并与远程分支关联:

git push -u origin <branch-name>

推送当前分支到远程仓库,并与远程分支合并:

git push origin <branch-name>

强制推送当前分支到远程仓库:

git push -f origin <branch-name>

删除远程分支:

git push origin :<branch-name>
或
git push --delete origin <branch-name>

在推送分支时,通常会遇到冲突等问题。如果发生冲突,需要先解决冲突,然后再进行推送。

另外,在多人协作项目中,建议采用 pull request 和 code review 等工具和流程来对分支进行审查和反馈,以确保代码质量和稳定性。同时,也应该避免直接向主分支(如 master 分支)提交代码,而是应该使用分支管理策略来组织和管理代码。

2、抓取分支

在 Git 中,抓取分支指从远程仓库拉取最新的代码和分支信息,并在本地创建相应的分支。

拉取所有远程分支并更新本地分支:

git fetch --all

拉取一个特定的远程分支到本地:

git fetch origin <branch-name>

在本地创建基于远程分支的新分支:

git checkout -b <new-branch-name> origin/<remote-branch-name>

拉取远程分支并自动与本地分支关联:

git checkout --track origin/<remote-branch-name>
或
git checkout -t origin/<remote-branch-name>

抓取分支时,需要注意避免覆盖当前分支中未提交的更改。如果本地分支和远程分支存在冲突,需要解决冲突后才能将更改合并到本地分支中。

通过抓取分支可以使得开发者获取最新的代码和分支信息,在本地进行代码修改和测试,并将更改推送回远程仓库以进行协作开发。

 

六、git可视化工具

Git 可视化工具可以帮助开发者更直观地查看和管理代码版本控制历史,以下是几个常用的 Git 可视化工具:

  • GitKraken:GitKraken 是一款简单易用的 Git 可视化工具,支持 Windows、Mac 和 Linux 等多个平台。它提供了强大的图形界面,包括代码历史记录、分支管理、合并冲突解决等功能。
  • Sourcetree:Sourcetree 是由 Atlassian 公司开发的一款免费 Git 可视化工具,支持 Windows 和 Mac 平台。它提供了友好的用户界面,可以轻松地进行代码提交、分支管理和冲突解决等操作。
  • GitHub Desktop:GitHub Desktop 是 GitHub 公司出品的一款免费 Git 可视化工具,支持 Windows 和 Mac 平台。它提供了清晰明了的界面,可视化显示代码历史记录、分支管理、拉取请求(pull request)等功能,以及与 GitHub 网站的集成支持。
  • Git GUI:Git GUI 是 Git 官方提供的一个图形化界面的工具,支持 Windows、Mac 和 Linux 等多个平台。它虽然不如前面提到的工具那样友好易用,但是对于习惯命令行操作的开发者来说,Git GUI 可以提供便捷的图形化界面。

使用 Git 可视化工具可以帮助开发者更直观地理解和管理 Git 中的代码版本控制历史,提高协作效率和代码质量。