Git操作流程,基本命令演示
任务列表:
有一个中央库Center,和三个工作站A,B,C。
初始化时,代码存放在中央库中,A,B,C三个工作站开始工作之前都要首先从中央库克隆一份代码到本地。
第一个任务:A和B合作修复一个缺陷,要求是A先开始修复,B在A修复的基础上接着修复,然后由B把修改好的缺席推送到中央库的master上。
第二个任务:C在中央库的基础上新建一个分支开始自己的开发,并把自己新建的分支推送到中央库。
第三个任务:A和B合作修复好第一个缺席之后,A自己单独修复第二个缺席,并推送到中央库的master分支上。
第四个任务:B要等A修复完第二个缺陷和C开发完自己的代码后,把中央库上的master分支和C推送的分支合并,并推送回中央库的master分支。
1.中央库
①初始化中央库,并执行一次提交
- $ git init
- Initialized empty Git repository in /home/greta/GitTest/Center/.git/
- $ git add .
- $ git commit -m "new file a"
图示如下: 
②wsB第一次推送后,中央库的变化
图示如下:

③wsC推送后,中央库的变化
图示如下:

④wsA推送后,中央库的变化:

⑤wsB第二次推送后,中央库的变化

2.工作站A的操作
①克隆中央库到工作站A
- $ git clone /home/greta/GitTest/Center/.git/ wsA
- Cloning into wsA...
- done.
从Git服务器克隆数据时,Git 会自动为你将此远程仓库命名为 origin ,并下载其中所有的数据,建立一个指向它的master 分支的指针,在本地命名为 origin/master ,但你无法在本地更改其数据。接着,Git 建立一个属于你自己的本地 master 分支,始于 origin 上 master 分支相同的位置,你可以就此开始工作。
图示如下: 
②在工作站A上建立一个branch testA,并把指针切换到testA上。
- $ git checkout -b testA
- Switched to a new branch 'testA'
这里的命令$ git chekout -b testA实际上是两个命令的合并,相当于执行:
$git branch testA
$git checkout testA
图示如下(*表示当前wsA上head指针的位置): 
③在wsA上执行一次提交
- $ git add .
- $ git commit -m "submit on wsA(second)"
图示如下:
3.工作站B上的操作
①克隆中央库到工作站B
- $ git clone /home/greta/GitTest/Center/.git/ wsB
- Cloning into wsB...
- done.
图示如下:
②把工作站A的远程分支testA添加到工作站B,并把wsA上分支testA上的数据合并到本机的master上
- $ git remote add wsA /home/greta/GitTest/wsA/.git
- $ git fetch wsA
- remote: Counting objects: 5, done.
- remote: Total 3 (delta 0), reused 0 (delta 0)
- Unpacking objects: 100% (3/3), done.
- From /home/greta/GitTest/wsA/
- * [new branch] master -> wsA/master
- * [new branch] testA -> wsA/testA
- $ git merge wsA/testA
- Updating 20f3246..eb0f47b
- Fast-forward
- a.txt | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
用$git remote add命令添加远程分支时,会把远程机器上所有的分支都加载到本地机器上。
图示如下:

③在wsB上做些修改,并提交
- $ git add .
- $ git commit -m "submit on wsB(third)"
- [master de9ed05] submit on wsB(third)
- 1 files changed, 1 insertions(+), 0 deletions(-)
图示如下:

④把wsB上master分支的内容提交到中央库中。
- $ git push
- Counting objects: 8, done.
- Compressing objects: 100% (2/2), done.
- Writing objects: 100% (6/6), 493 bytes, done.
- Total 6 (delta 0), reused 0 (delta 0)
- Unpacking objects: 100% (6/6), done.
- To /home/greta/GitTest/Center/.git/
- 20f3246..de9ed05 master -> master
图示如下:

中央库的变化图示请参照 1.中央库-->②wsB第一次推送后,中央库的变化
4.工作站C的操作
①克隆中央库到本机
- $ git clone /home/greta/GitTest/Center/.git/ wsC
- Cloning into wsC...
- done.
图示如下:

②在wsC上新建一个branch testC并把testC推送到中央库
- $ git checkout -b testC
- Switched to a new branch 'testC'
- $ git add .
- $ git commit -m "submit on wsC(Fourth)"
- $ git push origin testC
- Counting objects: 5, done.
- Writing objects: 100% (3/3), 274 bytes, done.
- Total 3 (delta 0), reused 0 (delta 0)
- Unpacking objects: 100% (3/3), done.
- To /home/greta/GitTest/Center/.git/
- * [new branch] testC -> testC
图示如下:

中央库的图示请参见:1.中央库--->③wsC推送后,中央库的变化
5.wsC推送后wsA上操作
①同步wsA与中央库
- $ git fetch
- remote: Counting objects: 8, done.
- remote: Compressing objects: 100% (2/2), done.
- remote: Total 6 (delta 0), reused 0 (delta 0)
- Unpacking objects: 100% (6/6), done.
- From /home/greta/GitTest/Center/
- 20f3246..de9ed05 master -> origin/master
- * [new branch] testC -> origin/testC
图示如下:

②合并 wsA上master与中央库的master,删除分支testA, 在中央库master的基础上提交
- $ git checkout master
- Previous HEAD position was e3e1972... submit on wsC(Fourth)
- Switched to branch 'master'
- Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
- $ git merge origin master
- Fast-forwarding to: origin
- Already up-to-date with master
- Merge made by octopus.
- a.txt | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
- $ git branch -d testA
- Deleted branch testA (was eb0f47b).
- $ git add .
- $ git commit -m "submit on wsA(fifth)"
- [master 52ef8ce] submit on wsA(fifth)
- 1 files changed, 2 insertions(+), 0 deletions(-)
图示如下:

③推送到中央库
- $ git push
- Counting objects: 6, done.
- Compressing objects: 100% (2/2), done.
- Writing objects: 100% (4/4), 447 bytes, done.
- Total 4 (delta 0), reused 0 (delta 0)
- Unpacking objects: 100% (4/4), done.
- To /home/greta/GitTest/Center/.git/
- de9ed05..52ef8ce master -> master
图示如下:

wsA推送后,中央库的变化请参照:1.中央库---->
④wsA推送后,中央库的变化
6.wsA推送后wsB的操作
①同步中央库
- $ git fetch
- remote: Counting objects: 9, done.
- remote: Compressing objects: 100% (3/3), done.
- remote: Total 7 (delta 0), reused 0 (delta 0)
- Unpacking objects: 100% (7/7), done.
- From /home/greta/GitTest/Center/
- de9ed05..52ef8ce master -> origin/master
- * [new branch] testC -> origin/testC
图示如下:

②合并34ac4和34ac3两个操作:
- $ git merge origin master
- Fast-forwarding to: origin
- Already up-to-date with master
- Merge made by octopus.
- a.txt | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
- $ git merge origin/testC
- Auto-merging a.txt
- CONFLICT (content): Merge conflict in a.txt
- Automatic merge failed; fix conflicts and then commit the result.
- $ git mergetool
- $ git commit -m "merge on wsB"
- $ git push
- Counting objects: 8, done.
- Compressing objects: 100% (2/2), done.
- Writing objects: 100% (4/4), 472 bytes, done.
- Total 4 (delta 0), reused 0 (delta 0)
- Unpacking objects: 100% (4/4), done.
- To /home/greta/GitTest/Center/.git/
- 52ef8ce..bf54de7 master -> master
图示如下:

Git操作流程,基本命令演示的更多相关文章
- Git的基本命令介绍
Git的安装 进入官网下载系统所需要的版本 官网地址:https://git-scm.com/downloads 点击下载按钮官方网站一般会根据操作系统的自动下载所需要的Git版本. 下载完成后,点 ...
- Git学习(一)——熟悉git操作流程
本篇笔记前面都是仔细介绍使用方法,如果想跳过这些直接熟悉怎么使用,跳到最后一个知识点完整流程介绍. git 了解:特点.优点 1.git用户版和服务版整合在一起,任何机器上都安装了两个版本 2.git ...
- 相见恨晚的 Git 命令动画演示,一看就懂!
虽然 Git 是一个强大的工具,但是我觉得大部分人都会同意我说的:它也可以是一个--噩梦!我一直觉得,使用 Git 的时候把操作过程在脑海里视觉化会非常有用:当我执行某个命令的时候,分支之间是如何交互 ...
- Git使用- 基本命令
$ git config --global user.name "Your Name" 全局 name 设置 $ git config --global user.email ...
- Git Shell 基本命令(官网脱水版)
用户信息 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址. 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改: $ git conf ...
- git 的基本命令
...git init ...git add ...git commit -m "first commit" ...git remote add origin https://gi ...
- Git: 一些基本命令
1.快速获取远程项目 1) git clone xxx.git // 如:git clone git://git.kernel.org/pub/scm/git/git.git 2) git clone ...
- 【Git】基本命令使用
init: 1 git init 添加远程分支: 1 git remote add <远程主机名> <远程主机地址url> 例如:git remote add origin ...
- Git之基本命令
先介绍一下Git: Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前, ...
随机推荐
- 使用SSH快速下载Git项目
文章首发于[博客园-陈树义],点击跳转到原文使用SSH快速下载Git项目. Git下载项目的几种方式 Git是常用的代码版本技术,而GitLab则是开源的Git版本管理软件,GitLab是最受欢迎的版 ...
- MongoDB之建立Windows和本地虚拟机的双向连接
本文主要分享如何将MongoDB数据库在Windows系统和本地虚拟机系统建立双向连接,我们将借助MongoDB的可视化工具Robomongo来实现.首先,应该确保你的Windows系统和本地虚拟机系 ...
- Android 7.1 屏幕旋转流程分析
Android 7.1 屏幕旋转流程分析 一.概述 Android屏幕的旋转在framework主要涉及到三个类,结构如图 PhoneWindowManager:为屏幕的横竖屏转换的管理类. Wi ...
- 如何在BIOS里设置定时关机?
如何在BIOS里设置定时关机? 通过CMOS设置实现定时开机的设置过程如下: 首先进入"CMOS SETUP"程序(大多数主板是在计算机启动时按DEL键进入): 然后将光条移到&q ...
- Python爬虫:用BeautifulSoup进行NBA数据爬取
爬虫主要就是要过滤掉网页中没用的信息.抓取网页中实用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解.如网页的标签,网页的语言等知识,推荐去W3School: W3s ...
- OpenCV基础篇之查找表
程序及分析 /* * FileName : lookup_table.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Su ...
- 关于无法全然下载CyanogenMod代码的问题
CyanogenMod真的是一个奇妙的东东,它让开发手机固件不再是手机生产商的专利,每一个有志于此的程序猿都可能为自己的手机定制一份专有的,独一无二的固件,这在曾经是想都不敢想的. 而且Cyanoge ...
- Android中使用ContentProvider进行跨进程方法调用
原文同一时候发表在我的博客 点我进入还能看到很多其它 需求背景 近期接到这样一个需求,须要和别的 App 进行联动交互,比方下载器 App 和桌面 App 进行联动.桌面的 App 能直接显示下载器 ...
- Launcher知识的demo,手机管家小伙家与悬浮窗
Launcher知识的demo.主要仿的手机管家小伙家与悬浮窗的效果.东西比較简单.直接贴代码 主要用到了windowManager 中的更新updateViewLayout(view,params) ...
- 【日常学习】【线性DP】codevs1044 拦截导弹题解
题目描写叙述 Description 某国为了防御敌国的导弹突击,发展出一种导弹拦截系统.可是这样的导弹拦截系统有一个缺陷:尽管它的第一发炮弹可以到达随意的高度,可是以后每一发炮弹都不能高于前一发的高 ...