GIT学习笔记(代码提交流程)

原创
2020/04/16 22:00
阅读数 431

Git作为流行的代码版本控制系统可以有效地提高多个开发人员的同步代码编写和管理。但是为了提高代码的合并效率,应该遵照一定的流程来提交代码。这篇文章就简单介绍代码提交流程 和每个流程中的一些回退操作。

一、概念

首先为了更好的理解本篇文章,我们先通过下面的图了解一下git的工作流中的一些基本概念。

你的本地仓库由git维护的三棵“树”组成。

  1. 工作目录(wirking directory),也就是你本地的代码目录,它持有实际的文件;
  2. 缓存区(Index),它像是缓存区域,临时保存你的代码改动;
  3. HEAD区域,指向你最近一次提交代码后的结果。

二、操作流程

在编写代码的时候不应该在master或者delevop 分支中直接开发,应该根据每个issue来创建一个feature分支来提交该功能点相关的代码,然后在将feature分支中的代码合并到master分支或者develop分支当中去,这样做的好处有:

  1. 只要你的分支在,代码就不会丢失。
  2. 方便控制issue在版本中的发布顺序。假如你写改了两个issue,都修改到了master分支,但是接到通知说下个版本只需要issue A的需求,你该怎么办?
  3. 好处还有很多,欢迎补充。。。

下面就来看下提交代码的步骤应该是什么样子的。

  • step1

git checkout -b feature_a       //创建分支并切换到该分支

注:命令执行前确保master分支已经是最新代码。

我们先使用  git branch -a 命令查看所有分支情况。

再使用 git checkout -b feature_a 命令创建新的功能分支feature_a,再使用  git branch -a 命令查看所有分支情况,发现已经创建了新的分支feature_a并且切换到新创建的分支。

修改完了代码之后可以通过 git status查看修改的文件和文件当前的状态

从图片中可以看到红色字体的修改文件列表,红色表示当前的修改的代码在你的 工作目录(wirking directory)。

回退操作:

回退工作目录代码为初始状态

git checkout README.md

这里的代码变更如果还有可能有用,建议使用stash命令,将代码缓存起来,该命令会将工作目录和缓存区的代码变更全部进行缓存,然后将工作目录和head区同步。建议参考 第四章-常用指令

  • step2

git add .             //只提交新增和修改的
git add -u            //只提交修改的,删除的
git add -a            //提交所有的

根据需求使用上面命令中的一个,将工作目录中代码修改提交到缓存区(Index),再使用git status 查看文件状态。

可以看到修改的文件列表变成了绿色,表示修改文件已经被提交到了缓存区(Index)。

回退操作:

代码变更 从缓存区 放回 工作目录

git reset head README.txt
  • step3

git commit -m 'content'

根据上看的指令将修改的代码提交到HEAD区域,并且可以看到具体修改的文件数量

回退操作:

代码变更从Head区 放回缓存区

1.step1
git log    //查询提交日志,获取commit_id

2.step2
git reset --soft commit_id  //回退并保留代码
git reset --hard commit_id  //回退并删除代码, 慎用代码无法找回
  • step4

git checkout master        //切换到master分支

使用git branch -a 可以看到已经切换到master分支了

  • step5

git pull                //更新master分支为最新代码
  • step6

git merge feature_a         //合并feature_a分支代码到当前分支

运行上面的指令,将feature_a分支下面的修改的代码合并到master分支当中,并且会返回修改的文件。

  • step7

git status        //查看状态

查看当前代码状态可以看到提示,当前master中有一个commit 没有提交到远程分支。

  • step8

git push            //推送到远程分支

使用上面的命令,将master 分支中HEAD区域的代码变更 提交到远程master分支当中去,并且会返回提示信息

  • step9

git branch -d fearute_a        //删除分支
git push origin --delete fearute_a //删除远程分支
git branch -d -r fearute_a        //删除远程分支

执行上面的指令,将功能分支删除(也可以保留,定时清理)

三、数据恢复

  • 文件(文件夹)被误删

1.代码变更在工作目录
git checkout -- [文件目录或者文件路径]

2.代码变更在缓存区
git reset head [文件目录或者文件路径]
再执行第一步

3.代码在head区
//获取需要会退的commit_id
git log
//回退到commit_id版本                    
git reset --soft commit_id
再执行第二步

4.终极大招
git reflog //可以查询到所有的git操作,并获取commit_id
git reset --soft commit_id       //会退到指定时间的代码

四、常用指令

  • 本地分支强制更新为远程分支(如果本地有修改,执行前备份本地代码)

     git fetch --all
     git reset --hard origin/master // 远程分支名称

  • 删除 untracked files
    git clean -f //删除文件
    git clean -fd //删除文件+目录
    git clean -xfd // gitignore 中的一起删除

    建议:前面加上-n先看看会删除那些文件
    git clean -nf 
    git clean -nfd 
    git clean -nxfd

https://my.oschina.net/kimyeongnam/blog/649457

持续更新。。

展开阅读全文
git
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部