1 前言
Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小到大的项目。此处记录一下常用的git操作,以便日后查看或复制使用。
git在官网下载即可安装:https://git-scm.com/
如果想要命令行操作,请见下方推荐方法。
安卓端可以直接使用termux,参考:https://www.sfnote.com/android/d866.html
windows上建议使用WSL来安装使用git,参考官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/install
WSL的shell建议使用Oh-my-zsh,可以提供命令补全等功能,提升工作效率,具体方法参考:https://blog.csdn.net/lixbao/article/details/119145083
2 初始化操作
2.1 查看ohmyzsh插件关于git的命令别名(未使用ohmyzsh忽略此命令)
alias | grep git
2.2 建议先创建.gitignore文件,该文件用于确定哪些文件(私密文件或无用文件)不加入版本控制
vi .gitignore
2.3 以下是一个.gitignore文件示例
# 忽略测试文件夹,*表示匹配任意文件,必须带上*否则下面的保留重要文件不生效
test/*
# 但保留test文件夹中的重要文件
!test/important.txt
# python模块缓存忽略
python/models/__pycache__/
2.4 用户配置
git config --global init.defaultBranch main
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
2.5 初始化仓库
git init
2.6 查看配置
git config --list
3 常用本地操作
3.1 添加文件到暂存区
git add <file> # 添加单个文件
git add . # 添加当前目录下的所有文件, ga .
3.2 查看仓库状态
git status # gst
3.3 提交修改
git commit -m "描述信息" # 或者直接git commit会调用编辑器输入提交备注信息,这样方便写多行提交信息
3.4 查看提交日志
git log # 查看完整日志
git log --oneline # 每条日志显示为一行
git log --graph --oneline --all # 图形化显示提交历史
3.5 修改最新提交的描述信息
git commit --amend -m "新的描述信息"
3.6 查看当前文件变更
git diff <file_path> # 查看工作区和最新提交的文件差异
git diff <commit_hash or branch_name> -- <file_path> # 查看提交或者分支和工作区的文件差异
4 远程操作
4.1 github远程仓库ssh密钥配置
如果没有ssh公钥,用如下命令创建,一路回车即可:
ssh-keygen
然后查看公钥并复制内容:
cat ~/.ssh/id_rsa.pub
登录github网站在该网址添加ssh公钥:https://github.com/settings/keys
然后可以在github网站上手动创建仓库以便git进行远程连接,注意选择仓库是公开还是私密。
4.2 克隆远程仓库
git clone <repository_url>
4.3 添加远程仓库
git remote add origin <repository_url> # url格式为: git@github.com:2act/test.git
4.4 查看远程仓库
git remote -v
4.5 推送到远程仓库(进行本地commit后)
git push origin <branch_name>
4.6 拉取远程分支
git pull origin <branch_name>
4.7 获取远程更新
git fetch origin
更新远程分支信息到本地,但不会自动合并。
5 分支管理
5.1 创建新分支
git branch <branch_name>
5.2 切换分支
git checkout <branch_name>
5.3 创建并切换分支
git checkout -b <branch_name>
5.4 重命名分支
git branch -m <old_branch_name> <new_branch_name>
5.5 如果远程仓库已经有旧分支名称的记录,还需要进行以下操作:
git push origin --delete <old_branch_name>
git push origin <new_branch_name>
git branch --set-upstream-to=origin/<new_branch_name>
5.6 查看所有分支
git branch
5.7 合并分支
git checkout <target_branch>
git merge <source_branch>
5.8 删除分支
git branch -d <branch_name> # 删除已合并的分支
git branch -D <branch_name> # 强制删除未合并的分支
6 版本管理与历史版本切换
6.1 查看历史提交
git log
git log --oneline
6.2 切换到某个历史版本
git checkout <commit_hash>
commit_hash 是历史提交的哈希值。此操作会使工作区处于“分离头指针(detached HEAD)”状态。
6.3 从某个历史版本创建分支
git checkout -b <new_branch_name> <commit_hash>
创建一个新分支,从指定的历史版本开始编程。
6.4 回退到某个历史版本
git reset --hard <commit_hash>
将当前分支回退到某个历史版本,丢弃之后的更改,谨慎使用。
7 恢复与撤销
7.1 撤销工作区的修改
git checkout -- <file>
将某个文件恢复到暂存区或最新提交的状态。
7.2 撤销已暂存的文件
git reset HEAD <file>
将已暂存的文件撤回到工作区。
7.3 删除最后一次提交
git reset --soft HEAD~1 # 保留工作区和暂存区
git reset --mixed HEAD~1 # 保留工作区,清空暂存区
git reset --hard HEAD~1 # 清空工作区和暂存区
8 解决冲突
发生冲突后,Git 会标记冲突文件。
打开冲突文件,按照 <<<< 和 >>>> 标记手动编辑。
修改完毕后,重新添加文件到暂存区:
git add <file>
git commit -m "解决冲突"
9 忽略文件
9.1 刷新.gitignore
如果已被追踪的文件需要被忽略:
git rm -r --cached .
git add .
git commit -m "更新 .gitignore"
10 标签管理
10.1 创建标签
git tag <tag_name>
git tag -a <tag_name> -m "描述信息"
10.2 查看标签
git tag
10.3 推送标签到远程
git push origin <tag_name>
10.4 删除本地/远程标签
git tag -d <tag_name> # 删除本地标签
git push origin --delete <tag_name> # 删除远程标签
11 高级操作
11.1 Cherry-pick(挑选提交)
git cherry-pick <commit_hash>
将指定提交应用到当前分支。
11.2 Stash(暂存工作区)
git stash # 保存当前修改
git stash list # 查看所有存储的修改
git stash apply # 恢复最新的暂存
git stash drop # 删除暂存内容
git stash pop # 恢复最新暂存并删除它