项目开发必备git操作
个人仓库,从develop fork的开发分支,开发人员确保功能完整、可评审后,可发起MR合并到develop,合并后删除;项目名:项目发布分支。项目经过PV评审后,从develop创建,以供后续项目运维分支,后续所有该项目的软件从此分支发布;仓库创建时,默认创建了master分支,master分支的每一个版本都必须是可发布的;如果不小心提交了不需要提交的文件,如果在不增加 commit 次数的情
背景知识
教程
工作流程
常用操作
常用命令
工作区准备
从远程克隆项目:git clone git@kqy/test.git
选择分支
查看远程地址:git remote -v
查看所有远程分支:git branch -r
查看所有本地分支:git branch -a
新建本地分支:git branch xxx
切换本地分支:git checkout xxx
修改本地分支名称:git branch -m oldName newName
新建本地分支并切换到本地分支:git checkout -b xxx
创建远程分支:git push origin xxx
在克隆的资源上添加或修改文件
如果其他人修改了,你可以更新资源
暂存本地修改:git stash
本地与远程同步:git pull = git fetch + git merge FETCH_HEAD
还原并删除暂存的内容:git stash pop stash@{id}
删除暂存的内容:git stash drop stash@{id}
在提交前查看修改
查看修改的内容:git diff fileName
撤销文件的修改:git checkout fileName
添加文件到暂存区:git add fileName
取消修改到暂存区:git reset fileName
提交修改
查看修改的状态:git status
普通提交(本地):git commit -m "notes"
使用指定log文件的形式进行提交(本地):git ci -F cimsg.txt
给提交点打标签:git tag -a v1.4 hashValue
提交标签到远程:git push origin v1.4
在修改完成后,如果发现错误,可以撤回提交
查看提交记录:git log
查看修改记录:git show hashValue
撤销log修改1:git reset --hard hashValue(恢复到之前某个提交的版本,且那个版本之后提交的版本都不要了)
撤销log修改2:git revert hashValue(撤销之前的某一版本,保留该目标版本后面的版本)
在修改完成后,如果提交了不需要的文件可以撤回
git reset HEAD^ -- 文件名
git commit --amend --no-edit
合并/删除分支
dev分支合并到master分支
git checkout dev
git pull
git checkout master
git merge --no-ff dev(会保存分支历史)
git push -u origin master(会指定该主机为默认主机)
master分支更新到dev分支
- 常规操作
git checkout master
git pull
git checkout dev
git merge --no-ff master
git push -u origin dev
- rebase操作
绝不要在公共的分支上使用它, git rebase 会重写历史,一定只能在你自己的分支上使用它!!!
拉取远程分支master的内容同步到当前分支:git pull origin master --rebase
继续合并:git rebase --continue
遇到冲突需要手动解决
删除本地分支:git branch -d xxx
删除远程分支:git push origin --delete xxx
更新到远程
同步到最新状态:git pull origin master
提交到远程仓库:git push origin master
提交到远程仓库并新建远程仓库(两个仓库同名写一个就行):git push origin 本地:远程
分支说明
master
稳定的平台分支。仓库创建时,默认创建了master分支,master分支的每一个版本都必须是可发布的;
develop
经过评审的开发分支。从master创建,且上面的提交是经过MR评审后的;
项目名:项目发布分支。项目经过PV评审后,从develop创建,以供后续项目运维分支,后续所有该项目的软件从此分支发布;
dev_工程师
工程师开发临时分支。个人仓库,从develop fork的开发分支,开发人员确保功能完整、可评审后,可发起MR合并到develop,合并后删除;
Git使用——命令行方式
- 下载仓库
git clone git@xian/test.git
- 拉取最新内容
git pull origin master
- 查看分支
git branch -a
- 创建分支(可跳过)
git branch dev_kqy
- 切换分支(可跳过)
git checkout dev_kqy
- 修改工程内容
- 暂存本地修改的内容
git stash
- 切换到master分支
git checkout master
- 拉取最新内容
git pull origin master
- master分支更新到dev分支
git checkout dev_kqy
git merge --no-ff master
- 恢复暂存的内容
git stash pop
- 如果有冲突,就处理冲突
- 查看修改了文件的内容
git diff xxxfile
- 添加文件
git add xxxfile
- 查看修改状态
git status
- 创建cimsg.txt文件,写入log信息
- 使用指定的log文件,提交修改
git ci -F cimsg.txt
- 查看提交记录
git log
- 撤销commit
git reset --soft HEAD^ // HEAD 指向当前所在分支
–soft:不删除工作空间改动代码,撤销commit,不撤销git add .
–mixed:默认参数,不删除工作空间改动代码,撤销commit,并且撤销git add .
–hard: 删除工作空间改动代码,撤销commit,撤销git add . - 修改commit注释和补充添加文件
git commit --amend
- 推送分支到远程
git push origin dev_kqy
- 如果没有创建新分支,直接用的master分支,上传分支时要改名
git push origin master:dev_kqy
- 登录Gitlab后台,点击“创建合并请求”
- 按照提示,选择审核人,要合并的分支,以及
commit msg
,以及是否删除source branch
也就是我们的个人分支(建议勾选MR后自动删除source branch
分支) - 完成后,删除远程分支
git push origin --delete xxx
一些命令补充~
git commit -m 'xxxx' // 当前目录的文件快照,提交差异部分
git checkout -b branchName // 新建分支并切换到这个分支
git merge branchName // 将当前分支内容和branchName分支内容合并
git checkout main^ // main 的父节点(一个^表示一级,多个表示多级)
// HEAD 指向当前所在分支,直接 git checkout commit的hash值就可以指向当前所在的commit处
git branch -f main HEAD~3 // 强制指向 HEAD 的第 3 级父提交
git reset HEAD~1 // 类似于回退,但是对远程分支没有效果,回到当前分支的上一个commit
git cherry-pick C2 C4 // 更新提交记录 C2 C4 到当前分支
git rebase -i HEAD~4 // 产生图形界面
Q&A
此处仅罗列个人遇到的问题,欢迎补充~
-
如果不小心提交了不需要提交的文件,如果在不增加 commit 次数的情况下去除不需要的文件。
参考:部署流程—上线篇 和 https://www2.zhihu.com/question/281440343。git reset HEAD^ -- bar.txt git commit --amend --no-edit
参考资料
- https://blog.csdn.net/sxf1061700625/article/details/116643786
- 学习 git 小游戏:https://learngitbranching.js.org/?locale=zh_CN
- 搞懂 rebase:https://zhuanlan.zhihu.com/p/47905032
- git 常用命令:https://blog.csdn.net/sxf1061700625/article/details/116643786
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)