Git是一个开源的分布式版本控制系统,用于跟踪计算机文件的变化,尤其是源码的变化。它能够帮助多个开发者协作开发,记录每一次对代码的修改,并能够回溯到之前的状态,从而有效管理代码版本。
Git由Linus Torvalds在2005年创建,旨在取代当时使用的BitKeeper版本控制系统。它提供了高效、高度可扩展且灵活的服务,尤其适合处理大型项目。Git广泛应用于各种软件开发项目,并成为现代开发过程中的标准工具。
它用于在指定目录中初始化一个新的 Git 仓库。
git init
将更改的文件添加到暂存区。
git add
//指定具体文件添加在暂存区 git add . //全部文件添加到暂存区
将暂存区的更改提交到本地仓库,形成一个快照。
git commit -m "提交信息"
将本地的提交同步到远程仓库。
git push origin
从远程仓库获取更新,并合并到当前分支。
git pull origin
查看当前工作区和暂存区的状态。 如下图1-1所示。
git status
图1-1
从Git版本库中删除文件,但保留工作目录中的文件。如下图1-2所示。
git rm --cached
//清除指定具体文件的缓存 git rm -cached -r <文件夹名> //清除整个文件夹及其内容的缓存
图1-2
这个命令非常有用,尤其是在以下几种情况下:
git rm --cached
命令可以从版本库中删除文件,但保留工作目录中的文件,这样你就可以在本地继续使用该文件,而不会影响版本库中的记录。拉取暂存区文件 并将其替换成工作区文件,如下图1-3所示。
git checkout --
//此处的file可以为文件或者文件夹
图1-3
它用于比较当前工作目录中某个文件的未暂存变化与该文件在最新提交(HEAD)中的版本之间的差异。
git diff
git diff --cached
//比较暂存区的文件与最新提交之间的差异,用于查看即将提交的更改 git diff HEAD
//比较当前工作区的文件与最后一次提交的版本之间的差异 git diff
//比较两个特定提交之间文件的变化
版本比较:git diff
本质上调用 Git 所维护的对象数据库,比较当前工作目录中的文件与 Git 仓库中所记录的版本(最新提交)之间的差异。
区分状态:Git 通过对文件内容的逐行比较来产生差异报告。它使用了行算法来找到两者之间的增加、删除或更改的行。
输出格式:git diff
的输出通常采用统一格式(unified format),标记行的修改情况:
-
符号的表示被删除的行。+
符号的表示新增加的行。它可以显示当前分支的所有提交记录,包括每个提交的 SHA-1 哈希值、提交作者、日期和提交信息。
git log
git log --oneline //如果只想看到每次提交的简要信息,可以使用
--oneline
选项git log -5 //查看最近的 5 次提交
git log --author="Author Name" //查找某个作者的提交
git log
// 查看某个文件的修改历史 git log --graph --oneline --all // 使用
--graph
选项以图形方式展示分支和合并的提交
提交对象:Git 中的每次提交都是一个提交对象,包含了文件的快照、提交信息、作者信息与时间戳,以及指向父提交的指针(如果不是首次提交,则指向之前的提交)。
Git 数据库:git log
从 Git 的对象数据库中检索提交信息。它通过遍历当前分支的提交链来获取历史。
格式化展示:Git 提供了多种选项,允许用户指定输出格式,方便阅读和查找所需信息。默认情况下,git log
显示每个提交的 SHA-1 哈希、作者、日期和提交信息。
可以用于撤销提交、修改暂存区的状态或恢复工作目录中的文件。
git reset --soft HEAD~1 //仅移动 HEAD 指针,不影响暂存区和工作目录。适用于想撤销提交但保留更改的情况
git reset HEAD~1 //将 HEAD 移动到上一个提交,重置暂存区,保留工作目录中的更改
git reset --hard
//将 HEAD 移动到指定的提交,重置暂存区和工作目录 git reset --soft
// 直接使用一个特定的提交哈希
创建分支是一种常见的工作流程,能够帮助开发者并行开发不同的功能或修复问题,而不会影响主分支(通常是 main
或 master
)。
确保工作区干净:
git status
创建并切换到新分支:
git checkout -b feature/new-feature
在新分支上进行更改,添加文件并提交:
echo "New feature implementation" > feature.txt
git add feature.txt
git commit -m "提交"
切换回主分支:
git checkout main
合并新分支:
git merge feature/new-feature
删除已合并的分支(可选):
git branch -d feature/new-feature
用于临时保存当前工作进展的命令,便于在需要的时候恢复。这让开发者在需要切换分支或执行其他操作时,不必担心未完成的更改会影响当前分支。
# 暂存当前工作进展
git stash# 查看存储的更改
git stash list# 恢复最后存储的更改
git stash pop