一、安装和配置

1.Git安装

  1. 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 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:

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

3.获取帮助

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

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

二、Git的简单使用

(1)创建工作区

  1. # mkdir /git

(2)创建版本库

  1. # cd /git/
  2. # git init
  3. Initialized empty Git repository in /git/.git/

(3)版本提交

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

(4)版本比较

版本比较有两种情况:

a.未添加到暂存区

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

b.已添加到暂存区

  1. # git diff --cached passwd \\将暂存区和最近一次版本进行比较
  2.  
  3. # git add passwd \\跟前面一样两步提交
  4. # git commit -m "append bbb..."
  5. [master ] append bbb...
  6. files changed, insertions(+), deletions(-)

(5)查看修改记录

  1. # git log
  2. commit 5630321b52cd9218359685ea9092ab495de545ee
  3. Author: root <root@localhost>
  4. Date: Fri Feb :: +
  5.  
  6. append bbb...
  7.  
  8. commit c30efe02cc6db7f35446c1b3036531a6e039b59b
  9. Author: root <root@clone12.uplooking.com>
  10. Date: Fri Feb :: +
  11.  
  12. add passwd
  13. # git log --pretty=oneline \\简洁显示(只显示版本号和描述信息)
  14. 5630321b52cd9218359685ea9092ab495de545ee append bbb...
  15. c30efe02cc6db7f35446c1b3036531a6e039b59b add passwd

(6)撤销修改

  1. #git checkout -- filename

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

(7)版本回退

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

如果版本太多可用:

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

如果发现回退错了:

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

(8)删除文件

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

(9)给版本打标

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

三、分支管理

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

(1)创建分支

  1. # git branch test \\test为分支的名字,自定义
  2. # tree .git/refs/
  3. .git/refs/
  4. ├── heads
  5.    ├── master
  6.    └── test └── tags

(2)切换分支 checkout

  1. # git checkout test
  2. Switched to branch 'test'

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

  1. # git branch
  2. master
  3. * test

(4)删除分支

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

(5)查看和比较分支

  1. # git branch develop
  2. # echo hi >> file2
  3. # git checkout develop
  4. Switched to branch 'develop'
  5. # git add file2
  6. # git commit -m "add file2"
  7.  
  8. 分支的比较
  9. # git diff master ^develop

(6)合并分支

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

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

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

  1. git log --graph --pretty=oneline

四、四人协作

三台机器:

  1. public10.10.10.11
  2. clone2: 10.10.10.12
  3. clone3: 10.10.10.13

三台机器安装git

(1)public配置

  1. # mkdir /project
  2. # cd /project
  3. # git init
  4. Initialized empty Git repository in /project/.git/
  5. # echo a > a
  6. # echo b > b
  7. # git config --global user.name "public"
  8. # git config --global user.email public@up.com
  9. # git add a b
  10. # git commit -m "public add a b"
  11. [master (root-commit) 0fd0dd3] public add a b
  12. files changed, insertions(+), deletions(-)
  13. create mode a b

(2)clone2操作

  1. # mkdir /git-clone2
  2. # git config --global user.name "clone2"
  3. # git config --global user.email clone2@up.com
  4. # git clone 10.10.10.11:/project /git-clone2 \\将公共服务器上的版本库>克隆到本地
  5. # cd /git-clone2/
  6. # ls
  7. a b
  8. # cat a
  9. a
  10. # echo clone2 >> a
  11. # git add a
  12. # git commit -m "clone2 modify a add clone2"

(3)clone3操作

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

(4)public从clone2抓取

  1. # git pull 10.10.10.12:/git-clone2
  2. # cat a
  3. a
  4. clone2

(5)public从clone3抓取

  1. # git pull root@10.10.10.13:/git-clone3
  2. # cat b
  3. b
  4. 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. Recycling Settings for an Application Pool <recycling>

    Overview The <recycling> element contains configuration settings that control the conditions t ...

  2. 通用对话弹窗CommonDialog

    代码地址如下:http://www.demodashi.com/demo/12592.html 通用对话弹窗CommonDialog Version 1.0 Created by chenchangj ...

  3. [linux]iostat命令详解-监视系统输入输出设备和CPU的使用情况

    部分转载https://blog.csdn.net/sunansheng/article/details/51942281 iostat命令被用于监视系统输入输出设备和CPU的使用情况.它的特点是汇报 ...

  4. Linux如何查看进程、杀死进程、查看端口等常用命令

    查看进程号 1.ps 命令用于查看当前正在运行的进程.grep 是搜索 例如: ps -ef | grep java表示查看所有进程里 CMD 是 java 的进程信息2.ps -aux | grep ...

  5. flex-direction用法解释

    语法: flex-direction:row | row-reverse | column | column-reverse 默认值:row 适用于:flex容器 继承性:无 动画性:否 计算值:指定 ...

  6. Ctrl/Alt 快捷键

    Ctrl+S 保存   Ctrl+W 关闭程序   Ctrl+N 新建文档   Ctrl+O 打开(选择打开其他文档)   Ctrl+Z 撤销   Ctrl+F 查找   Ctrl+X 剪切   Ct ...

  7. SlidingMenu+Fragment实现当前最流行的侧滑

    1 http://www.krislq.com/2013/03/android_case_slidingmenu_fragment/ 2 https://github.com/jfeinstein10 ...

  8. 两个页面js方法兼容

    1. a.js页面 //Js获取Url参数 function request(paras) { var url = location.href; var paraString = url.substr ...

  9. PHP面试题及答案解析(5)—数据结构与算法

    1.使对象可以像数组一样进行foreach循环,要求属性必须是私有.(Iterator模式的PHP5实现,写一类实现Iterator接口) <?php class Test implements ...

  10. nginx 做前端代理时proxy参数配置

    1.后台可登录: proxy_connect_timeout 300s; proxy_send_timeout ; proxy_read_timeout ; proxy_buffer_size 256 ...