什么是git

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git和GitHub和Gitlab有什么区别

后两个都是基于Git和Web开发的Git远程仓库。
GitHub是用于公有开源项目,或者个人私有项目。由于GitHub共有项目需要开源,而大部分企业代码都不是开源,因此需要自己搭建Git仓库,这时候就需要使用GitLab了。
GitLab支持你自己搭建私有Git远程仓库,大部分公司会在内网搭建专门的GitLab服务。

Git简单入门

https://www.runoob.com/manual/git-guide/

Git基本工作流程

image-1670983184102

Git基础分区

Git分为三部分:工作区,暂存区,版本库。
git-space

Git命令

设置提交代码用户信息

# 设置名字
git config --global user.name ‘name’
# 设置用户邮箱
git config --global user.email [email protected]

基本命令

创建仓库

git init [仓库名]

如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

# 把当前目录下的所有.c文件添加到仓库
git add *.c
# 把当前目录下的README文件添加到仓库
git add README
# commit 提交,Windows需要用"",linux和git bash用‘’
git commit -m '初始化项目版本'

克隆仓库

git clone <git仓库> [<本地目录>]
# 比如克隆Ruby语言的Git代码仓库,名字是克隆下来后的项目名
git clone git://github.com/schacon/grit.git [名字]

提交修改

# 添加到暂存区
git add
# 查看仓库当前状态,-s简短输出
git status [-s]
# 比较暂存区和工作区的差异
git diff
# 提交暂存区到本地仓库,-a无需add直接提交,-m添加备注信息
git commit [-a -m message]
# 把文件从暂存区和工作区中删除
git rm
# 移动或者重命名工作区文件
git mv

回退版本

# 回退版本
git reset [--soft | --mixed | --hard] [HEAD]
# 回退所有内容到上一个版本  
git reset HEAD^        
# 回退 hello.php 文件的版本到上一个版本
git reset HEAD^ hello.php   
# 回退到指定版本
git  reset  052e    

HEAD 说明:
HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本
以此类推…

可以使用 ~数字表示
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本
以此类推…

https://www.runoob.com/git/git-basic-operations.html

远程仓库

# 远程仓库操作
git remote
# 从远程仓库获取代码库
git fetch
# 下载远程远程代码并合并
git pull
# 上传远程代码并合并
git push

分支管理

分支是多人并行开发必备的,每个人都可以在一个不同分支开发,最后合并分支。

创建分支

git branch (branchname)

切换分支

git branch (branchname)

合并分支

git merge

删除分支

git branch -d (branchname)

合并冲突

当两个branch中同一文件内容不一致时,就会产生冲突,会出现这一类的提示
CONFLICT (content): Merge conflict in runoob.php
需要手动修改文件,使用 git diff 查看冲突,修改完冲突代码后,使用git add告诉Git文件冲突已经解决。

参考资料

菜鸟git教程:https://www.runoob.com/git/git-tutorial.html
Git命令手册:https://www.runoob.com/manual/github-git-cheat-sheet.pdf

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟