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. Android学习第一课

    首先看一个android项目中各个包的作用 以下看几个经常使用的控件: 1. TextView 显示文本框控件 2. EditText 输入文本框 TextView控件经常使用属性: id----控件 ...

  2. HDU 4821 String hash

    String Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  3. 解决PowerDesigner 反向工程没有注释(备注)

    本文转载自:http://www.cnblogs.com/zhangxb/archive/2012/04/20/2458898.html 1. 列注释 原来代码: {OWNER, TABLE, S, ...

  4. jsonp跨域原理解析

    前言: 跨域请求是前台开发中经常遇到的场景,但是由于浏览器同源策略,导致A域下普通的http请求没法加载B域下的数据,跨域问题由此产生.但是通过script标签的方式却可以加载非同域下的js,因此可以 ...

  5. [ZZ]C++中,引用和指针的区别

    (1) 引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. 由于C++ 要求 reference 总是指向一个对象所以 re ...

  6. MAC SVN Phonegap

    1. Windows上用VisualSVN Server Manager创建好Repository. 2. 在MAC上,用Phonegap创建好项目,比如在Project1目录里的App目录. 3. ...

  7. 更改gps.conf来加快GPS搜星速度

    国内NTP ServerNTP全称是Network Time Protocol,是用来让计算机之间实现时间同步的协议,而发布这种校对时间的服务器,就是NTP Server!一般来说客户端与服务器之间的 ...

  8. Redis 有序集合(sorted set)

    Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序 ...

  9. Index Generation

    Index Generation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 230   Accepted: 89 Des ...

  10. SQL 生成一个日期范围

    有时想按日或月生成一个序列,就像2014-1-1.2014-1-2.2014-1-3... 在sql server中可以写个函数来实现. /* 生成一个日期范围,如2014.01.2014.02... ...