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. windows 7 与linux 双系统 安装

    注意事项: 1.安装Linux的时候,一定要选 “空闲”的硬盘去创建标准分区,否则会格式化C盘或D盘windows的资料.[如 /dev/sda1 为c盘主分区,sda2为扩展分区---下面有D盘,E ...

  2. 第一个c++程序 helloworld

    // helloworld.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include "iostream" int ...

  3. hadoop2 作业执行过程之map过程

    在执行MAP任务之前,先了解一下它的容器和它容器的领导:container和nodemanager NodeManager NodeManager(NM)是YARN中每个节点上的代理,它管理Hadoo ...

  4. C. Mobile phones

    Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows ...

  5. How to solve the SVDI SN Number Display Problem

    Yesterday we have learn how to find the SVDI Serial Number, today one of customer from UK look our a ...

  6. [Java] 两种发起POST请求方法,并接收返回的响应内容的处理方式

    1.利用apache提供的commons-httpclient-3.0.jar包 代码如下: /** * 利用HttpClient发起POST请求,并接收返回的响应内容 * * @param url ...

  7. (搬运)《算法导论》习题解答 Chapter 22.1-1(入度和出度)

    (搬运)<算法导论>习题解答 Chapter 22.1-1(入度和出度) 思路:遍历邻接列表即可; 伪代码: for u 属于 Vertex for v属于 Adj[u] outdegre ...

  8. Oracle基础 PL-SQL编程基础(4) 异常处理

    异常处理: 即使良好的PL-SQL程序也会遇到错误或者未预料的事件,一个优秀的程序都应该能够处理各种出错情况,尽可能的从错误中恢复.程序在运行时出现的错误成为异常.发生异常后,语句讲终止执行,PLSQ ...

  9. linux_iptables 详解

    iptables工具__过滤包—命令(-A.-I.-D.-R.-L等).参数(-p.-s.-d.--sport.--dport.-i.-o等).动作-j (ACCEPT.DROP.REJECT.RED ...

  10. Oracle基础<1>--数据库设计

    一:为什么需要使用数据库设计 数据库设计可以使数据库通过健壮的数据库结构  高效并且健康  的进行工作. 二.数据库设计原则 (数据库设计.系统设计.架构设计) 1.熟悉需求 保证之后需求的变更 不会 ...