一、安装和配置

1.Git安装

yum install git -y

安装完Git就可以对其做一些配置:

Git有一个工具被称为git config,它允许你获得和设置配置变量;

这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置:
(1)/etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’ 给 git config,它将明确的读和写这个文件。
(2)~/.gitconfig 文件 :具体到你的用户。你可以通过传递--global 选项使Git 读或写这个特定的文件。
(3)位于git目录的config文件 (也就是 .git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。

 2.设置用户和邮箱

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:

git config --global user.name "root"
git config --global user.email "root@localhost"

3.获取帮助

若你使用 Git 时需要获取帮助,有三种方法可以找到 Git 命令的使用手册:

git  --help             \\获取git命令信息
git help config \\获取具体命令帮助信息

二、Git的简单使用

(1)创建工作区

# mkdir /git      

(2)创建版本库

# cd /git/
# git init
Initialized empty Git repository in /git/.git/

(3)版本提交

# cp /etc/passwd .                   \\注意文件必须要在工作区中
# git status \\查看有无变化
# On branch master
#
# Initial commit
#
# Untracked files: \\没跟踪的文件
# (use "git add <file>..." to include in what will be committed)
#
# passwd
nothing added to commit but untracked files present (use "git add" to track)
# git add passwd \\将文件添加到暂存区
# git reset HEAD passwd \\将已添加到暂存区的文件从暂存区撤除
# git commit -m "add passwd" \\将文件提交到版本库 -m后为描述信息
[master (root-commit) c30efe0] add passwd
files changed, insertions(+), deletions(-)
create mode passwd
# git status
# On branch master
nothing to commit (working directory clean)
# echo bbbbbbb >> passwd
# git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)

(4)版本比较

版本比较有两种情况:

a.未添加到暂存区

# git diff passwd                        \\将工作区和最近一次版本进行比较

b.已添加到暂存区

# git diff --cached passwd         \\将暂存区和最近一次版本进行比较

# git add passwd                          \\跟前面一样两步提交
# git commit -m "append bbb..."
[master ] append bbb...
files changed, insertions(+), deletions(-)

(5)查看修改记录

# git log
commit 5630321b52cd9218359685ea9092ab495de545ee
Author: root <root@localhost>
Date: Fri Feb :: + append bbb... commit c30efe02cc6db7f35446c1b3036531a6e039b59b
Author: root <root@clone12.uplooking.com>
Date: Fri Feb :: + add passwd
# git log --pretty=oneline \\简洁显示(只显示版本号和描述信息)
5630321b52cd9218359685ea9092ab495de545ee append bbb...
c30efe02cc6db7f35446c1b3036531a6e039b59b add passwd

(6)撤销修改

#git checkout -- filename

撤销修改分两种情况:
  a. 如果在工作区进行了修改,但未添加到暂存区,撤销后将回到修改前的状态
  b. 如果进行修改后已添加到暂存区又进行了修改,撤销后将回到暂存区的状态

(7)版本回退

# git reset --hard HEAD^         \\回退到上一个版本 ,如果是上两个版本就接两个^^, ...
HEAD is now at c30efe0 add passwd
# cat passwd \\下面添加的内容没有了

如果版本太多可用:

# git log --pretty=oneline
c5076eb443e128fff13e076575433b8c8868055f change bin upper
6fffe8ab3a5bde75cb25493a73588e92eda4c19c delete root
c30efe02cc6db7f35446c1b3036531a6e039b59b add passwd
# git reset --hard HEAD~ \\HEAD~=HEAD^^
HEAD is now at c30efe0 add passwd

如果发现回退错了:

# git reflog
c30efe0 HEAD@{}: HEAD~: updating HEAD
c5076eb HEAD@{}: commit: change bin upper
6fffe8a HEAD@{}: commit: delete root
c30efe0 HEAD@{}: HEAD^: updating HEAD
HEAD@{}: commit: append bbb...
# git reset --hard 6fffe8a \\用版本号回退
HEAD is now at 6fffe8a delete root

(8)删除文件

# rm -rf  passwd
# git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: passwd
#
no changes added to commit (use "git add" and/or "git commit -a")
# git commit -m "delete passwd"

(9)给版本打标

git tag -a v1. -m "release 1"     \\给最近的版本打标
git tag -a v0. -m "change bin upper" c5076eb \\给之前的某个版本打标
git checkout v0. \\回退到打标的某个版本

三、分支管理

什么时候需要建分支?
  a、为自己创建私人分支,避免和其他人产生干扰
  b、做一个具有风险性的试验性更新
  c、整合与其他人的工作,创建一个临时分支
  d、将一部分代码分离出来,使其独立工作

(1)创建分支

# git branch test       \\test为分支的名字,自定义
# tree .git/refs/
.git/refs/
├── heads
│   ├── master
│   └── test └── tags

(2)切换分支 checkout

# git checkout test
Switched to branch 'test'

(3)查看当前操作的分支

# git branch
master
* test

(4)删除分支

# git checkout master  \\先切回其他分支
Switched to branch 'master'
# git branch -d test \\再删除想要删除的分支
Deleted branch test (was aef4cba).

(5)查看和比较分支

# git branch develop
# echo hi >> file2
# git checkout develop
Switched to branch 'develop'
# git add file2
# git commit -m "add file2" 分支的比较
# git diff master ^develop

(6)合并分支

# git checkout master
Switched to branch 'master'
# git merge develop \\合并develop分支到当前分支

解决冲突:
如果两个分支对相同文件的相同内容做了不同的修改,那么在合并时冲突在所难免,出现冲突后就需要手工解决冲突再提交

合并管理:
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。我们在进行分支合并时,可加上--no-ff选项强制禁用Fast forward模式.

git log --graph --pretty=oneline

四、四人协作

三台机器:

public:10.10.10.11
clone2: 10.10.10.12
clone3: 10.10.10.13

三台机器安装git

(1)public配置

# mkdir /project
# cd /project
# git init
Initialized empty Git repository in /project/.git/
# echo a > a
# echo b > b
# git config --global user.name "public"
# git config --global user.email public@up.com
# git add a b
# git commit -m "public add a b"
[master (root-commit) 0fd0dd3] public add a b
files changed, insertions(+), deletions(-)
create mode a b

(2)clone2操作

# mkdir /git-clone2
# git config --global user.name "clone2"
# git config --global user.email clone2@up.com
# git clone 10.10.10.11:/project /git-clone2 \\将公共服务器上的版本库>克隆到本地
# cd /git-clone2/
# ls
a b
# cat a
a
# echo clone2 >> a
# git add a
# git commit -m "clone2 modify a add clone2"

(3)clone3操作

# mkdir /git-clone3
# git config --global user.name "clone3"
# git config --global user.email clone3@up.com
# git clone 10.10.10.11:/project /git-clone3
# echo clone3 >> b
# git add b
# git commit -m "clone3 modify a add clone3"

(4)public从clone2抓取

# git pull 10.10.10.12:/git-clone2
# cat a
a
clone2

(5)public从clone3抓取

# git pull root@10.10.10.13:/git-clone3
# cat b
b
clone3

如果两个人修改未发生冲突的情况下,都是可以正常提交的
如果两个人修改发生冲突,那么需要手动解决冲突之后再提交或者合并。

Git——基本操作(三)的更多相关文章

  1. git入门三(远程、标签)

    git 入门三 (远程.标签)     分布式版本控制管理系统本地仓库和中心服务器仓库数据是本地的镜像仓库,中心服务器数据仓库的是为了多用户数据合并和获取同步的中心,多人协作需要管理这些远程仓库,以便 ...

  2. Git 笔记三 Git的初步使用

    Git 笔记三 Git的初步使用 在上一篇中,学习了如何配置Git环境,这一篇,开始学习Git的初步使用.Git的初步使用还是很简单的.总体上知道git init, git clone, git ad ...

  3. 1.Git起步-Git的三种状态以及三种工作区域、CVCS与DVCS的区别、Git基本工作流程

    1.Git基础 版本控制系统是一种用于记录一个或多个文件内容变化,以便将来查阅恢复特定版本修订情况的系统. Git是一种分布式版本控制系统(Distributed Version Control Sy ...

  4. Git基本操作和GtHub 特殊技巧

    <GitHub 入门与实践> 笔记 了解GitHub Git 和 GitHub 的区别 在Git中,开发者将源代码存入名为"Git仓库"的资料库中,并加以使用.而Git ...

  5. Git学习系列之Git基本操作拉取项目(图文详解)

    前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...

  6. Git学习系列之Git基本操作推送项目(图文详解)

    前面博客 Git学习系列之Git基本操作提交项目(图文详解) 如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的 user.name 和 user.email, 如果 ...

  7. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  8. Git学习系列之Git基本操作克隆项目(图文详解)

    不多说,直接上干货! 想必,能进来看我写的这篇博文的朋友,肯定是了解过. 比如SVN的操作吧,最常见的是 检出(Check out ...), 更新 (Update ...), 以及 提交(Commi ...

  9. 从零开始使用git第三篇:git撤销操作、分支操作和常见冲突

    从零开始使用git 第三篇:git撤销操作.分支操作和常见冲突 第一篇:从零开始使用git第一篇:下载安装配置 第二篇:从零开始使用git第二篇:git实践操作 第三篇:从零开始使用git第三篇:gi ...

  10. Git-Runoob:Git 基本操作

    ylbtech-Git-Runoob:Git 基本操作 1.返回顶部 1. Git 基本操作 Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比.本章将对有关创建与提交你的项目快照的命令作 ...

随机推荐

  1. 利用gulp构建你的项目

    gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码,而且大 ...

  2. javax.mail Java Extension(扩展)

    http://baike.baidu.com/view/616724.htm JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便 ...

  3. xcode几个常用的快捷键

    command + ctrl + e   修改变量的名称:选中某个变量,按下该快捷键,可以批量修改对应的变量名称 command + shift + j 定位到文档导航界面,然后通过上下方向键,可以快 ...

  4. IIS7应用程序池集成和经典的区别 对IIS7经典模式和集成模式的理解 程序池经典和集成的区别

    IIS7应用程序池集成和经典的区别   IIS7应用程序池集成和经典的区别 IIS7应用程序池有集成和经典两种模式,根据微软官方的介绍, 集成模式,如果托管应用程序在采用集成模式的应用程序池中运行,服 ...

  5. float数据在内存中的存储方法

    浮点型变量在计算机内存中占用4字节(Byte),即32-bit.遵循IEEE-754格式标准.一个浮点数由2部分组成:底数m 和 指数e.                          ±mant ...

  6. sklearn--feature extract--人脸识别

    1.原始数据加载 import matplotlib.pyplot as plt from sklearn.datasets import fetch_lfw_people people=fetch_ ...

  7. Machine Learning——Unsupervised Learning(机器学习之非监督学习)

    前面,我们提到了监督学习,在机器学习中,与之对应的是非监督学习.无监督学习的问题是,在未加标签的数据中,试图找到隐藏的结构.因为提供给学习者的实例是未标记的,因此没有错误或报酬信号来评估潜在的解决方案 ...

  8. two sum, three sum和four sum问题

    1. two sum问题 给定一组序列:[-4 -6 5 1 2 3 -1 7],然后找出其中和为target的一对数 简单做法:两层循环遍历,时间复杂度为n^2 升级版:对给定的序列建立一个hash ...

  9. unittest 结合 ddt

    数据驱动测试ddt,使用的重点: 1.@ddt.ddt2.@ddt.data(*zip(range(10),range(10,20)))       注意一定要带* 3.@ddt.unpack # c ...

  10. cnn 实例

    http://www.geekcome.com/content-10-3761-1.html http://www.geekcome.com/content-10-3761-1.html http:/ ...