Git
git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。
简介
时间轴
- 2002年,林纳斯·托瓦兹决定使用BitKeeper作为Linux内核主要的版本控制系统用以维护代码。
- 2005年,Andrew Tridgell违反的BitKeeper使用原则,进行逆向工程,导致无偿使用BitKeeper的许可被收回。 林纳斯·托瓦兹决定自行开发版本控制系统替代BitKeeper,以十天的时间编写出git第一个版本。
- 2005年07月11日,发布git 0.99 版
- 2005年12月21日,发布git 1.0 版
- 2014年05年28日,发布git 2.0 版
- 2020年03月23日,发布git 2.26 版
仓库托管服务
很多公司提供了Git仓库的托管服务。
名称 | 公司 | 描述 |
---|---|---|
GitHub | 微软 | 提供付费账户和免费账户,都可以建立公开或私有的代码仓。。截止2023年,Github是世界上最大的代码托管网站和开源社区。 |
CODING | 腾讯 | 提供付费账户和免费账户 |
GitLab | GitLab | |
Gitee | OSCHINA |
安装
基本知识
基本原理
了解更多 >> 《Pro Git》 中文版V2:起步-Git-是什么?
.git 目录
所有git工作目录下都有个.git
目录,该目录包含几乎所有git操作和数据内容。当使用git init
初始化目录会自动生成该文件夹。
名称 | 描述 |
---|---|
config | 该项目的特有配置, |
Git 命令
设置与配置
命令 | 描述 | 示例 |
---|---|---|
了解更多 >> Git》 中文版V2:附录 C: Git 命令 - 设置与配置
创建和获取项目
命令 | 描述 | 示例 |
---|---|---|
git init | 初始化一个Git仓库 | git init myproject |
git clone | 克隆一个Git仓库到本地 | git clone https://github.com/git/git.git |
快照
命令 | 描述 | 示例 |
---|---|---|
git add | 添加文件到暂存区 | git add README.md git add .
|
git commit | 提交更新到本地仓库 | git commit -m "Update README"
|
git status | 查看文件状态 | git status |
git diff | 比较工作区和暂存区差异 | git diff |
git reset | 重置当前HEAD到指定状态 | git reset --hard HEAD~1 |
git rm | 从暂存区和工作区删除文件 | git rm README.md |
git mv | 移动或重命名文件、目录 | git mv file.txt file2.txt |
git clean | 删除工作区未跟踪文件 | git clean -df |
了解更多 >> Git》 中文版V2:附录 C: Git 命令 - 快照基础
分支
命令 | 描述 | 示例 |
---|---|---|
git branch | 列出/创建/删除分支 | git branch 列出所有分支 git branch -v git branch dev 创建名称为dev分支
|
git checkout | 切换分支,或者检出内容到工作目录。 | git checkout dev 切换到dev分支
|
git log | 查看提交历史记录 | git log git log --oneline
|
git tag | 打标签,创建、列出、删除标签。 | git tag 列出标签 git tag -l "v2.3.5*" 列出v2.3.5开头标签
|
git merge | 合并一个或者多个分支 | |
git mergetool | 解决合并冲突 | |
git stash | 暂存当前工作目录状态 |
了解更多 >> Git》 中文版V2:附录 C: Git 命令 - 分支与合并
设置
Linux终端显示当前Git分支
进入用户的Home目录,编辑.bashrc文件
cd ~
vim .bashrc
将下面代码加入.bashrc文件末尾,并保存:
function git_branch {
branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`"
if [ "${branch}" != "" ];then
if [ "${branch}" = "(no branch)" ];then
branch="(`git rev-parse --short HEAD`...)"
fi
echo " ($branch)"
fi
}
export PS1='\u@\h \[\033[01;36m\]\W\[\033[01;32m\]$(git_branch)\[\033[00m\] \$ '
保存并退出,执行加载命令
source ./.bashrc