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. HTTP Referer二三事---转

    授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/320)的形式标明文章原始出处和作者信息及本声明. 什么是HTTP Refer ...

  2. 基于 SquashFS 构建 Linux 可读写文件系统

    转载:http://www.oschina.net/question/129540_116839 在当前的嵌入式操作系统开发中,Linux 操作系统通常被压缩成 Image 后存放在 Flash 设备 ...

  3. C# 代码生成工具 Millennials

    Millennials 是一个可定制的 C# 代码生成工具,支持 MVC 和三层架构.ADO.NET.Nhibernate 和 LINQ. 项目主页:http://www.open-open.com/ ...

  4. solr--搜索参数随笔

    1.默认搜索域.查询域的关系 qf字段的配置:query fields,指定solr从哪些field中搜索 在solrj中设置如下: params.setParam("qf", & ...

  5. [Java] SSH框架笔记_S2SH整合步骤

    http://tech.ddvip.com/2009-09/1253783051134206.html http://www.blogjava.net/liu0909/archive/2009/07/ ...

  6. [Java] SSH框架笔记_框架整合示例(一)

    本文描述的是框架SSH集成的示例,由于在这个过程中有一些小的细节容易被遗忘,特别撰写了一篇小的博文来记录这个过程,希望对自己以及后来者能够起到积极意义. 本文中使用的框架和版本号为: struts-2 ...

  7. c#代码使用ResourceDictionary样式

    对于ResourceDictionary样式代码: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006 ...

  8. 剑指Offer13 链表倒数第K个结点

    /************************************************************************* > File Name: 13_KthNod ...

  9. hdu 4411 最小费用流

    思路:主要就是要把一个每个城市拆为两个点,建一条容量为1,费用为-inf的边,保证每个城市都会被遍历. /*最小费用最大流*/ #include<iostream> #include< ...

  10. Terminate program hitting CTRl+C within GDB

    Q: My program is determined to stop its execution by hitting CTRL+C in command window. By now, i hav ...