git 是一款非常强大的版本控制工具,现在市场占有率应该是一家独大了,以前用svn的童鞋估计都转投git阵营了吧
 
加上很多公司也用git管理自己的项目,所以说作为开发人员,git是必学的技术之一了。
     
         当初公司需要使用git,必须快速入门,所以网上狂搜git入门教程,(以前听说很多人说去官网看第一手资料,对英
 
文不错的同学来说固然不错,但对于我这种英文不是很牢靠的还是需要一些更简单的方式,毕竟也需要马上上手投入使用)
 
,还是找到了非常不错的文章,廖雪峰的git教程(http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
 
介绍的很全。
 
     借助大牛的大纲   ,我自己总结一下git的基本使用:
 
  1. 简介  :  git 是分布式的版本控制系统,而以前的CVS和SVN都是集中式的版本控制系统,git的代码仓库在每个人
 
人的本机上都会存储一个副本,有工作区,暂存区,本地库,远程库四个概念,我们在工作区工作,add到暂存区,commit
 
到本地库,一切确认ok了,就push到远程库。  当然这中间会有很多问题,比如代码冲突(程序员最头痛的问题)。
 
        push到的远程库目前我自己用到的有两个,1git.github.com  2 git.oschina.net(中国开源站,里面很多的开源代码,非常 nice的学习资料)
 
     2.git的安装 
 
     我们可以建立自己的git仓库,需要去git下载,不过我们一般都是把项目托管到github和oschina上,如果以后遇到,再来记录搭建git服务器
 
的详细步骤。
     
     目前我们只需要安装一个本地git客户端即可。windows安装git客户端即可,linux下 yum install git 安装git ,一般已经安装了。
 
     3.在本地创建一个版本库 : git init  
          
          会出现一个.git 文件夹,用于跟踪项目版本修改记录
 
     4.用的最多的命令: git status  , git  add , git commit -m "注释"  ,git push  , git pull 
 
          git status   查看本地版本库的状态 ,有没有未跟踪,修改未提交,提交未推送到远程库的信息全部会显示。
                   
               如果要看想提交的文件和库里的有什么不同,git diff 【文件名】 可以对比文件
 
          git add   【文件名  空格  文件名  】 或者 .(点,代表跟踪的 所有文件)  将文件从工作区添加到暂存区。
 
          git  commit   提交到本地库 
 
          git push 把本地已经提交的记录,推送到远程库。
 
          git  pull  从远程库拉取别人更新的代码
 
     5.在四个区域转换修改有用的命令:
 
          git reset --hard  HEAD^     回退到上个提交的版本  也可以吧HEAD^用commit_id替换  ,可以用git log 查看日志记录中的commit_id
 
          如果有add了的但又不想提交的怎么办呢,得使用 git reset  HEAD【全路径文件名】 把不想提交的从暂存区拉到工作区才行。
 
          工作区的代码不要了,让本地库中的代码覆盖,重新写,用git  checkout   【文件名】 撤销工作区的修改,重新开始。
 
          当我在编写ATask任务,想干其他模块的工作BTask ,暂存区的工作内容保存起来,然后回到代码库的代码,想用的时候再恢复过来。
               
               用 git stash  所有工作区的修改ATask 暂时存储,且工作区恢复到修改之前了。
               
               BTask 其他模块编写完毕,提交后,想把ATask恢复到工作区,git  stash pop  恢复。
 
               当然可以暂存很多这种任务,可用git  stash list 查看任务。
 
               想恢复其中一个而不是最上面的一个时 用 git stash  apply  [名称,通常为stash@{0}]
 
          现在我有一系列的未跟踪的文件(未被放到工作区),想删掉,可用 git clean -f   
               
               连同目录一起删除 git  clean -fd
 
               连.gitignore文件中标明的目录也删掉,呃,当然这个一般别用,git clean -xfd
 
               以上三个命令 参数都可加上-n,先查看哪些文件要删除,会先列出个列表 , git  clean -nf   ,git clean -nfd  , git  clean -nxfd
 
          
     好了,3,4,5点都是针对单个分支的操作,下面来讲一下多个分支的基本操作:
 
    6.分支的操作:
          
          新建一个分支 :git branch  【分支名A】 ,这个是以当前分支为基础,比如当前分支在master,A分支就是master的一个副本
          
               还可以git branch -b  [分支名A]  创建并切换到分支A
 
          删除分支  : git  branch -d 【分支名A】
 
          合并分支:git merge  master  , 假设当前分支为A ,把master分支代码合并到A分支。
 
               分支合并并记上日志:git merge  --no-ff  -m "分支合并日志记录"  master
 
          查看分支合并图 : git  log  -graph  
     
          查看所有分支的日志 :git relog 
 
    7.远程推送操作:
     
          把远程代码拉到本地 git clone  git.oschina.net@fubin/fubin.git
 
     删除远程分支:本地分支删除了之后,如果已经推送到远程,我们得删除远程分支 :git push origin   :A
               
               这个方法是把一个空的名字的分支推送到远程并覆盖A,就删除了。
 
         那我们怎么提交代码或者推送建好的分支到远程呢:
 
          (1)如果已经关联好了,直接git push
                 (2)远程有,没关联好,git push -u origin/remote_branch
                 (3)远程没有,需要新建一个推送,git push origin local_branch:remote_branch
 
     (3)的另一种方法,假如我们有一个本地库,一个远程库,想关联起来,git remote add origin  git.oschina.net@fubin/fubin.git
 
 
     
   8.遇到的一些问题汇总:
 
        《1》  提交代码的时候需要输入密码,可长期存储密码配置:git  config  --global  credential.helper store
 
        《2》  日志漂亮的配置:
               git log --pretty=oneline   单行显示日志
               别名配置:git lg  树形结构显示日志,很方便。
               git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
               其实这些配置都记录在.gitconfig  文件中:部分内容如下:
[color]
    diff = auto
    status = auto
    branch = auto
[user]
    name = fubin
    email = 1401626753@qq.com
[gui]
    encoding = utf-8
    recentrepo = E:/Workspace/vpfinance
[push]
    default = matching
[credential]      
    helper = store  
[alias]
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
 
        《3》  以master为模板创建远程分支过程:
                1. 创建分支 git branch -b  A   2 git push origin A:A  
 
        《4》  新建一个项目,push到远程步骤:
                 1. 本地新建项目   
2. 新建本地仓库 并git init 
3 .远程新建项目 
4.本地和远程建立关联 git remote add origin  git.oschina.net@fubin/fubin.git 
5.拷贝本地项目到本地仓库
6.提交
 
        《5》  如何忽略已跟踪的文件?
               git update-index  --assume-unchanged filename
               撤销忽略:
               git update-index  --no--assume-unchanged filename
 
        《6》  删除已经入库的文件夹,这个是直接删除远程库,本地库也一起删除,需要小心操作。 
               git rm -f --cached .idea/
               git commit -m "删除已入库的文件夹"
 
        《7》  git的维护(git gc 和 git fsck)
               git fsck 运行一些仓库的一致性检查, 如果有任何问题就会报告. 这项操作也有点耗时, 通常报的警告就是“悬空对象"(dangling objects).
 
        《8》  git push 时报错  error: cannot lock existing info/refs
                在环境中执行 git update-server-info    后解决问题
 
          
        《9》  提示出错信息:fatal: remote origin already exists.
                删除远程分支关联:
                git remote rm origin
 
 
 
 
 
               
                          
               
 
 
      
 
     
 
     
          
  
          
          
          
          
 
 
 
 
 
 
 
     
 
          

Git的学习总结和使用时遇到的问题。的更多相关文章

  1. [习题]日历(Calendar)控件的障眼法(.Visible属性),使用时才出现?不用就消失?

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/02/calendar_icon_visible.aspx [习题]日历(Cal ...

  2. Git操作学习笔记

    根据廖雪峰老师git教程学习整理 这里需要辨析一下概念.Github是代码托管平台,是协作的工具;而Git是版本控制工具.Git不需要联网,在本机就可以使用 集中式版本控制系统与分布式版本控制系统 S ...

  3. 【Git】学习开始

    [Git]学习开始 转载:https://www.cnblogs.com/yangchongxing/p/10172683.html 在线电子书籍:https://git-scm.com/book/z ...

  4. Android Loader使用时,屏幕解锁后,重复加载

    在使用AsyncTaskLoader时,当手机解锁后,会重复加载数据,代码如下: static class CouponShopQueryLoader extends AsyncTaskLoader& ...

  5. Cookie使用时需要注意个数及大小限制

    各浏览器对Cookie有一定的限制,在使用时需要格外注意. 各浏览器之间对cookie的不同限制:   IE6.0 IE7.0/8.0/9.0+ Opera FF Safari Chrome cook ...

  6. EntityFrameWork 使用时碰到的小问题

    EntityFrameWork 使用时碰到的小问题 1,在使用orm访问数据库的相目里,也要引用EntityFrameWork.dll,否则无法使用orm 否则,编译错误 错误 5 "Sys ...

  7. MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”

    MySQL 安装和启动服务,以及遇到的问题 MySQL版本: mysql-5.7.13-winx64.zip (免安装,解压放到程序文件夹即可,比如 C:\Program Files\mysql-5. ...

  8. git入门学习(二):新建分支/上传代码/删除分支

    一.git新建分支,上传代码到新的不同分支  我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...

  9. git入门学习(一):github for windows上传本地项目到github

    Git是目前最先进的分布式版本控制系统,作为一个程序员,我们需要掌握其用法.Github发布了Github for Windows 则大大降低了学习成本和使用难度,他甚至比SVN都简单. 一.首先在g ...

随机推荐

  1. Oracle—用户管理的完全恢复(四)

    在用户管理的备份(三)中,最后打开数据库时,用了alter database open resetlogs;的命令,这里为什么用resetlogs命令? 一.resetlogs的作用 1.将当前的日志 ...

  2. mysql describe

    describe命令一.describe命令用于查看特定表的详细设计信息,例如为了查看guestbook表的设计信息,可用:describe guestbook describe ol_user us ...

  3. JAVA基础之正则表达式

    加 ^$  整个字符串满足要求 不加部分字符串满足要求即可通过 ======================================================== \:转义字符 \d:任 ...

  4. ios UIWebView截获html并修改便签内容(转载)

    ios UIWebView截获html并修改便签内容 博客分类: iphone开发iphone开发phoneGap uiwebviewstringByEvaluatingJavaScriptFromS ...

  5. uiview 的transitionWithView 方法使用

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [UIView transitionWithView:_imageV ...

  6. 【阿里云产品公测】简单日志服务SLS使用评测 + 教程

    [阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...

  7. Android小项目之十 应用程序更新的签名问题

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  8. jquery plugins —— datatables ajax post更新数据

    通过下面语句,可以定义datatables插件通过ajax post方法从服务器段获取JSON格式的数据. 错误写法(这样写再执行ajax.reload()方法时,ID参数还是初始时,不会更新): v ...

  9. ng-sortable-支持触屏的拖拽排序

    1.首先是到https://github.com/a5hik/ng-sortable/tree/master/dist下载所需的文件:ng-sortable.min.js,ng-sortable.cs ...

  10. poj 3417 树形dp+LCA

    思路:我以前一直喜欢用根号n分段的LCA.在这题上挂了,第一次发现这样的LCA被卡.果断改用Tarjan离线算法求LCA. 当前节点为u,其子节点为v.那么: 当以v根的子树中含有连接子树以外点的边数 ...