Git的基本操作
Git 介绍和基本使用命令
1. git 基本介绍
Git是一款分布式源代码管理工具(版本控制工具) ,可以有效、高速地处理从很小到非常大的项目版本管理
。Git具有版本控制、分支管理、远程仓库、代码合并、代码回滚、代码比较和代码托管平台等七个主要功能。Git 官网:https://git-scm.com/
2. Git 安装
# ubuntu 安装
sudo apt update
sudo apt install git# 其它系统可以去官网下载包安装
3. Git 初始化
# 给git配置用户名
git config --global user.name 'wenjtop'
git config --global user.email "1007131354.@qq.com"
# --global 全局信息,所有仓库都生效。不加只对当前仓库生效。
# --system 系统配置,所有用户都生效。很少使用。git config --global credential store # 存储配置
git config --global --list # 查看当前仓库配置信息
4. 新建仓库
新建的仓库相当于一个文件目录,这个文件目录由git管理,里面所有文件的增删改查都会被记录下来,可以追踪历史和还原版本。
mkdir myRepository
cd myRepository
git init [文件] # 方法一,本地建立一个仓库,会在文件下面生成.git文件
git clone 仓库的url # 方法二,远程克隆一个仓库
5. git的三个区域和文件状态
git的本地数据管理区区域分为三个区域:
- 工作区、工作目录,本地工作目录(Working Directory):.git所在的目录,自己电脑上能看见的目录。
- 暂存区(Staging Area/index):.git/index文件,临时存储区域,用于保存即将提交到Git仓库的修改内容。
- 本地仓库(Local Repository):.git/objects文件,通过git init创建的仓库,包含了完整的项目历史和版本信息。
ls # 查看工作区的内容
git ls-file # 查看暂存区的内容
文件的四种状态:
6. git添加和提交文件
git status # 查看仓库状态
git add <file> 或者 . 或者 *.txt # 跟踪修改的文件。.表示当前所有修改过的文件,*.txt表示所有.txt结尾的文件。
git rm --cached <file> # 取消文件add操作
git commit -m [message] # 提交暂存区到本地仓库中
git log # 查看提交记录和版本id
7. 代码回退到之前版本
git reset --soft 版本id # 回退之前某个版本,并且保留工作区和暂存区内容
git reset --hard 版本id # 回退之前某个版本,并且丢弃工作区和暂存区内容
git reset --mixed 版本id # 回退之前某个版本,并且保留工作区丢弃暂存区内容
git log # 查看版本id
git reflog
# 查看回退操作之前到版本id
git checkout -b 新分支名 提交id # 恢复到分支到指定版本上
8. 查看代码的差异
git diff file.txt # 只查看file.txt的差异# 查看工作区,暂存区和本地仓库之间
git diff # 查看工作区与暂存区之间的差异
git diff HEAD # 查看工作区与版本库之间的差异
git diff --cache # 查看暂存区与版本库之间的差异# 查看不同版本之间的差异
git diff 版本id1 版本id2 # 查看版本id1和版本id2的差异
git diff HEAD~ HEAD # 查看上一个版本和当前版本的差异,HEAD~和HEAD^都可以表示上一个版本,HEAD~3之前的第三个版本
# 查看不同分支之间的差异
git diff 分支名1 分支名2 # 查看分支名
1与分支名2之间的差异
9. 删除文件
方法一:
rm file.txt # 删除工作区
git add . # 提交到暂存区
git commit -m [message]方法二:
git rm file.txt # 直接删除工作区,暂存区
git commit -m [message]
10. 忽略提交的文件
创建 .gitignore 文件,把要忽略的文件名
写在里面,如忽略log、png、file.txt文件和tmp文件夹
。生效前提不能是已经被添加到版本库的文件 。
*.log
*.png
file.txt
tmp/
注意:如果添加的文件已经被归纳在系统文件中,需要在git数据库
中删除对于该文件的追踪。
git rm -r --cached .
11. 连接远程仓库
本地仓库和远程仓库是两个独立的仓库。使用git方式连接远程仓库,需要先配置ssh公钥的配置。
cd ~/.ssh
ssh-keygen -t rsa -b 4096 # 生成id_rsa私钥文件和id_rsa.pub公钥文件。
ssh-keygen -t rsa -C "wenjtop@gmail.com"
cat ~/.ssh/id_rsa.pub # 查看SSH keys粘贴到githup上SSH keys中
复制公要文件,粘贴复制到SSH keys中。
连接远程仓库
# 情况1,本地无仓库
echo "# RepositoryTest" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main # 对于当前分支重命名为main
git remote add origin git@github.com:wenjtop/RepositoryTest.git
git push -u origin main# 情况2,本地有仓库
git remote add origin git@github.com:wenjtop/RepositoryTest.git
git branch -M main
git push -u origin main# 参数说明 git@github.com:wenjtop/RepositoryTest.git 远程仓库地址
# branch -M main 指定main分支
# origin 表示原创仓库的别名,可修改
# push -u origin main 同步到远程main分支,并合并
# pull 把远程仓库内容拉取到本地,并合并
# git commit -a -m "first commit" # 可以同时执行add和commit操作
# git pull <远程主机名> <远程分支名>:<本地分支名> # 用于从远程获取代码并合并本地的版本
# git push <远程主机名> <本地分支名>:<远程分支名> # 用于从将本地的分支版本上传到远程并合并git remote -v # 查看远程仓库别名和地址
git checkout -b 分支名 # 切换分支名称
git fetch # 获取远程仓库的修改内容,手动合并
命令提供了一些用于查看、添加、重命名和删除远程仓库的功能
git remote
git remote -v # 显示所有远程仓库
git remote add origin https://github.com/user/repo.git # 添加远程版本库
git remote rename origin new-origin # 修改仓库名
git remote remove new-origin # 删除远程仓库
git remote set-url origin https://github.com/user/new-repo.git # 修改指定远程仓库的 URL
git remote show origin # 显示某个远程仓库的信息
12. 仓库分支
不同分支,可以由不同人开发,也可以是项目的不同版本。
git branch # 查看在哪个分支上
git branch 分支名 # 创建分支
git switch 新分支名 # 却换到新分支名上,新方法
git checkout -b 新分支名 # 却换到新分支名上,旧方法
git branch -d 分支名 # 删除以合并的分支,-D强制删除
git merge dev 分支名 # 当面分支为目标分支
,后面为需要合并的分支
13. 合并分支和解决冲突(同时修改两个文件的同一行代码)
方法1:
git status # 查看冲突文件列表
git diff # 查看冲突的具体内容# 在目标分支下查看冲突的文件,手工编辑,在合并和提交。
# git merge --abort # 终止合并方法2:
git switch dev1
git rebase dev2 # 把dev1分支的所有提交,都嫁接在dev2分支后,dev1可能会覆盖dev2git blame [选项] <文件路径> # 逐行显示指定文件的每一行代码是由谁在什么时候引入或修改的