项目开发必备git操作

背景知识

教程

工作流程

在这里插入图片描述

常用操作

常用命令

工作区准备

从远程克隆项目: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

此处仅罗列个人遇到的问题,欢迎补充~

  1. 如果不小心提交了不需要提交的文件,如果在不增加 commit 次数的情况下去除不需要的文件。
    参考:部署流程—上线篇 和 https://www2.zhihu.com/question/281440343。

    git reset HEAD^ -- bar.txt
    git commit --amend --no-edit
    

参考资料

  1. https://blog.csdn.net/sxf1061700625/article/details/116643786
  2. 学习 git 小游戏:https://learngitbranching.js.org/?locale=zh_CN
  3. 搞懂 rebase:https://zhuanlan.zhihu.com/p/47905032
  4. git 常用命令:https://blog.csdn.net/sxf1061700625/article/details/116643786
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力不熬夜的小喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值