Linux下Git使用
1. git的安装
sudo apt install git
安装完,使用git --version
查看git版本
2. 配置git
git config --global user.name "Your Name" ##配置用户
git config --global user.email email@example.com ##配置邮箱
git config --global --list ##查看配置信息
## --global 全局配置,所有仓库生效,不加就只对当前用户有效
## --system 系统配置,对所有用户生效
3. 新建版本库
git init
4. 工作区域与文件状态


5. 添加和提交文件
git init ##创建仓库
git status ##查看仓库的状态
git add ##添加到暂存库
git commit ##提交
git rm --cached <file>... ##将文件从暂存区中去除
git log ##查看提交记录
git ls-files ##查看暂存区的文件
git commit -a -m " " #实现添加和提交两个步骤
3. 回退版本
git reset --soft
git reset --hard
git reset --mixed

git reset HEAD^ ##默认为mixed,回退一个版本
HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本
执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存
误操作之后
git reflog ##回溯日志
git reset --hard 版本号 ##回退
6. 查看差异

git diff #默认比较工作区和暂存区之间的差异
git diff HEAD #比较工作区和版本库之间的差异
git diff --cached #比较暂存区和版本库之间的区别
git diff 版本号 版本号 #比较两个版本之间的差异
git diff HEAD~ HEAD #如回退版本

7. 删除文件
方法1:先删除本地文件,再提交
rm -rf 3.txt ##删除本地中的文件
git add . ##删除暂存区中的文件
git commit -m 'deleted 3.txt' ##删除工作区文件
方法2
git rm 2.txt ##删除本地和暂存区中文件
git commit -m 'deleted 2.txt' ##删除工作区文件

8. 忽略文件

echo "*.log" > .gitignore ##表示忽略所有日志文件

9. 远程仓库github
注册github账号,创建仓库
10. ssh配置和克隆仓库
创建ssh密钥
cd ~
cd .ssh #如果显示文件不存在,就之间执行以下命令
ssh-keygen -t rsa -b 4096 -C "xxx@email.com" #直接enter,如果是第二次执行,记得更改文件名,不然会覆盖之前的id_rsa文件,且不可逆

执行之前的命令会生成以下两个文件,有.pub的是公钥文件,没有的是私钥文件,复制公钥文件到github的Settings里的ssh配置
如果是第一次配置就配置完了,如果是第二次,更改了文件名的,就需要新建一个config文件,内容为

意思是:当我们在访问github.com这个网站的时候。使用的是test这个文件里的密钥
git clone git@github.com:xxx.git ##克隆新建的远程仓库

git push ##将本地文件推送到远程仓库
11. 关联本地仓库和远程仓库
-
本地无仓库
echo "# fist-repo" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:xxx.git
git push -u origin main -
本地已经有仓库
git remote add origin git@github.com:xxx.git ##添加一个远程仓库
git branch -M main ##指定分支的名称为main
git push -u origin main ##把本地的main分支与远程的orgin main分支关联git remote -v ##查看本地仓库对应的远程仓库别名


12. 分支
git branch #查看分支
git branch dev #新建分支dev
git checkout dev #切换到分支dev(有风险,有时会用来恢复文件)
git switch main #切换到分支main
git merge dev #将要被合并的分支(dev)合并到当前分支(main)
git log --graph --oneline --decorate --all ##查看分支情况
git branch -d dev #删除分支(已经合并)
git branch -D dev #删除分支(未合并,强行删除)

13. 回退和rebase



14. 分支管理和工作流模型
- git flow模型



- github flow模型

