git 使用初步

目前公司使用gitlab搭建了git服务器,在此记录一下工作中经常要用的命令。

git介绍最权威的当然还是官网,下面调重点来说:

参考链接http://git-scm.com/book/zh/%E8%B5%B7%E6%AD%A5-Git-%E5%9F%BA%E7%A1%80

  • 理念

git的理念是速度、完全分布式,git的速度速度得益于其独创的以文件快照的形式保存不同版本之间的文件,完全分布是因为git在每个client端都保存着和server端同样的数据,这样git可以很快的比较版本之间的差异,在没有网络的情况下也能正常工作,这么做一个最大的好处是,避免了server宕机的问题,因为每个client都保存这全部信息,恢复比较容易。

  • git中文件的三种状态

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。

已提交:是说该文件已经被保存到本地仓库中

已修改:是说该文件被修改了,但是还没有被保存的本地仓库中

已暂存:是说该文件在下次提交时,会被保存到本地仓库中(提交的git命令后面在命令讲解部分会提到)

所以我们在本地操作时经常是在这三种情况下转换:下面一张图说明这三种状态的转换

woking directory存放的是已修改的文件,也就是工作目录

staging area存放的是已暂存的文件,也就是暂存区域

git directory存放的是已提交的文件,也就是本地仓库

每个项目都有一个git目录(如果 git clone 出来的话,就是其中 .git 的目录;如果 git clone --bare 的话,新建的目录本身就是 Git 目录),它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。可以看出这也就是本地仓库。

工作目录就是从项目的git目录中取出某个版本的所有文件和目录用以后续工作的目录。

暂存区域其实是个简单的文件,一般都放在git目录中,有时也会称之为索引文件

  • 安装git

ubuntu等类Debian系统一行命令搞定

sudo apt-get install git

其他系统参照:http://git-scm.com/book/zh/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

  • 初始化

git和其他linux系统的软件一样,配置文件分为全局的,和每个用户级别的。

系统级别的是/etc/gitconfig文件,git config 时用 --system 选项,读写的就是这个文件。

用户级别的是~/.gitconfig文件,git config 时用 --global 选项,读写的就是这个文件。

除了这两个之外,git还可以为每个单独的项目提供特有的配置,在项目的git目录下的config文件

距离项目近的配置文件会覆盖上一级配置文件

一般来说必须要配置的是user.name和user.email这两个属性,可以使用下面的命令

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

由于使用了--global参数,所以设置的配置是用户级别的

查看设置的参数可以使用git config --list 命令,也可以查具体的属性值git config user.name

git的所有命令都可以通过git help <cmd>来查看用法。

到这里,你就已经完成了git所具备的基础知识了。

下面将要介绍的是完成上述理念所使用的具体命令

具体参照:http://git-scm.com/book/zh/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93

------add 2014-5-8 --

上面这些都是花架子,不能实用,下面重点说说最近一直比较迷糊的概念git push与git pull相关代码:

git remote add origin git@github.com/jiacai2050/ssss.git

要想push代码,首先要先有个远程repository,这个命令中origin相当于本地的指针,指向github上的git@github.com/jiacai2050/ssss.git

之后再执行

git push origin master

这样就是本地的当前所在分支上的修改push到了origin仓库的master分支

多人协作时的大概流程:(角色jiacai2050:普通开发者, leader:项目组长)

假设现在在leader的github中有个ssss的项目,现在jiacai2050想开发个add_log功能,流程如下

1.开个本地分支,这样才有写权限

2.

git checkout -b  add_log #添加新功能

添加一个新分支,用于添加新功能

3.做一些修改后,执行

git push origin add_log 

这样就将本地的add_log分支(假设你目前就是在add_log分支上)推向github上fork的仓库中,并且新创建一个add_log分支
然后就可以发个pull request

leader看到这个pull request后,想要merge 这个请求的大概流程:

git remote add jiacai2050 git@github.com/jiacai2050/ssss.git #创建一个指向我的指针

之后再

git fetch jiacai2050 #把jiacai2050的代码拉下来
git branch -b test #再创建一个新的test分支,用于测试,这里不直接使用master分支是为了保持master的安全性

git checkout -b test
git merge jiacai2050/ssss
#切换到test分支后,把jiacai2050的ssss合并过来,进行测试

git checkout master
git merge test
#测试通过后在回到master分支上,

#到现在为止,test特殊分支没有用了,删除
git branch -D test
#然后再推到github的仓库中
git push origin master

这样,leader就完成了合并操作。

 

#到现在为止,jiacai2050的贡献就算是做完了。删除我的add_log分支
git remove -D add_log
git push origin :add_log #删除jiacai2050的github上的add_log分支
如果jiacai2050还想做修改,之后可以这么做
git remote add upstream   git@github.com/others/ssss.git #在本地建立一个指向leader仓库的指针
git checkout master
git pull upstream #拉回最新的修改,这个需要经常做

git checkout -b new_idea #重复add_log的操作即可

以上流程参照http://happycasts.net/episodes/60?autoplay=true,欢迎大家去看这个视频,真的是浅显易懂,这个老师的声音也有好磁性的说。
 

时间: 2024-10-04 01:47:52

git 使用初步的相关文章

Git 系列(二):初步了解 Git

在这个系列的介绍篇中,我们学习到了谁应该使用 Git,以及 Git 是用来做什么的.今天,我们将学习如何克隆公共 Git 仓库,以及如何提取出独立的文件而不用克隆整个仓库. 由于 Git 如此流行,因而如果你能够至少熟悉一些基础的 Git 知识也能为你的生活带来很多便捷.如果你可以掌握 Git 基础(你可以的,我发誓!),那么你将能够下载任何你需要的东西,甚至还可能做一些贡献作为回馈.毕竟,那就是开源的精髓所在:你拥有获取你使用的软件代码的权利,拥有和他人分享的自由,以及只要你愿意就可以修改它的

将代码从Git自动部署到容器

本文讲的是将代码从Git自动部署到容器[编者的话]将您的代码从您的Git仓库转移到您的容器可能是一件痛苦的工作.本文介绍了如何实现自动化部署. [烧脑式Kubernetes实战训练营]本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理.Kubernetes DNS与服务发现.基于Kubernetes和Jenkins的持续部署方案 .Kubernetes网络部署实践.监控.日志.Kubernetes与云原生应用.在CentOS中部署Kubernetes集群.Kubernetes

Git探秘:深入探索(2/2)

概念 通过上篇文章,初步接触Git的朋友应该已经对Git有所了解了,既然你已经打开了这篇文章,说明你对深入了解Git有强烈的欲望,那就跟着我一起先来深入了解一下Git相关的概念. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如上文中的 reading-ist 文件夹就是一个工作区 本地版本库(Local Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. 暂存区(stage) 本地版本库里存了很多东西,其中最重要的就是称为s

Git详解之六 Git工具(转)

Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你将领略到一些 Git 可以实现的非常强大的功能,这些功能你可能并不会在日常操作中使用,但在某些时候你也许会需要.   6.1  修订版本(Revision)选择 Git 允许你通过几种方法来指明特定的或者一定范围内的提交.了解它们并不是必需的,但是了解一下总没坏处. 单个修订版本 显然你可以使用给出

Git详解之六:Git工具

原文地址:http://blog.jobbole.com/26112/ 原文:<Pro Git> Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读) 接下来你将领略到一些 Git 可以实现的非常强大的功能,这些功能你可能并不会在日常操作中使用,但在某些时候你也许会需要. 6.1 

git/github学习笔记

1. git 版本控制系统 相比CVS\SVN优势: - 支持离线开发,离线Repository - 强大的分支功能,适合多个独立开发者协作 - 速度块 ps:关于git的更详细的介绍于优点在此就不介绍了,教大家怎么用是关键.:) ==============运行环境======== 系统:windows git : Git-1.7.3.1-preview20101002.rar  下载地址:http://d.download.csdn.net/down/3169511/z_y_liu89 ==

一篇文章,教你学会Git

在日常工作中,经常会用到Git操作.但是对于新人来讲,刚上来对Git很陌生,操作起来也很懵逼.本篇文章主要针对刚开始接触Git的新人,理解Git的基本原理,掌握常用的一些命令. 一.Git工作流程 以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词. Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 工作区 程序员进行开发改动的地方,是你当前看到的,也是最新的. 平常我们开发就是拷贝远程仓库

nodejs初步体验篇_node.js

前言:写这篇文章的由来: 1.前段时间单位有新项目启动,服务端要做的工作不多也不算麻烦,就是处理一些中间层的服务,而且我们团队里面个个都会JavaScript,领导就决定试试服务器端的JavaScript,结果本人有幸被派去研究了几天Node,怀着鸡冻的心情开始了node.js的篇章,这篇文章也就是为这几天研究的总结. 2.一个JavaScript工程师如果没听过node.js那么我想你是不是错过了什么,每个优秀的前端工程师都有必要去了解后台处理流程,那么如果又能从JavaScript出发,岂不

C编程vim初步配置

C编程vim初步配置 我的 .vimrc文件 "******************************************************** " 一般性配置 * "********************************************************   "关闭vim一致性原则 set nocompatible   "显示行号 set number   "设置在编辑过程中右下角显示光标的行列信息 se