0
点赞
收藏
分享

微信扫一扫

项目开发必备git操作


背景知识

教程

工作流程

项目开发必备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. 学习 git 小游戏:https://learngitbranching.js.org/?locale=zh_CN
  2. 搞懂 rebase:https://zhuanlan.zhihu.com/p/47905032


举报

相关推荐

0 条评论