git 学习心得

 白山头 白山头讲IC

这两天突然对github非常感兴趣。因为想弄个博客放些资料和文章上去。于是趁华为云搞活动,以超便宜的价格租了个ECS。

网页产生用的是hexo,写作完全用markdown的方式,这样也就不用在排版上花时间了。

而数据的更新是用过git的方式。

网上关于git入门的书籍很多,下载了一本《github入门与实践》,作者是日本大塚弘记。用了一晚上的时间,翻阅了前四章。感觉就是后悔啊—后悔没早点学git,可以少走不少弯路。

目前,在公司基本是流程,项目一把抓。copy虽然简单快捷。但是随着项目的增多,或者同一个项目,又有多个try run的版本。flow中的bug改了之后,很有可能又因为copy的不是最新的,或者是在一个try run版本改了,在另外的try run版本又需要进行同样的动作,无形中进行了很多重复劳动。

通过简单的实操,初步掌握了git的使用方法。

用git进行流程管理

这里,回忆一下git的基本操作,同时考虑一下我在项目中将怎么使用它。

首先,建立一个空的仓库。

假设目录为 /home/repo/flow

cd /home/repo/flow
git init --bare

这里面的—bare是一定不能省的。否则,建立的repository(仓库)就只能clone,而不能在clone的repository进行。这样也就违反我的初衷,因为我需要对不同的项目建立不同的子仓库的修改,都要能够push到这个总的仓库中来。

这里假设有两个项目需要同时进行, projectA, projectB。

对于项目A, 我们将环境通过clone的方式copy到本地。
git clone /home/repo/flow ProjectA

对于项目B, 我们将环境通过clone的方式copy到本地。
git clone /home/repo/flow ProjectB

现在ProjectA & ProjectB就有了我们所需要的的环境,包括目录结构,各种脚本。

现在,在ProjectA中,比如我们修改了某个文件,比如fileB,那么我只需要commit这一个文件的修改。

git edit fileB
git commit -m "message"
git push

那么在projectB中,就需要git pull, 把仓库中的更新更改到本地。

由于项目总有很多结果文件,log文件,这些文件就不要add了。保持仓库的干净。

另外,由于存在不同的process,metal stack的配置,我们可以对仓库创建不同的分支。

对不同配置的项目,就可以clone不同的分支。

如果一次修改导致错误,可以回溯到之前的任意时间点和分支。

最后,对于不同的分支,还可以进行merge。在merge的时候,就需要认真的比对。对于这些不同的配置,完全可以通过swich语句或者if else语句进行merge。

基本操作

  • git init —- 初始化仓库

  • git status —- 查看仓库状态

  • git add —- 向暂存区中添加文件

  • git commit —- 保存仓库的历史记录

  • git log —- 查看提交日志

  • git diff —- 查看更改前后的差别

分支操作

  • git branch —- 显示分支一览表

  • git checkout -b —- 创建、切换分支

  • git merge —- 合并分支

更改提交的操作

  • git reset —- 回溯历史版本

  • git commit —amend —- 修改提交信息

  • git rebase -i —- 压缩历史

推送至远程仓库

  • git remote add —- 添加远程仓库

  • git push — 推送

从远程仓库获取

  • git clone — 获取远程仓库

  • git pull —- 获取最新的远程仓库分支

原文地址:https://www.cnblogs.com/lelin/p/12699000.html