一、配置用户信息:

配置用户名和邮箱:

$ git config --global user.name “chunyu”

$ git config --global user.email 1812928598@qq.com

Git把用户的配置信息放在C:\Users\mis\.gitconfig

二、初始化一个本地的git仓库:

$ git init

跟踪文件:

$git add index.html(跟踪完文件之后,这个文件被存放在暂存区中)

跟踪多个文件:

$ git add *.html  或者 $ git add .

如果文件在暂存区中,此时对文件进行修改,则需要再次将文件添加到暂存区中(add)

如果对本地版本库中的文件进行修改,还没有添加到暂存区,可以查看文件的修改内容: $git diff index.html

把跟踪好的文件提交到版本库中:

$ git commit -m “add a html file” 参数-m的作用:告诉git提交解释信息为add a html file

(提交完文件之后,这个文件就被保存到本地版本库中)

查看提交记录:

$ git log (简洁版:$git log --pretty=oneline

查看工作区目前的状态:

$ git status

如果多次修改文件,并提交到本地版本库中,如果想回退到上一个版本,则:

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

$git reset --hard HEAD^//表示回到上个版本

现在回到了老版本,如果现在又想回到新版本,则:

只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个最新版本的commit id是6e1f7...,于是就可以指定回到未来的某个版本:

$git reset --hard 6e1f7

如果命令行窗口被关掉了,则可以使用$git reflog来查看每一次命令(历史命令)。这时找到最新版本的commit di,再使用上个命令就可以回到最新版本了。

 

撤销修改:$git checkout -- read.txt(就是让这个文件回到最近一次git commit或git add时的状态。)

 

如果修改完一个文件,并将这个文件保存到暂存区中了,但是这个时候发现修改有问题,这时可以用$git reset HEAD read.txt 命令把暂存区的修改回退到工作区。(这时相当于修改完文件,没有执行add命令,这时可以执行上个命令撤销修改。)

 

删除文件并提交到版本库:

1、手动删除文件

2、$git rm test.txt

3、$git commit -m “delete the test.txt file”

三、分支管理:

在若干次提交后,其实已经有了一个指向最后一次提交对象的master分支,它在每次提交的时候都会自动向前移动。

创建分支:

$ git branch testing    //这会在当前commit对象上新建一个分支指针

Git保存着一个名为HEAD的特别指针,它是一个指向你正在工作中的本地分支的指针,运行git branch命令,只是创建了一个新的分支,但不会自动切换到这个分支中去,所以,现在我们依然是在master分支上工作。

显示当前的分支:

$ git branch

切换到其他分支:

$ git checkout testing //转换到testing分支

($ git checkout -b iss53,相当于以下两条命令的合并:$git branch iss53、$git checkout iss53,创建分支并切换到该分支上

此时在testing分支上进行修改文件,则现在的状态为:

此时再切换回master分支:$ git checkout master

现在HEAD指针又指向master分支,并把工作目录中的文件换成了master分支所指向的快照内容,也就是说,现在开始所做的改动,将始于一个较老的版本。

在master分支上对文件进行修改,现在项目文件产生了分叉,因为刚才在testing分支上进行了一些修改,然后又回到master分支上进行了另外的修改。这些改变分别孤立在不同的分支里:

四、分支的合并:

当数据结构是以下状态时:

要合并master分支和hotfix分支:首先回到master分支上,$git checkout master,然后合并hotfix分支,$git merge hotfix。此时的状态为:

注意到,合并时出现了fast-forward(快进)提示,由于当前master分支所在的commit是要并入的hotfix分支的直接上游,git只需把指针直接右移。换句话说,如果顺着一个分支走下去可以到达另一个分支,那么git在合并两者时,只会简单的把指针前移,因为没有什么分歧需要解决,所以这个过程叫做快进。

现在hotfix分支和master分支指向相同的提交版本,可以删除hotfix分支:

$git branch -d hotfix

删除没有被合并的分支:

$git branch -D hotfix

当出现以下结构,并且要合并hotfix和iss53分支时,则会出现合并冲突

合并冲突:两个分支有相同的文件,而且同位置上的内容不相同,如果合并这两个分支,则会产生冲突。这个时候需要手动修改发生冲突的文件。当手动解决冲突后,用$git add test.txt 命令表示文件的冲突已经解决好了,并提交到暂存区。

 

Bug分支:

软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

功能分支:

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

五、$git stash命令:在当前的分支上工作到一半,还没有提交,需要切换到其他分支上去, 用$git stash命令保存当前的状态,然后就可以切换到其他分支上了。

$git stash list:查看存储点列表

$git stash apply 存储点名称:回到之前存储的状态

六、用SSH生成公钥和私钥:

ssh-keygen -t rsa -C “1812928598@qq.com”

生成的公钥和私钥文件存储在C:\Users\mis\.ssh

公钥为id_rsa.pub,就相当于一把锁,需要放在git服务器上。

私钥为id_rsa,相当于钥匙。

测试SSH公钥是否成功:ssh git@git服务器地址(如:$ ssh git@github.com)

七、克隆远程仓库:

$git clone git@远程仓库url(如:$git clone git@github.com:XiaoKongQi/testhtml009.git)

当从远程库clone时,默认情况下,你只能看到本地的master分支。现在,你要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是用这个命令创建本地dev分支:$git checkout -b dev origin/dev

推送数据到远程仓库:

$git push -u [远程仓库名] [本地推送的分支名]

(如:$git push -u origin master,把本地的master分支推送给了远程仓库,并且在远程仓库origin中创建了一个远程的master分支,远程的master分支和本地master分支关联;如果你推送的是bcy分支:$git push -u origin bcy,那么远程库会自动创建bcy分支,并与本地的bcy分支进行关联)

如果将本地的test分支推送到远程的master分支上:$git push -u origin test:master)

推送本地仓库的所有分支到远程仓库上去:

$git push -u [远程仓库名] --all

查看本地分支与远程分支的联系:

$git branch -vv

查看当前远程仓库:

$git remote -v

查看远程的分支:

$git branch -r

从远程仓库抓取数据:

$git fetch [远程仓库名](如:$git fetch origin,抓取下来之后,对本地没有任何影响)

在本地分支上,合并远程分支:

$git merge 远程仓库名/分支名

只有在所克隆的服务器上有写权限,并且同一时刻没有其他人在推送数据,这条命令才会如期完成任务。如果你在推送数据前,已经有其他人推送了若干更新,那你的推送操作会被驳回,你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。

当从远程仓库把别人的更新抓取到本地之后,可以看看在我们推送之前,别人做了什么,

$git log --no-merges origin/master。

$git pull 相当于$git fetch $git merge 远程仓库名/分支名,抓取远程数据,并在本地分支上合并远程分支。若合并有冲突,则需手动解决冲突,若合并无冲突,则本地就跟远程数据一样了。

如果本地有一个master分支和远程的origin/master分支没有建立跟踪关联,需要使用$git branch --set-upstream-to=origin/master

查看远程仓库信息:

$git remote show origin

重命名远程仓库名:

$git remote rename 原名 新名

远程仓库的删除:

$git remote rm 远程仓库名

将本地仓库与远程仓库进行关联:

$git remote add origin git@远程服务器地址(如:$git remote add origin git@github.com:michaelliao/learngit.git)(关联之后,一般要将本地master分支与远程master进行关联:$git branch --set-upstream-to=origin/master,在关联master分支之前,先git pull一下,然后再关联master分支。关联之后如果pull代码,如果报错: refusing to merge unrelated histories,就这样pull:$git pull origin master --allow-unrelated-histories

八、标签:

在Git中打标签非常简单,首先,切换到需要打标签的分支上,然后,敲命令git tag <name>就可以打一个新标签:(默认标签是打在最新提交的commit上的)

$ git tag v1.0

 

创建带有说明的标签,用-a指定标签名,-m指定说明文字::

$git tag -a v0.1 -m “version 0.1 released” 1094adb

 

对老版本打标签:

①先找到历史提交的commit id:$git log --pretty=oneline --abbrev-commit

②找到对应的commit id:$git tag v0.9 e27928

 

查看所有标签:

$git tag

 

查看标签信息:

$git show v0.9

 

删除标签:

$git tag -d v0.1

推送某个标签到远程,或者,一次性推送全部尚未推送到远程的本地标签::

$git push origin v1.0,$git push origin --tags

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

$ git tag -d v0.9

然后,从远程删除。删除命令也是push,但是格式如下:

$git push origin :refs/tags/v0.9

九、忽略特殊文件

忽略某些文件时,需要编写.gitignore,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。.gitignore文件要提交到本地版本库中。

在eclipse中使用git:

https://blog.csdn.net/Adelly/article/details/79099772#_Toc480656628

 

 

 

 

 

Git的介绍及使用的更多相关文章

  1. git使用介绍

    Git简单介绍 参考网址: git使用简介 这个教程推荐使用:git教程 git和svn的差异 git和svn的最大差异在于git是分布式的管理方式而svn是集中式的管理方式.如果不习惯用代码管理工具 ...

  2. SourceTree 01 - git 客户端介绍

    SourceTree - git客户端介绍 SourceTree系列第1篇 --->> SourceTree 01 - git 客户端介绍(http://www.cnblogs.com/g ...

  3. 1、git基础介绍及远程/本地仓库、分支

    1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...

  4. git基础介绍

    git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件 ...

  5. GitHub的SSH key配置以及常用的git命令介绍

    一. GitHub的SSH key配置 (以windows为例,Mac iOS系统类似) SSH Key 是一种方法来确定受信任的计算机,从而实现免密码登录.Git是分布式的代码管理工具,远程的代码管 ...

  6. 版本控制工具(SVN/Git)介绍

    文章大纲 一.SVN介绍二.Git介绍三.IDEA使用SVN和Git四.总结五.参考文章   一.SVN介绍 1. SVN服务器搭建和使用 首先来下载和搭建SVN服务器,下载地址如下: http:// ...

  7. GIT命令介绍

    Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下. 区别与集中式的分布式实现!!!! 集中 ...

  8. Git基本介绍(三大分区及核心内部构造)

    1. Git三大工作区(工作区.暂存区和版本库) 工作区(WORKING DIRECTORY): 直接编辑文件的地方,肉眼可见直接操作: 暂存区(STAGIN AREA):数据(快照)暂时存放的地方: ...

  9. Git的介绍以及安装

    Git的简单介绍 Git是一个开源的分布式版本控制系统,可以有效,高速的处理从很小到非常大的项目管理,GIT是为了帮助linux内核开发而开发的一个开放源码的版本控制软件 Git的安装 Linux平台 ...

  10. Git&Github介绍

    git&github 什么是GIT 是一个源代码管理工具 源代码为什么要管理起来? 你写的东西就叫源代码,第三方的库和框架都不算. 让源代码可以被追溯,主要记录每次变更了什么,谁主导这次变化. ...

随机推荐

  1. Python-找字典中公共key-zip reduce lambda

    场景实例: 西班牙足球联赛,每轮球员进球统计: 第一轮:{'1':1,'2':4,'5':2,'7':3} 第一轮:{'2':1,'5':4,'6':2,'3':3} 第一轮:{'1':1,'4':4 ...

  2. mysql-15-view

    #视图 /* 含义:虚拟表,和普通表一样使用.通过表动态生成的数据 只保存了sql逻辑,不保存查询结果 应用场景: 1.多个地方用到同样的查询结果 2.该查询结果使用的sql语句较为复杂 */ USE ...

  3. Docker---初识到使用

    1.剖析虚拟化技术概念 1)虚拟化是一个主流的技术,虚拟的,看不见的,但是可以落地的,用于资源管理的一项技术: 2)虚拟化的技术诞生的目标就是为了解决资源管理和资源利用的解决方案: 3)虚拟化就是将物 ...

  4. matlab receive License Manager Error -103?

    参考:https://www.mathworks.com/matlabcentral/answers/91874-why-do-i-receive-license-manager-error-103 ...

  5. Matlab中界面和注释---中英文切换问题

    有参考网页后实践的心得: Matlab中界面和注释---中英文切换问题 网上有大把的方法,并不是一一有效,这里介绍一种比较简单的方法我自己的电脑挺好用的,大家的电脑matlab需要你们自己实验了. 1 ...

  6. Matlab .asv文件

    参考: https://blog.csdn.net/u013152895/article/details/44724199 有时在存放m文件的文件夹中会出现*.asv asv 就是auto save的 ...

  7. 1个LED灯闪烁的Arduino控制

    控制任务和要求 让一个LED灯闪烁 接线 程序设计 1 int half_cycle=1000; // define the cycle time of LED blink 2 int LED_pin ...

  8. 【题解】[USACO07OPEN]Dining G

    \(Link\) \(\text{Solution:}\) 这一题,我们要做到,食物和牛.牛和饮料均为一对一的关系.我们发现这个图不好建立. 经典技巧:将牛拆边,拆成入点和出点,并连容量为\(1\)的 ...

  9. TP5隐藏入口文件

    1,进入根目录,打开public文件夹,里面有个.htaccess文件 2,将这段代码改成?s= 3,不修改该文件,想要隐藏入口文件则会报错 4,改了文件之后是 5,改了入口文件为了隐藏  .php

  10. CentOS下编译搭建LAMP环境

    搭建LAMP环境须知 搭建LAMP环境时,需要安装的所有软件都要按照一定的顺序安装,我们按照Apache->MySQL->PHP的顺序安装.但是在安装PHP之前,应先安装PHP5需要的最新 ...