git 是一种分布式版本控制系统(Distributed Version Control System, DVCS),用于有效地管理代码和文件的变更历史。它最初由林纳斯·托瓦兹(Linus Torvalds)于2005年为管理Linux内核开发而设计,并很快因其效率和灵活性而流行开来,成为许多软件开发团队的首选版本控制工具。
git 的主要特点包括:
- 分布式:Git 是分布式的,这意味着每个开发者都可以在自己的本地机器上克隆整个项目的历史记录。每个克隆(或仓库)都像是一个完整的备份,可以用来开发或与其他开发者共享。
- 快速:Git 相对于其他版本控制系统(如 Subversion)来说,速度非常快。这得益于其高效的数据结构和设计。
- 灵活性:Git 提供了强大的分支和合并功能,使得开发者可以并行工作在不同的特性或修复上,而不会相互干扰。
- 安全性:Git 使用了SHA-1哈希算法来确保数据的完整性和安全性。每次提交都会生成一个唯一的哈希值,这个值基于文件的内容和提交信息。
- 易于学习:虽然 Git 的功能非常强大,但其基本的命令集相对直观,容易上手。
git 的基本使用流程:
- 安装 Git:首先,你需要在你的计算机上安装 Git。这可以通过访问 Git 官网(https://git-scm.com/)并下载适合你的操作系统的安装包来完成。
- 配置 Git:安装完成后,你需要配置一些基本的用户信息,如你的姓名和电子邮件地址。这可以通过 git config 命令来完成。
- 初始化仓库:使用 git init 命令在你的项目目录中初始化一个新的 Git 仓库。这会创建一个 .git 目录,Git 将使用它来存储所有的版本控制信息。
- 添加文件到仓库:使用 git add 命令将你的文件添加到暂存区(staging area)。暂存区是提交之前的一个准备区域。
- 提交更改:使用 git commit 命令将暂存区的更改提交到仓库中。你需要为你的提交提供一个描述性的消息。
- 查看更改历史:使用 git log 命令查看你的提交历史。
- 分支和合并:Git 支持分支操作,你可以使用 git branch 命令来创建、列出和删除分支。使用 git checkout(Git 2.23 版本后推荐使用 git switch)和 git merge 命令来切换分支和合并分支。
- 远程仓库:你可以使用 git remote 命令来管理远程仓库。使用 git clone 命令克隆远程仓库到你的本地机器,使用 git push 和 git pull 命令来推送和拉取更改。
举例
- 分支管理
- git branch
创建新分支:git branch
查看所有分支(包括本地和远程,使用 -a 参数):git branch -a
删除分支(本地):git branch -D (注意:大写 -D 会强制删除分支,即使分支未合并)
切换分支:git checkout (Git 2.23 版本后推荐使用 git switch ) - git checkout
切换分支(如上文所述)
创建并切换新分支:git checkout -b (相当于 git branch 后跟 git checkout )
恢复工作区文件:git checkout -- (注意:这里使用 -- 是为了避免与分支名冲突)
- 远程仓库操作
- git remote
添加远程仓库:git remote add
查看远程仓库信息:git remote -v(显示远程仓库的 URL)
删除远程仓库:git remote remove (Git 2.0 以前的版本使用 git remote rm)
修改远程仓库 URL:git remote set-url - git fetch
从远程仓库拉取最新变更(但不合并到当前分支):git fetch - git pull
从远程仓库拉取最新变更并合并到当前分支:git pull (如果远程分支与本地分支同名且已设置追踪,可省略 ) - git push
将本地分支的变更推送到远程仓库:git push
强制推送(慎用):git push -f 或 git push --force
- 提交历史操作
- git reset
撤销提交并将文件更改放回到暂存区(软重置):git reset --soft
撤销提交并将文件更改放回到工作目录(混合重置):git reset --mixed 或 git reset (默认选项)
撤销提交并丢弃所有更改(硬重置):git reset --hard - git revert
创建一个新的提交来撤销指定提交的更改:git revert - git cherry-pick
选择并应用某个提交的更改到当前分支:git cherry-pick
- 其他常用命令
- git stash
暂存当前工作区的修改,以便稍后恢复:git stash
查看所有暂存的修改:git stash list
恢复暂存的修改并删除记录:git stash pop
删除暂存的修改(不恢复):git stash drop - git clean
删除未跟踪的文件(慎用):git clean -f(强制删除)
显示将要删除的文件但不实际删除:git clean -n - git grep
在仓库中搜索文本:git grep - git reflog
查看引用日志,用于恢复误删除的提交或分支:git reflog - git config
查看或配置 Git 的设置:git config --list(查看所有配置),git config --global user.name ""(设置全局用户名)等