文章目录
1.工作原理
- Workspace:工作区
- Index/Stage:暂存区
- Repository:仓库区
- Remote:远程仓库
2.基本语法
2.1 设置用户签名
- 设置本地用户名
git config --global user.name
- 设置本地邮箱
git config --global user.email
2.2工作区操作
- 初始化本地库
git init
- 查看本地库状态
git status
- 克隆仓库
git clone <URL>
2.3暂存区操作
- 添加到暂存区
git add <文件名>
- 将文件从暂存区和工作区中删除
git rm <filename>
2.4本地库操作
- 从暂存区添加到本地库
git commit -m "提交信息" <文件名>
- 同时将未提交到暂存区的文件先加入到暂存区中
git commit -m -a "提交信息" <文件名>
- **feat:**提交新功能
- fix:修复了bug
- docs:只修改了文档
- style:调整代码格式,未修改代码逻辑(比如修改空格、格式化、缺少分号等)
- refactor:代码重构,既没修复bug也没有添加新功能
- perf:性能优化,提高性能的代码更改
- test:添加或修改代码测试
- chore:对构建流程或辅助工具和依赖库(如文档生成等)的更改
2.5远程库操作
- 查看远程仓库
git remote
- 添加远程仓库
git remote add <仓库名> <URL>
- 修改远程仓库的名字
git remote rename <old name> <new name>
- 本地提交到远程仓库
git push <remote repository name> <local branch name>
// 如果远程分支名和本地分支不一样,需要使用以下格式
git push <remote repository name> <本地分支名:远端分支名>
- 如果不想提交的时候输入远程仓库名和分支名可以使用如下命令,以后的提交就可以直接用:git push
git push -u <reomte name> <local brach name>
- 创建并切换到远程分支
git checkout -b 本地分支名 远程仓库名/远程分支名
- git指定库URL
git remote set-url origin [url]
- 删除远程仓库
git remote remove <远程仓库名>
2.6分支操作
- 查看本地分支
git branch
- 创建分支
git branch <branch name> //创建本地分支,不关联远程分支
git checkout -b <本地分支名> origin/<远程分支名> //创建本地分支,关联远程分支
- 切换分支
git checkout <branch name>
- 合并分支到当前分支
git merge <merged branch name>
- 强制删除分支
git branch -d <branch name>
- 查看所有的远程分支
git branch -r
- 更改本地分支名称
git branch -m 旧名称 新名称
- git fetch操作
FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向目前已经从远程仓库取下来的分支的末端版本
git fetch 更新所有远程仓库包含分支的最新commit-id,将其记录到.git/FETCH_HEAD文件中
git fetch remote_repository 这将更新名称为remote_repository 的远程repository上的所有branch的最新commit-id,将其记录。
git fetch remote_repository remote_branch_name 这将更新名称为remote_repository 的远程repository上的分支: remote_branch_name
git fetch remote_repository remote_branch_name:local_branch_name 这将更新名称为remote_repository 的远程repository上的分支: remote_branch_name ,并在本地创建local_branch_name 本地分支保存远端分支的所有数据。
2.7存储操作
- 但是需要注意的是在Window PowelSheel中花括号在 PowerShell 中被认为是代码块执行标识符,若想正常使用,可用反引号 ` 进行转义
- 查看储藏
git stash list
- 存储当前代码
git stash push(简写git stash)
- 恢复修改:
git stash apply stash@`{储存的次数`} //取出指定存储,取出后需要删除存储
git stash pop //取出最近的存储
- 删除存储:
git stash drop stash@`{储存的次数`}
2.8撤销操作
- 撤销上次提交
git rest head~
- 撤销倒数第n次提交
git rest head~
- 撤销但是文件保留到暂存区中
git rest head~ --soft
- 文件中的内容也撤销
git rest head~ --hard
2.9变基操作
- 将当前分支的操作移动到分支b上
git rebase 分支b
- 交互式操作
git rebase -i 分支b
2.10回滚操作
- 回滚到某个版本
git reset --hard 日志号
git reset --hard HAED^ 回滚到上个版本
2.11标签
2.11.1创建标签
git tag 标签名称 为当前提交打标签
git tag -a 标签名称 -m 备注信息 为当前提交打注释标签
git tag -a 标签名称 -m 备注信息 commitID 为指定的提交创建注释标签
2.11.2查看标签
git tag 查看所有标签
git log --oneline 查看所有标签
git tag -l 'v1*' 列出匹配标签
git show 标签名称 显示特定标签的细节
2.11.3推送标签
git push 远程仓库名称 标签名1 标签名2 推送多个标签
git push origin --tags 推送所有biao'qian
2.11.4删除标签
git tag -d 标签名称 删除未提交的标签
git push origin -d tag 标签名称1 标签名称2 删除远程标签
3.注意
- git不能识别压缩文件
- 如何修改了信息导致代码无法提交,可以修改删除电脑中的windows凭证
4.问题清单
- 修改.gitignore文件失效
// 文件已被更新,需要取消文件跟踪
git rm -r --cached .
- Total 94 (delta 25), reused 22 (delta 6), pack-reused 0 error: RPC failed; curl 56 HTTP/2 stream 7 was reset send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly
// 放弃上一个版本的提交
git reset --soft HEAD~1
// 增加缓存
git config --global http.postBuffer 120000000
// 重新提交
git commit -m 'message'
git push origin <branch-name>