git常用命令
git常用命令
以下内容中<参数>都表示输入参数,输入时不需要加<>
本地仓库相关
在某一文件夹内初始化git
1 | git init |
把工作区文件添加至暂存区
1 | git add <文件名 或 通配符> |
把暂存区文件提交至本地仓库
1 | git commit -m "<对本次提交的描述>" #从暂存区提交 |
查看当前仓库的状态(分支、文件、文件状态)
1 | git status |
回退版本
<输入参数>有:
- —soft (保留工作区和暂存区仅回退版本)
- —hard (回退版本、工作区、暂存区)
- —mixed (回退功版本和暂存区,保留工作区)
1 | git reset <输入参数> |
查看差异
<输入参数>有:
- 无: 工作区和暂存区的差异; 如果存在merge冲突,将在下面显示
- HEAD:工作区和版本库的差异
- — cache或—staged:暂存区和版本库的差异
- <版本1 id> <版本2 id>:版本1和版本2之间的差异,这里可以用HEAD指代当前版本的id;HEAD~ 来指代上一个版本的id; HEAD~n 表示前n个版本的id;
- <分支名1> <分支名2>:分支1和分支2间的差异
1 | git diff <输入参数> |
查看提交记录
<参数>:
- —oneline, 这样只会显示哈希值的前几位。
- —graph —oneline —decorate -all 查看分支图形式的提交记录
1 | git log <参数> |
查看暂存区文件
1 | git ls-files |
删除文件
1 | git rm <文件名> #等效于删除某一文件后git add |
分支
- branch 命令
1 | git branch <分支名> #创建一个新的分支 |
- switch 命令(同checkout)
1 | git switch <分支名> #切换到某分支 |
- merge命令
1 | git merge <分支名> #把输入名字的分支合并到当前分支 |
当合并冲突出现时,需要手动修改冲突内容,并使用git add + commit进行提交来合并分支
- rebase命令
1 | git rebase <分支名> #将<分支名>上由共同祖先到当前HEAD的所有提交记录,移动到当前分支的分支树上(直接变基在当前分支HEAD的顶上) |
远程仓库相关
克隆仓库
1 | git clone <仓库地址> |
设置远程仓库
<输入参数>:
- add <仓库别名,通常origin> <仓库地址>: 添加远程仓库
- -v :查看本地仓库对应的远程仓库的别名和地址
- rm <仓库别名>:删除远程仓库
1 | git remote <输入参数> |
设置远程仓库和本地仓库的分支映射关系
1 | git branch --set-upstream <本地分支> <远程仓库名>/<远程分支> #将本地分支映射到远程主机的远程分支 |
拉取仓库
pull
<输入参数>:
<远程主机名> <远程分支>:<本地分支>: 将远程主机上的远程分支取回,并与本地分支合并
<远程主机名> <远程分支>: 将远程主机上的远程分支取回,并与当前的本地分支合并
如果当前分支已经被设置了和远程分支的映射关系,则不需要输入参数
1 | git pull <输入参数> |
fetch
所有使用pull命令拉取的分支都会自动和本地分支合并,fetch则是先存在本地,等待人工merge合并
<输入参数>:
- <远程主机名> <远程分支>:<本地分支(一般新建tmp分支)>: 将远程主机上的远程分支取回到本地工作区,不合并,需要主动$merge
$
1 | git fetch <输入参数> |
上传仓库
1 | git push <远程仓库名> <本地分支名>:<远程分支名> #把本地分支推送至远程 |
git常用工作流
gitflow工作流模型
mian分支(核心分支):项目的可靠分支,可直接部署进生产环境,不允许直接修改,只能通过merge合并
主分支的版本号命名规则:Major Version(主要功能或者重大版本更新);Minor Version(新功能改进和更新,不会影响现有功能);Patch Version(一些bug修复)
hotfix分支:bug的热修复分支,一般从主分支中分离出来,修复完成后合并至main分支和各个开发分支
develop分支(核心分支):开发分支,
feature分支:功能分支,用于开发新的功能的分支,新功能在稳定后会合并进开发分支。
release分支:发布前测试和验证的分支,由开发分支分离,当预发布分支稳定后,merge到主分支和开发分支并删除release分支。当预发布分支发现问题时,直接在预发布分支内进行修改。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 風!