服务器:Ubuntu

使用git前准备工作:

  下载git之前先更新:  apt-get update

  安装git:   apt-get install git

  创建本地仓库:  mkdir test

  git初始化:     cd test  git init  

  生成公钥和私钥:  ssh-keyge

  将公钥添加到github里。

git的使用

  分支操作: 

    克隆仓库:git clone   

    创建本地分支:git branch 分支名

    创建本地分支并切换到分支:git checkout -b 分支名

    根据远程仓库创建本地分支:git branch 分支名 origin/远程分支名

    切换分支:git checkout 分支名

    查看所有分支:git branch

    删除分支:git checkout -d 分支名

    拉取远程分支代码:git pull

    在当前分支合并XX分支:git merge 分支名

    将本地分支推送到远程:git push origin 远程分支名

  版本管理: 

    查看状态:git status 

    添加到暂存区:git add 文件/文件夹 

    放弃修改操作:git checkout --文件名 

    添加到本地分支:git commit "备注信息"

    查看历史版本:git log (想看简洁版的带上参数,--pretty=online)

    回退历史版本:git reset 版本号

    查看历史操作:git reflog

    查看文件的修改:git diff 文件名

    删除文件:git rm 文件名

git运用场景

  场景一:

    当你正在写代码的时候突然线上服务器出现了个bug,这时候你不得不赶快处理线上的bug。一般我们会将正在写的代码,git add, git commit 一下,再切换到bug分支解决bug。解决完成以后git commit bug分支的代码。在切换回来。除了这样的操作,我们还有一种可选方案:

    1.正在写东西,突然有bug需要解决。

      git stash    #将当前的代码放在一个新的临时区/暂存区。以免带入其他分支。

      git checkout bug    #切换到bug分支

      vim views.py       #修改代码,解决bug

      git add views.py    #添加修改内容到暂存区

      git commit "change_bug"  #提交代码到本地仓库

      git checkout master   #切换都master分支

      git merge bug      #将bug分支的修改后的代码合并到master上

      git push origin master  #将本地master分支的代码推到远程

      git checkout dev    #切换到修改代码前的分支(原来的代码在dev分支上写的)

      git status        #查看dev分支的状态,发现原来对代码的修改没有了(写了半天,没有保存,心里很慌有没有啊。。。)

      more readme       #查看更久远的操作,发现依然没有。(这是真的有点慌,甚至有点小绝望啊)   

      git stash list        #查看临时保存的文件列表(我擦,找到了,过山车般的体验)

      git stash apply      #恢复到上次保存的位置(终于找到你,还好我没放弃)

      git status        #查看状态,发现一切和好如初(这个世界完美了。可以继续愉快的写代码了)

    git stash的一些其他操作:

      git stash drop     #删除最久的那个使用了git stash 保存的临时状态

      git stash apply stash@{0}    #恢复到指定的那个临时状态

      git stash pop    #恢复并删除上一个临时状态

      (ps: 1.git stash apply 恢复后,stash内容并不会删除,需要使用git stash drop 来删除

          2.另一种方式是使用git stash pop, 删除的同时把stash的内容也删除了)

  场景二:

    多人合作开发,最后把所有人的代码合并到一起,然后测试并推到master中:

      git add *    git commit "success"      #将完成的代码添加到本地仓库,等待合并

      checkout maste    #切换到本地master分支

      git pull         #将远程master分支的代码下载到本地

      git merge dev     #将本地dev中开发的代码合并到master中(这时候发现有冲突。自己的代码和master里最新的代码有不一致的地方,不要慌,我和别人同时修改了原文代码导致的这种问题。下面需要进行手动合并。)

      git status         #查看文件状态,看都有哪些文件有冲突

      git diff views.py    #查看文件冲突的具体情况

      vim views.py      #手动修改文件

      git add views.py  git commit "change_merge"  #添加到本地仓库

      git push origin master    #推送到远程master分支

git全流程的更多相关文章

  1. 使用git整体流程

    一.git提交代码走meger请求的整体流程 工作中使用git推代码时,如果走merge请求,那么也就是说拉代码时拉公共代码库的代码,但是提交时需要先提交到自己的代码库,然后在gitlab上提交mer ...

  2. Git全解析之用起来先

    文章目录 1. Git全解析之用起来先 1.1. 先安装Git环境 1.2. 配置 1.3. 简单了解Git 1.3.1. Git对象模型 SHA 1.3.2. Git目录与工作目录 1.4. 可以开 ...

  3. Git全解析之远程仓库交互

    文章目录 1. Git全解析之远程仓库交互 1.1. 中央仓库的概念 1.2. 本地分支与远程分支 1.3. pull与fetch 1.4. 关于捐赠 Git全解析之远程仓库交互 中央仓库的概念 虽然 ...

  4. gitbook 入门教程之小白都能看懂的 Gitbook 插件开发全流程

    什么是插件 Gitbook 插件是扩展 GitBook 功能(电子书和网站)的最佳方式. 只要是 Gitbook 默认没有提供的功能,基于插件机制都可以自行扩展,是插件让 Gitbook 变得更加强大 ...

  5. 基于Jenkins的开发测试全流程持续集成实践

    今年一直在公司实践CI,本文将近半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续还会深入实践和引入Kubernetes进行容 ...

  6. 如何使用 CODING 实践 DevOps 全流程

    你好,欢迎使用 CODING!这份最佳实践将帮助你通过 CODING 研发管理系统来更好地实践 DevOps 流程. DevOps 的本质是打破各个部门之间的隔阂,打通企业的前中后台,推进跨部门协作. ...

  7. git 提交流程

    Git提交流程: 1. Menu remote > (拉取)fetch 2. 重新扫描(rescan) 3. 缓存改动(stage change) 4. 写注释后提交(commit) 5. Me ...

  8. github Pull Request合入全流程介绍

    图解全流程 详细步骤 1. fork仓库 2. clone fork仓库到本地 3. 关联upstream原仓库 在fork本地仓库输入下面命令进行关联: git remote add upstrea ...

  9. git详情、git工作流程、常用命令、忽略文件、分支操作、gitee远程仓库使用

    今日内容概要 git详情 git工作流程 git常用命令 过滤文件 分支操作 git远程仓库使用 可参照:https://www.cnblogs.com/liuqingzheng/p/15328319 ...

随机推荐

  1. fasd

    基本排序算法 冒泡排序 没什么可说的, 改进方法就是加一个标志位防止有序后重复遍历. 由于需要遍历两次, 所以时间复杂度O(N^2) 传送门 --> 冒泡排序 选择排序 外层从0开始默认oute ...

  2. 什么是4G模块 4G模块的工作原理及特点

    什么是4G模块 4G模块,也被叫做4G通信模块或4G DTU模块,他是物联网行业具有4G通信功能的一种产品,通过4G模块,我们可以实现工业设备数据通过无线4G网络传输到远端控制中心,并从控制中心通过4 ...

  3. Java swing实现酒店管理系统

    今天给大家提供一个由今天给大家提供一个由Java swing实现的酒店管理系统,数据库采用sqlserver,我会贴上部分代码,完整的代码请看文章最下方下载,下面看代码: 1.主框架代码: packa ...

  4. Java中的日期

    Date类(java.util.Date) 时间原点:1970年1月1日 8点0分0秒. 创建日期对象: package blog; import java.util.Date; public cla ...

  5. Firefox威武 尚译威武!

    有感于鹰文文档看起来麻烦,期待有一款即时翻译的工具,在windows上还可以,但是上班用的是ubuntu,所以就想到要找一个firefox插件,还真找到了,但是不是插件,是一个书签,那就是尚译!尚哥威 ...

  6. [MIT6.006] 4. Heaps and Heap Sort 堆,堆排序

    第4节课仍然是讲排序,但介绍的是一种很高效的堆排序. 在编程过程中,有时候会需要进行extrat_max的操作,即从一个数列里挨个抽取最大值并将其它从原数列中移除.而排序问题也可以看作是一个extra ...

  7. Java编码和字符集(详解)

    [1]什么是编码? [2]通过生活案例: [3]由权威机构形成的编码表才可以称之为:字符集 ASCII 英文字符集 用一个字节的7位表示 IOS8859-1 西欧字符集 用一个字节的8位表示 GB23 ...

  8. git连接gitlab下载项目代码

    1.安装git 2.鼠标右键git bash here 3.命令行界面输入生成公钥命令 ssh-keygen -t rsa -C'gitlab用户名' 然后一直按enter键下一步生成公钥即可' 4. ...

  9. MongoDB笔记2018.2.6

    MongoDB笔记2018.2.6 1.先简单接触下linux,大部分教程是在linux环境下的操作,要不然看不懂教程 2.找教程或视频 教程推荐菜鸟教程 学习MongDB前需要懂一定的Mysql语法 ...

  10. hashlib模块(摘要算法)

    hashlib(1) # hashlib模块 # 现在写登录认证的时候,需要保存用户名和密码,用户名和密码是保存在文件中,并且都是明文,一旦丢了就完蛋了.所以 # 可以用hashlib将密码转换成密文 ...