如何使用Git管理你的代码

本篇文章主要讲解博主在工作中使用git的方式


  我曾经都是用svn管理代码的,然而阿里云的taocode突然提出将要逐步停止维护和进行下线的通知,并且推荐将代码转移到git托管平台,所以我决定追随时代潮流,放弃svn,拥抱git(被迫学习git QwQ)

  百度一下→git 教程→廖雪峰的官方网站-Git→开始学习

  我看完之后的感觉是,ok,git学完了,不就是什么add、commit、pull、push、branch、merge、checkout这些操作么,还是蛮简单的,廖雪峰老师讲的也很清楚,这些功能怎么用,以及我们为什么需要这个功能,一切都像看起来那么美好,当我把之前的代码转移到git上之后,各种各样的问题就来了。

  为什么我每次下载代码都要输密码?为什么我的项目导不进ide?为什么我pull不下来代码?为什么我push不到远程仓库?为什么我的代码冲突了?为什么我的项目网络图像那么乱?分支到底怎么用啊?等各种奇葩问题,踩坑真的是一种乐趣,本篇文章也不会在这里给你解释为什么会出现以上问题,我主要讲一些有趣的命令,以及我本人的工作流程。

默认你已经了解git的基础,基础命令,工作区、暂存区、本地仓库、远程仓库等概念。

Hint:

  1. 使用git bash,不推荐使用ide中集成的插件以及客户端等辅助工具(敲命令多高端~)
  2. 命令执行失败时,git会给你反馈,告诉你如何处理这种情况,请仔细阅读(全是英文看不懂怎么办 ctrl+insert复制出来,右转谷歌翻译)

    Git命令

gitk //这个命令是查看当前分支的log信息,如果加上 --all参数可以查看所有分支的log信息

git add . //将所有有改动的文件提交到暂存区,git commit . 同理  

git commit -am “注释” //一次性完成git addcommit操作  

git rebase [branch] //其中[branch]为分支名,这个命令的含义是将当前所在的分支演绎到[branch]分支上,避免出现git merge时的分叉现象  

git rebase -i head~n //其中n为数字,如果n为2,你会进入一个vim编辑界面,里面有提示,不同的字母代表不同的操作,比如你将最后一次提交的状态改为s,倒数第二次的提交使用p,那么你最后一次的提交就会与倒数第二次的提交合并为一个commit,并且注释还是倒数第二次的注释。如果我们让n为1的时候,再选择状态r,是不是就实现git commit –amend的功能了,又能少背一条命令了,开心(滑稽  

git revert [commit-id] //[commit-id]为版本号,反向修改日神仙,新建一个commit,用来撤销指定commit,我还没用过这个命令,大概是这个意思。  

git cherry-pick [commit-id] //[commit-id]为版本号,选择一个commit,合并进当前分支 

  工作流程

  • 下载代码(git clone xxx)导入项目这些步骤省略了,ide不同,导入方法不同
  • 假设远程仓库只有一条master分支
  • 我本地至少拥有一条自己的feature分支(不推到远程那种)
  • 在本地开发的时候,一般每完成一个小功能都会写好注释commit一次,并且都是commit到自己的feature分支上,如果有需要紧急修复的bug,就会从master分支再创建一个bug分支出来,在bug分支上解决bug。

  开发完成后进行提交的流程如下:

    Git checkout master //切换到master分支  

    Git pull //将本地代码更新  

    Git check outfeature //切换到feature分支  

    Git rebase master //将feature分支上的commit演绎到master分支上  

    Git check outmaster //切换到master分支  

    Git merge feature //将feature分支合并到master分支上  

    Git push //提交到远程仓库  

  按照一般情况以上工作流程是不会出现问题的,但是人生路上,总不会一帆风顺,例如在你push之前,狗蛋已经将他的代码push了,那么你再push就会产生冲突,这时就需要你根据git的提示与你的经验去解决这个问题了。什么?你没有pull直接push的?出现冲突了?看看git给你的解决方案吧,好好想一想如何把这个项目网络图弄成一根直线,不断的实践才能找到属于自己的工作模式,加油~

  每个人的使用方式可能不同,比如我的一个同学就喜欢在master分支上搞来搞去,貌似是直接使用git rebase操作将本地的提交演绎到远程的分支上,提交时项目网络图也很清晰,无merge现象,骚操作多的是,靠你来发掘了,希望也能分享给我~

  当你已经能够熟练使用git的时候,不妨回来再看看大佬们的教程,你会发现曾经的你根本没看懂(逃
  阮一峰的常用Git命令清单
  Git中文文档下载
欢迎您在文章下方评论,如果您有疑问,请联系我 QQ:1057956918,加好友时请备注来源

猜你喜欢

转载自blog.csdn.net/Ontheway0101/article/details/80679265