Linux——Git

一、Git的概念

Git是一个分布式版本控制系统(DVCS),用于跟踪文本变更、协作开发和管理项目历史记录。以下是核心概念:

分布式版本控制:

与传统集中式版本控制(如SVN)不同,Git的每个用户都有完整的仓库副本(报告完整的历史记录),无需依赖中央服务器即可工作

仓库(Repository):

Git仓库是项目文件的存储空间,包含所有版本历史。分为本地仓库(用户计算机)和远程仓库(如github、GitLab)

提交(Commit):

提交是Git的基本操作单元,代表一次文件变更的快照。每次提交包含唯一哈希ID、作者信息、时间戳和变更描述

分支(Branch):

分支是独立开发线,允许在不影响主分支(如mian)的情况下进行实验或功能开发。分支可随时合并或删除

暂存区(Staging Area):

提交前,需将变更文件从工作区添加到暂存区(git add),再提交(git commit)。暂存区允许选择性提交部分变更

远程操作(Remote):

远程仓库是团队共享的代码库,通过git push上传本地变更,git pull同步他人变更。常见命令包括clone、fetch。

冲突解决(Conflict Resolution):

当多人修改同一文件时,Git可能提示冲突,需要手动合并冲突内容后重新提交

二、Git的优势

离线工作:本地仓库完整,无需网络既可以提交或查看历史

高效分支:创建/切换分支速度快,适合敏捷开发

数据完整性:通过SHA-1哈希校验文件内容,避免数据损坏

三、Git的四个区

**工作区:**用户直接编辑文件的目录,所有未暂存的更改都存在于工作区。文件状态可能是已被修改(modified)或者未跟踪(untracked)

**暂存区:**通过git add命令将工作区的更改保存到暂存区。暂存区是准备提交的变更的中间状态,允许用户选择性的提交部分修改

**本地仓库:**通过git commit将暂存区的变更永久保存到本地仓库。每次提交生成一个唯一的SHA-1哈希标识,包含文件快照、作品信息和提交信息

**远程仓库:**通过git push将本地仓库的变更同步到远程仓库(如Github、GitLab)。团队协作时,远程仓库作为中央代码库,可以通过git pull获取更新

四、Git常用命令

(1)基本命令

git init------初始化本地仓库(创建仓库)

git remote add origin 远程仓库地址(首次关联远程仓库)

git remote rm origin 只删本地的远程记录(删除仓库)

git add 文件名------添加文件到暂存区

git commit -m '版本信息描述'------从暂存区提交到本地仓库

git status------查看状态

git log------查看历史记录

git log --oneline------简洁查看历史记录

git reflog------查看对仓库的操作

git diff------比较本地仓库和工作区是否相同

git reset --hard HEAD^------回退到上一个版本

git reset --hard 序号------回退到任意版本

git checkout 文件名------放弃修改

git reset HEAD 文件名------从暂存区撤销(用旧版本覆盖缓存区,工作区仍是新版本)

git reset HEAD .------将所有文件从暂存区撤销

git绑定的邮箱和用户名:

git config --global user.email"你的邮箱"

git config --global user.name"你的用户名"
(2)分支命令

git branch 分支名------创建分支

git checkout 分支名------切换分支

git stash------保护现场,将现场隐藏(如果一个用户正在编写,而另一个要切换分支,则要进行现场保护)

git stash list------得到隐藏信息

git stash pop 信息代号------恢复现场(恢复储藏并删除记录

git stash apply ------恢复储藏,保留记录

git stash clear------清空所有储藏

git checkout -b分支名------创建并切换分支

git checkout -d 分支名------删除分支

git branch------查看当前在哪个分支上

注意:不同分支代码信息可能不一样
(3)远程信息的命令

git clone 仓库地址------克隆远程仓库

git push origin 分支名------推送到远程仓库

git pull------拉取远端更新