git操作笔记
2024年4月5日 · 1244 字
本地Git图解
基础操作
创建版本库
$ git init
把文件添加到仓库
$ git add <filename>
把文件提交到仓库
$ git commit -m <message>
git commit
只负责把暂存区的修改提交
查看仓库当前状态
$ git status
管理修改
查看对文件的修改(尚未添加和提交的文件)
$ git diff
$ git diff <filename>
$ git diff HEAD -- readme.txt // 查看工作区和版本库里面最新版本的区别
查看仓库所有提交记录
$ git log
$ git log --pretty=oneline // 更精简的记录
回退版本
$ git reset --hard HEAD^ // ^表示上一个版本
$ git reset --hard HEAD~100 // 回退前100个版本
$ git reset --hard 1094a // 回退到具体的版本号(没必要全写)
查看执行过的命令
$ git reflog
撤销修改
撤销工作区的修改
$ git checkout -- <filename> // 旧的指令
$ git restore <filename> // 新的指令√
撤销暂存区的修改
$ git checkout -- <filename> // 旧的指令:撤销将文件添加到暂存区后的所有修改
$ git reset HEAD <filename> // 旧的指令:从暂存区撤回到工作区
$ git restore --staged <filename> // 新的指令:从暂存区撤回到工作区
删除文件
$ git rm <filename> // 从版本库删除文件
$ git checkout -- <filename> // 在工作区一键还原到暂存区的版本
☁️远程仓库操作
1.添加ssh密钥,复制id_rsa.pub
到github
$ ssh-keygen -t rsa -C "youremail@example.com"
2.github创建仓库
关联远程仓库
$ git remote add origin git@github.com:<username>/<repository>.git
推送到远程仓库
$ git push -u origin master // -u可以把本地的master分支和远程的master分支关联起来
$ git push origin master // 推送到指定的远程仓库分支
$ git push // 推送到关联的远程仓库的分支
查看关联的远程仓库的信息
$ git remote -v
删除远程仓库绑定
$ git remote rm <name>
克隆远程仓库
$ git clone <link>
🚀多人协作
- 首先,可以试图用
git push origin <branch-name>
推送自己的修改; - 如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; - 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!
如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
分支管理
Git鼓励大量使用分支
使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
创建、合并、删除、查看分支
原仓库:
$ git checkout -b dev // 创建并切换到dev分支,等效于下面两条命令
$ git branch dev
$ git checkout dev
$ git switch -c dev // (新指令)创建并切换到dev分支,语义化更好
$ git switch master
做一些提交后:
$ git checkout master
$ git merge dev // 合并指定分支到当前分支
$ git branch -d dev // 删除分支
$ git branch -D <name> // 删除一个没有被合并过的分支
$ git branch // 查看所有分支
解决冲突
当遇到git merge出现冲突时,需要手动修改文件解决冲突,然后再提交
$ git log --graph // 查看分支合并图
禁用Fast forward
模式
$ git merge --no-ff -m "merge with no-ff" dev // 用普通模式合并,可以在提交历史上看到曾经合并过
团队开发的分支示意图:
暂存工作环境
$ git stash // 暂存工作环境
$ git stash pop // 回到工作环境
复制提交到当前分支
$ git cherry-pick <commit>
Rebase变基
$ git rebase // 把本地未push的分叉提交历史整理成直线
标签管理
标签就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起
创建、查看标签
$ git tag <tagname> <commit> // 根据提交创建标签,默认是HEAD
$ git tag -a <tagname> -m "blablabla..." // 创建标签时指定信息
$ git tag // 查看所有标签
$ git show <tagname> // 查看标签信息
操作标签
$ git push origin <tagname> // 推送一个本地标签;
$ git push origin --tags // 推送全部未推送过的本地标签;
$ git tag -d <tagname> // 删除一个本地标签;
$ git push origin :refs/tags/<tagname> // 删除一个远程标签。
Git配置
git显示颜色
$ git config --global color.ui true
配置别名
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.sw switch
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
$ git config --global alias.unstage 'reset HEAD'