前言
前段时间笔者也是正式开始了实习生活,感受大厂项目风格的同时也学会了很多,于是趁着假期准备进行个的复盘(没错!我就周末卷🤥),本篇主要是 git 的相关知识,正式合作开发中发现原先的git三板斧远远不够,特来总结一下遇到的常用的 git 操作
git 工作流程
如图可知Git共存在四个工作区
workspace:工作区
平时进行开发改动的区域,存放项目代码的地方
index:暂存区
执行完 git add命令之后,工作区的文件会被移入暂存区,暂存区标记了当前工作区中那些内容是被Git管理的。
repository:本地仓库
git commit提交暂存区内容后存放数据的位置,内部有提交的所有版本数据
remote:远程仓库
用来托管代码的服务器,远程仓库的内容能够被其他开发者修改,本地仓库修改完代码后通过 git push命令同步代码到远程仓库。
git 操作
git add
将修改的代码添加到暂存区
git add .
添加当前所有修改的文件到暂存区
git add xxx
添加某个修改的文件至暂存区
git commit
提交暂存区的更改
git commit -m "your message"
提交更改并做备注
git commit -am "your message"
git add . && git commit -m "your message" 结合的快捷写法
git log
查看git commit提交记录
git remote
git remote update origin
本地更新远程仓库的分支提取信息
git stash
暂存,当你想要保存代码又不想 commit 留下提交记录时可以使用
git stash
保存未commit的代码
git stash save "your message"
保存并备注
git stash apply
应用最近的一次stash
git stash drop
删除最近的一次stash记录
git stash list
列出stash记录
git stash pop
应用最近的一次stash 并删除该记录
git stash clear
清除stash记录
git reset
回退版本
git reset [Head]
回退到对应版本,只保留工作区代码,回退commit index信息
git reset --hard [Head]
回退到对应版本,工作区代码回退到commit的版本,commit index也进行回退
git reset --soft [Head] (常用)
回退到对应版本,保留工作区代码和index, 只回退commit
如果之前已经 push 提交至远程,回退更改完后可使用 git push --force 推送至远程
git revert
回滚某次提交(新增一条commit提交记录)
git revert [Head]
git revert [Head] -m
merge 的 commit 提交
多人合作开发中推荐使用 git revert 因为git reset 会破坏之前的提交记录
git cherry
git cherry-pick xx
复制分支到当前
git push
git push <远程主机名> <本地分支名>:<远程分支名>
将本地分支提交到远程并合并(如果本地分支名与远程分支名一致可以省略 :)
## 例子
git push origin master
相当于 git push origin master:master
git push --force origin master
如果本地版本与远程版本有差异可以进行强制推送
git push origin --delete master
删除远程主机的分支
git merge
git merge <分支名>
合并分支代码到当前分支中 并进行提交
git rebase
git reabse和 git merge类似,主要是使得代码的提交更加简洁可读
如图可知和git merge一次性合并不同的是git reabse先逐步应用 master 分支的更改再进行分支的更改,git merge
报错解决流程
1. git rebase <分支名> 合并分支 2. git add . 将报错后修改数据放入暂存区 3. git rebase --continue 进入下一节点
git fetch
拉取远程的更改不进行git merge的操作,即不修改当前代码
git fetch <远程主机名><分支名>
获取远程仓库特定分支的更新
git fetch
获取远程仓库的所有分支
git pull
git fetch && git merge操作,拉取远程代码并合并
git pull <远程主机名> <本地分支名>:<远程分支名>
拉取远程代码并合并
git pull --rebase <远程主机名> <本地分支名>:<远程分支名>
用rebase方式进行 git pull操作
git branch
git branch
查看本地分支
git branch -r
查看本地和远程分支
git branch <branch-name>
新建本地分支
git branch -D <branch-nane>
删除本地分支
git branch -m <old-branch-name> <new-branch-name>
重新命名分支
git checkout
git checkout <分支名>
切换到相应分支
git checkout -b <分支名>
相当于 git branch && git checkout 创建分支并切换到该分支
git checkout -b <本地分支名> <远程分支名>
切换到远程分支(创建一个本地分支 本地分支的代码为远程分支的代码)
总结
非常感谢掘金社区大佬的文章(我在工作中是如何使用 git 的 - 掘金 (juejin.cn)),如有不足之处可以评论区指出,关于 git 的相关分享就到这里啦