Git 学习

1.git工具基本含义

  git最大的用处就是记录每个版本的变动、比较每个版本的不同,以及多人维护和开发同一个项目。支持版本回退。

2.git基本命令

  a.创建版本库

   $ mkdir learngit //创建目录

  $ cd learngit  //进入目录
  $ pwd //查看当前目录
  /Users/michael/learngit
  $ git init //创建本地版本库
  Initialized empty Git repository in /Users/michael/learngit/.git/

  $ git add readme.txt //将readme.txt添加到工作区
  $ git commit -m "test"//将readme.txt提交到本地仓库
  $git status //查看目前工作区又没有没有被提交到仓库的文件
  $git diff readme.txt //在提交到仓库之前查看那里做了改动(只能在提交到仓库之前)
  $git log //查看历史记录
  $git log --pretty=oneline //在一行上面显示历史记录
  $git reset --hard HEAD^ //回退到上一个版本(
$git reset --hard HEAD^ 表示回退到上上一一个版本
  $git reset --hard 版本代码 //回退到版本代码所代表的版本号(版本代码使用$git log 查看)
  $git reflog //显示操作后的每一个命令,包括回退版本,一般用于回退后后悔时,查看没有回退之前的版本号,然后使用$git reset --hard 版本号 ,来回到没有回退之前的版本
  $git diff HEAD -- readme.txt //查看工作区和版本库中readme.txt的不同
  $git checkout -- readme.txt //撤销最近一次对readme.txt的修改,如果还没有$git add 就回到没有修改的上一个版本,如果已经$git add后才修改,就回到刚刚$git add的状态
  $git reset HEAD readme.txt //将redme.txt从暂存区回退到工作区,然后使用$git checkout -- readme.txt 放弃工作区的修改
  $git rm readme.txt //从版本库中删除readme.txt(必须先将本地的readme.txt删除,才能使用这个命令。使用 rm readme.txt命令将本地readme.txt删除以后可以使用$git checkout -- readme.txt 将文件找回。$git checkout -- readme.txt,其实是用版本库中的版本替换工作区中的版本)
  
$ssh-keygen -t rsa -C "example@example.com" //创建本机SSH key 用于github 网站的密匙绑定,即让github服务器知道这台主机和你的github账号是关联的,邮件地址填写自己的,(创建完成之后,在根目录会有.ssh文件夹,里面有两个文件,id_rsa和id_rsa.pub,其中id_rsa.pub里就是需要绑定在github网站上的公匙)
  
$git remote add origin git@github.com:mingming/learngit.git //关联远程github服务器上的仓库,记得把git@github.com:mingming/learngit.git换成自己仓库的地址
  
$git push -u origin master //推送内容到远程仓库,并且将本地master分支和远程master分支关联起来(第一次推送使用)
  $git push origin master //推送本地master分支到远程master分支,(修改后直接使用此命令推送)
  $git clone
git@github.com:mingming/learngit.git //从远程仓库克隆,可以直接填充本地新仓库
  $git checkout -b dev //创建dev分支并且切换到dev分支
  $git branch dev // 创建dev分支
  $git checkout dev //切换到dev分支
  $git branch //列出所有分支
  $git merge dev //将dev分支的工作合并到当前分支
  $git branch -d dev //删除dev分支
  
$git log --graph --pretty=oneline --abbrev-commit //查看分支合并图
  
$git merge --no-ff -m "merge with no-ff" dev //以禁用Faste forword方式合并分支,合并完之后可以在历史中查看到曾经做过合并,而使用Faste forword方式则不会在历史记录中显示
  $git stash //保存工作区现场,(当临时有任务需要修改时,需要暂停本分支上面工作任务)
  $git stash list //查看本分支的工作现场列表
  $git stash apply //恢复本分支工作现场
  $git stash drop //删除stash内容
  $git stash pop //恢复本分支stash内容并且删除stash
  
$ git stash apply stash@{0} //恢复指定的stash
  $git branch -D dev //强制删除dev分支
  $git remote -v //查看远程库详细信息
  
$git checkout -b dev origin/dev //创建本地dev分支,
  
$git branch --set-upstream dev origin/dev //指定本地dev和远程关联
  $git tag V1.0 //给当前分支的版本号打上标签V1.用于标记自己的版本
  $git tag //查看所有标签
  $git tag V1.0 444444 //给commit id为444444的版本号打上标签
  $git show V1.0 //查看V1.0版本的详细信息
  $git tag -a V1.0 -m "shuo ming xin xi" //打上标签并且给出标签说明
  $git tag -d V1.0 //删除V1.0标签
  $git push origin V1.0 //推送V1.0标签
  $git push origin tags //推送所有标签
  
$git push origin :refs/tags/V1.0 //删除远程标签,(在此之前必须删除本地标签V1.0)
  
3.git的使用技巧
  a.远程仓库上可以fork别人的项目然后,clone到本地进行二次开发
  b.可以编写.gitignore文件实现添加到工作区的时候忽略其中某些文件
  c.两个人人,或者一个人在两台电脑上修改同一段代码,其中一方push到远程之后,另一方push时,必然要git pull一下更新本地仓库,然后查看双方修改的冲突在哪里,对冲突再次修改才能push到远程
  d.搭建git服务器
    。
$ sudo apt-get install git //在服务器端安装git软件
    。。$sudi adduser git //创建一个git用户,用来运行git服务。
    。。。收集需要登陆的用户的公匙(
id_rsa.pub文件里的),将所有用户的公匙导入到文件/home/git/.ssh/authorized_keys,一行一个,//人数少可以使用此文件,人数多了可以使用Gitosis来管理
    。。。
$ sudo git init --bare sample.git //在选定的作为仓库的目录中输入此命令,会创建一个名字为sample.git的空仓库
    。。。。
$ sudo chown -R git:git sample.git //把owner改成git
    。。。。。出于安全考虑,创建的git用户不允许登陆shell,通过将/etc/passwd里面的
git:x:1001:1001:,,,:/home/git:/bin/bash改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell即可,这样git用户就可以通过ssh链接,但是不能使用shell登陆
    。。。。。。在各自用户的电脑上使用
$ git clone git@server:/srv/sample.git 克隆仓库就OK
  

Git 基础应用的更多相关文章

  1. [转] Git 基础 - 打标签

    2.6 Git 基础 - 打标签 打标签 同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本节我们一起来学习如何列 ...

  2. Git基础操作

    配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...

  3. git基础及分支

    关于版本控制 git是一种分布版本控制系统,每一主机都保存了完整副本.必杀技是分支. 在Windows可安装git客户端msysgit. git基础 第一次看progit觉得有点不懂,不懂版本控制,一 ...

  4. 《Pro Git》笔记2:Git基础操作

    第二章 Git基础 Git基础包括:版本库的创建和获取,文件添加修改提交等基本操作,状态查询,远程版本库管理和同步,打标签. 1.取得项目的Git版本库 基于Git的工作流要以Git版本库为基础,即可 ...

  5. Git详解之二 Git基础

    Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...

  6. 2.4 Git 基础 - 撤消操作

    2.4 Git 基础 - 撤消操作 撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失 ...

  7. ###Git 基础图解、分支图解、全面教程、常用命令###

    一.Git 基础图解 转自:http://www.cnblogs.com/yaozhongxiao/p/3811130.html Git 图解剖析 git中文件内容并没有真正存储在索引(.git/in ...

  8. 【git学习二】git基础之git管理本地项目

    1.背景        git基础打算分两部分来说,一部分是对于本地项目的管理,第二部分是对于远程代码仓库的操作. git运行本地项目管理包含对于相关文件的追踪,暂存区的比較分析,提交,撤销等功能. ...

  9. Git基础教程(二)

    继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 配置命令:git config --global * 版本库初始化:git init 向版本库添加文件:git add * 提交 ...

  10. Git详解之二:Git基础

    Git 基础 读完本章你就能上手使用 Git 了(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读).本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到 ...

随机推荐

  1. IBInspectable / IBDesignable

    无论陈词滥调多少次,比起一个需要我们记住并且输入什么的界面来说,如果替换成我们能够看见并可控制的界面的话将会是巨大的进步. Xcode 6 提供了这样一个替代,在旧技术上建立新的互动.在设计项目的时候 ...

  2. MJPhotoBrowser 两个bug:回到小图模式时会闪动&大图太靠近底部

    最近项目需要写网络的相片视频浏览的库, 没时间重写,使用了MJPhotoBrowser,里面的一些bug 和解决写在下面 1.-[MJPhotoLoadingView setProgress:]: m ...

  3. 千寻浏览器 1.0 Beta 1(524)(2014年5月27日)

    千寻浏览器--又一款新生浏览器今天进入各位浏览迷的视野.千寻浏览器基于IE内核,据传是由百度浏览器的上海团队操刀,在功能定位上,与目前的QQ浏览器有些相似. 千寻来自官方的解释:寻,追寻,探索,又是古 ...

  4. SharePoint 2013 开发——构建工作流开发环境

    博客地址:http://blog.csdn.net/FoxDave 本篇我们来讲述一下如何搭建SharePoint 2013工作流开发环境. Windows Azure Workflow作为单独的可下 ...

  5. C# IList<T>转为DataTable

    public class WebUtil { /// <summary> /// 转换IList<T>为DataTable/// </summary> /// &l ...

  6. linux 用户、组,修改文件权限

    文件权限 -rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc - 10个字符确定不同用户能对文件干什么 - 第一个字符代表文件(-).目录(d),链接(l) - 其余 ...

  7. java.lang包的分类

    提供利用 Java 编程语言进行程序设计的基础类. 1>  最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类).   2>  把基本类型 ...

  8. 使用开源工具MonoDevelop开发GTK#图形界面

    转自:http://developer.51cto.com/art/201011/235040.htm Mono一直到现在的2.8已经完全可以胜任一些比较小的项目了,但相关的开发文档与教程一直比较匮乏 ...

  9. (转)IOS之Info.plist文件简介

    原文:IOS之Info.plist文件简介 http://www.apkbus.com/android-130240-1-1.html (出处: Android开发论坛 - 安卓开发论坛 - Andr ...

  10. 12-28 显示团购数据界面的搭建,cell的自定义方面的知识总结

    1.通过plist加载模型数据 2.controller中懒加载数据 3.设置tableView的数据源 4.写数据源的方法 5.观察演示项目,分析通过默认的cell的4种现实方式,无法实现要想要的现 ...