Git

32 阅读5分钟

一、Git 简介

(一) 介绍

Git是一个分布式版本控制系统,它广泛用于跟踪文件的变化,协作开发代码和管理项目版本。

(二) 特点

分布式版本控制:每个开发者都拥有完整的代码仓库,可以在本地进行版本控制和提交,而不需要依赖中央服务器。

高效的分支管理:Git具有轻量级的分支操作,使得创建、合并和切换分支变得非常快速和简单。

快速的性能:Git在处理大型项目和历史记录时表现出色,因为它采用了一些高效的数据结构和算法。

强大的协作功能:Git提供了丰富的协作和远程仓库管理功能,使得多人协作开发变得更加便捷。

(三) 发展

Git 是由 Linus Torvalds 于 2005 年创建的分布式版本控制系统

Linus Torvalds 创建 Git 的初衷是为了更好地管理 Linux 内核的开发。在之前,Linux 内核开发使用的版本控制系统是 BitKeeper。

Linux 内核社区有人逆向工程了 BitKeeper 的协议,并且这一行为违反了 BitKeeper 的使用条款。这导致了一场严重的争议,最终导致了撤销 Linux 内核社区对 BitKeeper 的免费使用特权。

Linus Torvalds 随后决定开发一个新的版本控制系统,这就是后来的 Git。

二、概念

当使用 Git 进行版本控制时,有一些重要的概念需要理解:

  1. 工作目录(Working Directory) :这是你实际进行编辑工作的地方,包含项目的实际文件。
  2. 暂存区(Staging Area/Index) :在提交到仓库之前,你可以将修改的文件暂时存储在暂存区。这使你可以选择性地提交文件,而不是一次性提交所有的修改。使用 git add 命令将文件添加到暂存区。
  3. 仓库(Repository) :也称为本地仓库,包含项目的完整历史记录和元数据。当你使用 git commit 命令时,暂存区的内容会被永久保存到仓库中。
  4. 远程仓库(Remote Repository) :位于网络上的仓库,通常用于多人协作和备份。你可以将本地仓库的更改推送(push)到远程仓库,也可以从远程仓库拉取(pull)最新的更改。使用 git remote 命令可以管理远程仓库的地址。

这些概念之间的关系如下:

  • 你在工作目录中编辑文件。
  • 通过 git add 命令将修改的文件添加到暂存区。
  • 使用 git commit 命令将暂存区的内容永久保存到本地仓库。
  • 通过 git push 命令将本地仓库的更改推送到远程仓库。
  • 通过 git pull 命令从远程仓库拉取最新的更改到本地仓库。

三、指令

(一)基本操作

git init:在当前目录中初始化一个新的 Git 仓库

git clone <repository>:克隆一个远程仓库到本地

git add <file>:将文件的当前状态添加到暂存区

git rm <file>:删除工作目录中的文件,并将这个删除操作记录在 Git 仓库中

git commit -m "commit message":将暂存区的内容提交到仓库

git reset --soft HEAD^: 撤回上一次 commit 且保留本地文件修改

git reset --hard HEAD^: 撤回上一次 commit 且移除本地文件修改

git status:显示工作目录和暂存区的状态

git checkout -- <file>: 丢弃工作目录中文件的更改,即将文件恢复到最近一次提交的状态

(二)分支操作

git branch

列出本地分支,或创建、删除、重命名分支

  • git branch:列出所有本地分支。
  • git branch -r:列出所有远程分支。
  • git branch -a:列出所有本地和远程分支。
  • git branch <branch-name>:创建一个新的分支。
  • git branch -d <branch-name>:删除指定的本地分支(注意:只能删除已经合并到当前分支的分支)。
  • git branch -D <branch-name>:强制删除指定的本地分支(即使该分支的更改没有合并)。
  • git push origin --delete <branch-name>:删除远程分支。
  • git branch -m <new-branch-name>:重命名当前分支。
  • git branch --set-upstream-to=<upstream>:设置当前分支的上游分支。

git checkout

  • git checkout <branch>:切换到指定的分支。
  • git checkout -b <new-branch>:创建并切换到新的分支。
  • git checkout -:切换到上一个分支。

git merge <branch>

将指定分支的更改合并到当前分支。

(三)远端仓库操作

git pull

从远程仓库拉取并合并更改

git push

将本地提交推送到远程仓库

  1. 基本语法:

    git push <remote> <branch>

    这里 <remote> 是远程仓库的名称,<branch> 是要推送的本地分支名称。

  2. 其他参数:

    • -u 或 --set-upstream:在推送的同时,将本地分支和远程分支关联起来,以后可以直接使用 git push 和 git pull,而不需要再指定远程仓库和分支。
    • --force:强制推送,即覆盖远程仓库上的同名分支,慎用此选项。

git remote

命令用于管理远程仓库,包括查看已配置的远程仓库、添加新的远程仓库、删除远程仓库等操作

git remote:列出已配置的远程仓库的名称。

git remote add <name> <url>: 添加一个新的远程仓库

git remote rm <name>: 删除一个新的远程仓库

git remote -v: 查看远程仓库信息

git fetch

从远程仓库下载对象和引用

(三)查看和比较操作

git diff

显示工作目录和暂存区之间的差异

git log

显示提交日志