记录:Git
.gitignore文件
- 介绍
- 一个纯文本文件,包含了项目中所有指定的文件和文件夹的列表,这些文件和文件夹是 Git 应该忽略和不追踪的
- 一个 .gitignore 文件会被放在仓库的根目录下
- 使用文档
- /test/text.txt 或test/text.txt忽略一个位于根目录下的 test 目录中的 text.txt 文件
- text.txt忽略位于项目中任何地方的具有该特定名称的所有文件
- test/忽略位于你的项目中任何地方的名为 test 的目录
- test匹配任何带有这个名字的文件或目录
- img*忽略所有名字以 img 开头的文件和目录
- *.md忽略所有以特定文件扩展名结尾的文件
- !README.md排除一个本来会被忽略的文件(忽略了整个目录,这个模式就不起作用)
- 忽略以往仓库文件
- echo ".env" >> .gitignore为.gitignore添加.env文件
- git rm --cached .env从Git索引中删除
- git add .gitignore添加.gitignore进入暂存区
- git commit -m "update ignored files"提交.gitignore文件
git 删除命令
- git rm --cached
- --cached 选项使得 Git 仅从版本控制中移除文件
- 撤销更改
- git status查看工作目录和暂存区的状态
- git reset撤销对暂存区中文件的更改
- git reset
恢复某个特定文件的更改 - git checkout --
将指定文件恢复到最后一次提交时的状态 - Powershell:Remove-Item -Recurse -Force .git删除本地仓库
git初始化配置
- git config --list
- 可查看设置的user.name与user.email
- git config --global user.name "<用户名>"
- git config --global user.email"<电子邮件>"
邮箱选择
使用基于ID的GitHub-provided no-reply邮箱github->setting->email->Keep my email addresses private - cd 进入项目目录
- git init 初始化git仓库
- git add . 添加该文件夹下文件到git缓冲区
- git commit -m "提交说明" 提交缓冲区文件到本地仓库
- git diff <文件名> 查看differerce
- git status 查看仓库状态
git更新
查看版本: git --version 2.17.1之后:git update-git-for-windows 2.17.1之前:git update
git版本回退
- git log 查看历史版本
- git log --pretty=oneline --abbrev-commit --graph
- --pretty=oneline提交显示为一行,<哈希值> <信息>
- --abbrev-commit缩短显示的哈希值
- --graph显示分支图
- git reset --hard HEAD^ 回退到上一个版本
- git reset --hard 4b7afa6bb7ad775d239e 回退到指定版本
- hard 已提交状态 soft 未提交状态 mixed 已添加但未提交状态
- 注:回退到往期版本,执行git log将无法现版本之后的日志,如需取消回退,可以在term中找到上次执行git log显示的commit id
git管理修改
- git diff HEAD -- <文件名> 查看未提交文件与版本库中的difference
- 注:在未提交之前,add多次同一文件,结果覆盖
撤销修改
- git checkout -- <文件名> 撤销修改
- 注:在为add之前,回退到版本库状态,add之后,回退到add时缓存区最新最近一次add状态
- git reset HEAD <文件名> 撤销缓存区
删除文件
- 先删除本地文件
- git rm <文件名> git add <文件名> 添加修改,效果一样
- commit 提交修改到版本库
- git checkout -- <文件名> 撤销删除
- 注:git checkout 使用版本库里版本替代工作区版本
远程仓库
- 生成本地SSH密钥
ssh-keygen -t rsa -C "your@email.com"
有三次提问
- 密钥生成目录地址
- 使用密钥密码
- 确认密码注:可Enter跳过设置,若设置密码,使用git指令使会提示输入密码
- .ssh目录,id_rsa为私钥,id_rsa.pub为公钥
- github仓库
- Setting -> SSH and GPG keys -> New SSH key ->title不影响,types:Authentication keys,输入公钥
- Creat new repository
- 已有本地仓库
- git remote add origin git@github.com:GitHub名称/仓库名.git建立本地仓库与github远程仓库关联,即远程仓库别名origin
- git push -u origin master推送并建立master分支与origin仓库的关联,即master分支默认推送到origin
- 克隆远程仓库
- git clone git@github.com:GitHub名称/仓库名.git
- 已有本地仓库
- 删除远程仓库
- git remote -v可查看远程库信息,fetch:拉取地址 push:推送地址
- git remote rm 别名解除本地仓库与远程库关联
分支管理
- git branch查看分支
- git checkout -b <分支>创建并切换一个分支
- git branch <分支>创建分支
- git checkout <分支>切换分支
- git switch -c <分支>switch命令替换checkout
- git merge <分支>合并分支到当前分支
- git branch -d <分支>删除分支
- git branch -D <分支>未合并的分支,需使用强制删除,-D
冲突处理
-
在dev分支上修改readme.txt文件提交,切换到main分支上修改readme.txt提交,此时合并dev到main会出现冲突,git会将冲突内容标记在文件内,主动确认修改readme.txt文件后,再次add,commit即可
- git log可查看分支合并信息
- git log --graph分支合并图
合并策略
- git merge <分支>合并记录为一条直线
- git merge --no-ff -m "" <分支>合并记录有分支,保留分支
stash
- git stash清空工作区,备份一份数据
- git stash list可查看备份
- git stash apply 'stash@{ }'恢复指定备份
- git stash pop 'stash@{ }'恢复并删除指定备份,有冲突则保留
- git stash drop 'stash@{ }'删除指定备份
- git cherry-pick <提交>合并指定提交到当前分支
多人协作
- 分支会与远程库分支关联
- git push <别名> <本地分支> 即可推送到远程库分支
rebase
- git checkout <当前分支>
- git rebase <目标分支>将提交重新提交到目标分支
标签管理
- -a创建一个带注释的标签
- -m注释信息
参与github开源项目指南
gitee使用参考github