一、Git 简介
(一) 介绍
Git是一个分布式版本控制系统,它广泛用于跟踪文件的变化,协作开发代码和管理项目版本。
(二) 特点
分布式版本控制:每个开发者都拥有完整的代码仓库,可以在本地进行版本控制和提交,而不需要依赖中央服务器。
高效的分支管理:Git具有轻量级的分支操作,使得创建、合并和切换分支变得非常快速和简单。
快速的性能:Git在处理大型项目和历史记录时表现出色,因为它采用了一些高效的数据结构和算法。
强大的协作功能:Git提供了丰富的协作和远程仓库管理功能,使得多人协作开发变得更加便捷。
(三) 发展
Git 是由 Linus Torvalds 于 2005 年创建的分布式版本控制系统
Linus Torvalds 创建 Git 的初衷是为了更好地管理 Linux 内核的开发。在之前,Linux 内核开发使用的版本控制系统是 BitKeeper。
Linux 内核社区有人逆向工程了 BitKeeper 的协议,并且这一行为违反了 BitKeeper 的使用条款。这导致了一场严重的争议,最终导致了撤销 Linux 内核社区对 BitKeeper 的免费使用特权。
Linus Torvalds 随后决定开发一个新的版本控制系统,这就是后来的 Git。
二、概念
当使用 Git 进行版本控制时,有一些重要的概念需要理解:
- 工作目录(Working Directory) :这是你实际进行编辑工作的地方,包含项目的实际文件。
- 暂存区(Staging Area/Index) :在提交到仓库之前,你可以将修改的文件暂时存储在暂存区。这使你可以选择性地提交文件,而不是一次性提交所有的修改。使用
git add命令将文件添加到暂存区。 - 仓库(Repository) :也称为本地仓库,包含项目的完整历史记录和元数据。当你使用
git commit命令时,暂存区的内容会被永久保存到仓库中。 - 远程仓库(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
将本地提交推送到远程仓库
-
基本语法:
git push <remote> <branch>这里
<remote>是远程仓库的名称,<branch>是要推送的本地分支名称。 -
其他参数:
-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
显示提交日志