GitHub是最先进的分布式版本控制工具,下面是我学习中总结的操作流程,仅供参考

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Git安装

下载git的windows版本并安装,不予详述(直接打开安装包,按默认的流程一步步进行即可,任意位置点击鼠标右键弹出git 字样的选项时即为安装成功)

安装成功后输入下面命令进行设置

$ git config --global user.name "你的git账号"

$ git config --global user.email "你注册git账号的邮箱"

Git操作:

创建版本库

  1. 选择一个地方创建空目录(所有目录名必须是英文的,中文的会出bug)
  2. 输入下列命令

$ mkdir learngit //learngit为仓库名,可以自己命名

$ cd learngit

$ pwd      //显示当前目录

$ git init  //将目录变为git管理的仓库

  1. 添加文件,在learngit文件夹下创建文件,输入下列命令

$ git add 文件名      //文件名是创建文件的名字

$ git commit -m "注释"//-m后面提交的是文档说明,这个必须要有,否则报错

修改版本库:

  1. 查看仓库状态:

$ git status

  1. 查看修改内容:

$ git diff 文件名

  1. 查看历次版本历史纪录

$ git log

  1. 回退上次版本

$ git reset --hard HEAD^

  1. 回退到任意一个版本

$ git reset --hard num //num 为要回退到某个版本的版本号,部分即可

  1. 查询历史命令

$ git reflog

  1. 查询工作区和版本库里面的最新版本的区别

$ git diff HEAD -- 文件名 //要查询文件的名字

  1. 放弃工作区文件的修改(此命令中的两个横杠很重要,不能少写)

$ git checkout -- 文件名 //放弃修改的文件名称

  1. 撤销暂存区文件的修改

$ git reset HEAD 文件名

Git工作时候实际上是工作区->暂存区(stage)->分支(master为git自动创建的分支),HEAD为指向master的一个指针。Git add实际上是将文件提交到了暂存区。Git commit是将暂存区的所有内容都提交到分支,可以先执行多个add,再使用一个commit提交。

如果直接将文件管理器中的文件删除或者使用rm命令删除,工作区和版本库的内容就会不一致,此时:

  1. 可以选择直接从版本库中删除文件

$ git rm 文件名

$ git commit

  1. 文件删除错误,这时可以从版本库里还原文件

$ git checkout -- 文件名

连接git网站:

  1. 创建SSH Key,在user目录下(用户主目录),查看是否有.SSH文件,并且查看其下面有无id_rsa(私钥,不能告诉别人)和id_rsa.pub(公钥,可以告诉别人)文件,如果没有可以运行命令创建

$ ssh-keygen -t rsa -C "邮箱名"

  1. 登陆GitHub网站,打开“SSH Key”页面,点击“new SSH”,输入任意名,粘贴公钥内容

有本地库后创建远程库:

  1. 登陆网站,点击“create a new repository”,创建新库,设置名称learngit,点击创建
  2. 将本地内容关联到远程库里面去

$ git remote add origin git@github.com:账户名/learngit.git

  1. 把本地库的内容推送到远程库上,

$ git push -u origin master

第一次推送时使用-u参数关联,后面推送时候就可以简化命令$ git push origin master

从远程库克隆库

  1. 登陆网站,假设已经创建了一个库gitskill
  2. 克隆库到本地

$ git clone git@github.com:账户名gitskill.git

$cd gitskill       //创建本地文件夹

$ls

创建与删除分支:

  1. 创建另一个分支dev,并将指针HEAD切换到另一个分支上去

$git checkout -b dev  //dev为另一个分支名,记住中间是一个横杠

-b表示创建并切换

  1. 查看所有分支

$ git brach

  1. 切换分支

$ git checkout master//切换回master分支

  1. 合并分支

$ git merge dev  //将dev分支合并到当前分支上来

  1. 删除分支

$ git branch -d dev  //删除dev分支

分支冲突:

当创建一个新分支并且做出修改后回到原分支再次修改文件,此时git无法将两个修改的文件进行快速合并,必须将某一个文件修改后或使其完全一致方可。查看分支合并情况:

$ git log --graph --pretty=oneline --abbrev-commit  //查看冲突分支的合并情况

No-ff模式(禁用fast forward模式)

Fast forward模式下合并分支会丢失分支信息,禁止后在执行合并分支操作时能从分支历史上看到分支信息。 禁用模式下执行合并命令:

$ git merge  --no-ff -m "注释"

储存工作状态:

在处理bug等必须暂时离开时,可以保存现在的工作状态

  1. 储存当前工作状态:

$ git stash   //存储当前分支

  1. 修复bug(假如在master中修复bug)

$ git checkout master    // 转到master分支

$ git checkout –b issue-101   //创建新的分支issue-101来修复bug

  1. 修复完成后:

$ git checkout master   //切换回master

$ git merge –no-ff –m “注释” issue-101 //修改完bug的分支合并到master中去,并保留痕迹

$ git branch –d issue-101   //删除临时分支

4.切换回原来的工作状态

$ git checkout dev

此时工作区是没有东西的,原来的stash内容被存在别的地方,可以用$ git stash list来查看。此时工作现场还在,此时可以执行:

$ git stash apply   // 恢复存储内容

$ git stash drop    // 删除储存的工作状态文件

或者一次恢复并删除工作状态文件:

$git stash pop

删除分支:

当分支创建完毕即将合并时,突然不使用这个分支了,要将其删除。此时使用强行删除命令(此时没有合并,不能使用git branch来删除分支):

$ git branch –D feature   //feature 是要删除的分支名字

多人协作:

  1. 查看远程库的信息

$ git remote

或者使用命令

$ git remove –v    //查看远程库更详细的内容

  1. 推送分支到公共库

$ git push origin 分支名   // origin是远程库的默认名称

注意:

l  Master 是主分支,需要时刻与远程库同步

l  Dev为开发分支,也需要同步

l  Bug 分支只用于本地修复bug,没必要推送

l  Feature 是新功能开发分支,这个取决于是否与他人合作开发

  1. 抓取分支,当开发者同时更新dev分支时,可以先抓取这个分支到本地,解决冲突后再上传

$ git branch –set-upstream dev origin/dev  //指定本地和远程库dev文件的链接

$ git pull                  //抓取网上的dev文件

创建标签:

为每一个分支创建一个版本号:

$ git branch    //查看分支

$ git checkout master   //转到需要加版本号的标签

$ git tag v1.0    //为分支创建版本号标签,v1.0为版本号

$ git tag      //查看所有版本号标签

$ git show tag    //查看所有版本号标签的详细信息

创建带有说明的标签:

$ git tag –a 版本号  -m “说明文字“

看版本号的说明文字

$ git show 版本号

操作标签:

删除标签:

$ git tag –d 版本号

推送标签到远程:

$ git push origin 版本号

推送所有标签名到远程:

$ git push origin –tags

如果标签已经推送到远程,可以先删除本地的,再 删除远程的

$ git tag –d 版本号  //  删除本地的

$ git push origin :refs/tags/版本号

GitHub 基本操作流程的更多相关文章

  1. git 操作遇到的问题与解决方法

    一.使用git在本地创建一个项目的过程,Git 上传本地文件到github $ makdir ~/hello-world //创建一个项目hello-world $ cd ~/hello-world ...

  2. 搜刮一些开源项目的APP

    iOS完整App资源收集 <iOS完整app资源收集>  <GitHub 上有哪些完整的 iOS-App 源码值得参考?> <GitHub 上有哪些完整的 iOS-App ...

  3. GitHub新手快速入门日常操作流程

    GitHub新手快速入门日常操作流程 1. 注册帐号 打开https://github.com/,填写注册信息并提交. 2. 登录帐号 打开https://github.com/login,输入注册的 ...

  4. Windows英文版GitHub客户端使用操作流程图文攻略教程现没中文版

    Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.作为一个程序员,我们需要掌握其用法. 作为开源代码库以及版本控制系统,Github目前拥有140 ...

  5. git 团队开发常用操作流程(适用于 gogs、gitlab、github)

    git 团队开发常用操作流程(适用于 gogs.gitlab.github) NO1 项目构建者 (1)在远程仓库创建仓库 (2)将伙伴添加到仓库合作者中(无先后要求) (2)cd 到项目将要存放项目 ...

  6. git和github新手快速操作流程

    git和github新手快速操作流程 本文主要介绍利用git版本控制将项目托管到远程仓库github上的一般性操作流程,为了给正在学习git的同学们一个小小的参考,以便更轻松的去深入学习git,本文所 ...

  7. GitHub 操作流程示例

    最新文章:Virson's Blog 参考文章: 博客园-Web前端开发,博客园-喻头快跑,GotGitHub 首先.通过github网站新建一个仓库,得到仓库地址 https://github.co ...

  8. Git客户端图文详解如何安装配置GitHub操作流程攻略

    收藏自 http://www.ihref.com/read-16377.html Git介绍 分布式 : Git版本控制系统是一个分布式的系统, 是用来保存工程源代码历史状态的命令行工具; 保存点 : ...

  9. GitHub for Windows客户端使用操作流程

    Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.作为一个程序员,我们需要掌握其用法. 作为开源代码库以及版本控制系统,Github目前拥有140 ...

随机推荐

  1. Galera 10.0.20 on CentOS 6.6

    Galera 10.0.20 on CentOS 6.6 0.使用场景 数据库软件:mariadb-galera-10.0.20-linux-x86_64.tar.gz 集群管理:galera-3-2 ...

  2. 查看数量linux下查看cpu物理个数和逻辑个数

    首先声明,我是一个菜鸟.一下文章中出现技术误导情况盖不负责 hadoop@chw-desktop3:~$ cat /proc/cpuinfo processor : 0 vendor_id : Gen ...

  3. Bump mapping的GLSL实现 [转]

    原文 http://www.cnblogs.com/CGDeveloper/archive/2008/07/03/1234206.html 如果物体表面细节很多,我们可以不断的精细化物体的几何数据,但 ...

  4. IIS 允许无后缀文件访问的配置

    最近一个项目 前端开发用了一大堆无后缀的html模板,问题就是发布到IIS以后访问 模板文件报404错误.无法下载. 百度 谷歌 搜一堆 都是MIME里添加 '.*' 实际上无效 正解是: MIME里 ...

  5. 自问自答-hadoop在安全模式下究竟干了什么见不得人的事

    本来想自己从网上搜集整理的,但是发现吴超写的刚刚好,不多不少,所以直接转载(图片失效了,用自己的图片) http://www.superwu.cn/2013/08/23/548/ 在hadoop集群的 ...

  6. 由c#的值类型与引用类型说开去

    之前一直被灌输,C#分值类型和引用类型,在程序运行时,它们分别存在栈(Stack) 和堆(Heap)上.这也是面试经典问题了,但其实其中存在很大的误解.比如某个实例对象中有一个Int型成员.当这个实例 ...

  7. struts2简单示例

    今天写一个struts2的例子,目的是为了让大家明白struts2的基本流程,其实框架没有大家想象的那么难,说白了struts2的本质就是一个大的Servlet,即原本需要提交到Servlet处理的部 ...

  8. ActiveXObject对象详解

    一.什么是 ActiveX 控件?         ActiveX 控件广泛用于 Internet.它们可以通过提供视频.动画内容等来增加浏览的乐趣.不过,这些程序可能出问题或者向您提供不需要的内容. ...

  9. Lua垃圾收集

    Lua使用基于被内置在Lua某些算法的垃圾收集自动内存管理.可以自动内存管理的结果,作为一个开发者: 没有必要担心的对象分配内存. 无需释放他们时,不再需要可将其设置为nil. Lua使用运行不时收集 ...

  10. python(5)–datetime模块

    1. datatime.date.today()     当前日期 >>> import datetime >>> datetime.date.today() da ...