git环境的搭建这里就先不说。本篇主要是普通开发工作者在开发过程中所使用的命令。

  

作为开发者,别人搭建git服务器之后,你呢就配置个人的客户端:

设置Git的配置变量,这个是一次性的工作.即这些设置会在全局文件(用户主目录下的.gitconfig)中做永久的记录.

这个.gitconfig文件并不跟随.git文件夹进行更改.而是每次设置一次就会更改重写这个.config文件.

  git config --global user.name "yourname"
  git config --global user.email "xxxx@gmail.com"

这个地方我说一下git仓库的初始化的问题:

一般的初始化操作都是git init 命令.

但是这个仓库一般初始化到了cmd 默认的路径上了.

我的就是 cmd打开默认就是 C:\Users\kongxiaohan>

如果在Git Brash上进行git init 命令初始化仓库的话 对应生成的.git文件夹就在C:\Users\kongxiaohan>这个路径上生成了.

Git对应的仓库就是C:\Users\kongxiaohan> 在这个kongxiaohan文件夹中.

很多程序默认都向这个文件夹中放.不方便,建议另外选择一个文件夹.

例如我在D盘建立了一个文件夹(git)做为git的仓库.

在Git Brash中

cd D:

cd git(如果这个时候D盘中没有git文件夹,用mkdir git命令)

再git init 就在D盘的git文件夹中成功建立了一个git仓库.

这个.git目录就是Git的版本库.(又叫仓库,repository)

.git文件夹所在的文件夹(我这里是git)是叫做工作区.

关于切换到指定的路径上面讲的是一种方式,还有一种比较简单快捷的方式.

在你想指定的工作区右键(前提你要安装好git安装程序)git brash 这样就可以把git的目录指定在了右键GitBrash的文件目录上(偶然才发现....感觉自己好菜鸟).

设置Git中的别名,以便可以适用更为简洁的子命令.

在本用户的全局配置中增加Git命令的别名:

$ git config --global alias.ci commit

$ git config --global alias.st status

$ git config --global alias.co check

$ git config --global alias.br branch

在Git 命令输出中开启颜色显示(暂时没有体会到这个配置执行之后的效果)

$ git config --global color.ui true

我的项目共享在了github上 找到对应项目的路径.

检出仓库(用到了git clone命令):

下图是把项目检出之后(正在检出)的git brash的状态.

clone完毕(最好选择一个小的项目clone,否则花费太长的时间)

向git中添加文件.

1.添加某一个固定的文件git add XXXX.xxx (后跟文件名)

2.添加所有的文件  git add . (全部的文件)

3.添加某一类的文件 git add *.docx(添加了所有的.docx文件结尾的文件)

适用于这种通配符的表示.

下面为这个工作区中加点东西.在工作区中创建一个welcome.txt,内容就是一行"Hello World"

执行命令

$ echo "Hello World" >welcome.txt

这样在工作区中有了一个welcome.txt 文件中有一个HelloWorld.

将这个新建立的文件添加到版本库中

$git add welcome.txt

到这里还没有完和SVN一样需要再执行一个commit操作.但是和SVN不同的是在commit的时候必须要写上提交说明.这个要求对于

Git来说是强制性的.不像SVN那样接受空白的提交说明.当Git提交时,如果不在命令行提供提交说明(就是使用-m参数).Git会自动打开

编辑器,要求你在其中输入提交说明,输入完毕后保存并退出.这个地方因为是在vim编辑器上输入提交的信息.

所以要在掌握一些Vim或者emacs(Linux下常用的两种编辑器)的编辑技巧.否则保存和退出也会成为问题.(我尝试了下,没搞定.....不知道怎么保存和退出.....囧....有时间再搞)

下面进行提交.为了方便说明使用-m参数直接给出提交说明.

$ git commit -m "initialized'

反馈:

从上面的命令及输出中可以看出:

此次提交是提交在了master的分支上.(如果是该分支的第一个提交会有(root-commit))提交的ID是 b78bbdf.

从第二行可以看出是此次提交修改了一个文件,包含0行的插入.0个删除.

从第三行可以看出,此次提交创建了新文件test7.txt

为什么工作区根目录下有一个.git

Git以及其他分布式版本控制系统(如Mercurial/Hg,Bazaar)的一个共同的显著特点是,版本库位于工作区的根目录下,对于Git来说,版本库位于工作区根目录下的.git目录中,有且仅此一处,在工作区的子目录下则没有任何其他跟踪文件或者目录.Git的这种设计要比CVS和Subversion等传统的集中式版本控制工具方便多了.

传统的集中式版本控制系统的版本库和工作区是分开的,甚至是在不同的主机上,因此必须建立工作区和版本库相对应,下面来看看版本控制系统的前辈们是如何建立工作区和版本库跟踪的,通过其各自设计的优缺点,我们会更深刻的体会到Git实现的必要和巧妙.

对于Subversion而言,工作区的根目录以及每一个子目录下都有一个.svn目录,目录.svn中不仅包含了类似于CVS的跟踪目录下的配置文件,而且包含了当前工作区下每一个文件的拷贝,这些文件的原始拷贝让某些SVN子命令可以脱离版本库执行.而且,当由客户端向服务器提交时候,可以只提交改动的部分,因为改动的文件可以与文件的原始拷贝进行差异比较,但是,这么做也有缺点,除了会像CVS那样因为引入CVS跟踪目录而有可能造成信息泄露外,还会加倍占用工作区的空间,此外,当在工作区目录下针对文件内容进行搜索时候,会因为.svn目录下文件的原始拷贝导致搜索结果加倍,使搜索结果混乱.

有的版本控制系统在工作区根本就没有任何跟踪文件,例如,某款商业的版本控制软件的工作区就非常的干净,没有任何配置文件和配置目录,当时这样的设计更糟糕,因为它实际上是通过服务器端建立文件跟踪,在服务器端的数据库中报错了一个包含如下信息的表格:那个客户端,在哪个本地目录检出了那个版本的版本库文件.这样做的后果是:如果客户端将工作区移动或者改名,就会导致文件的跟踪状态丢失,从而出现文件状态未知的问题.此外,客户端操作系统重装系统也会导致文件跟踪状态丢失.

Git这种将版本库放在工作区根目录下的设计使得所有的版本控制操作(除了与其他远程版本库之间的相互操作)都在本地就可以完成,不像Subversion只有寥寥无几的几个命令脱离网络执行,而且,Git没有CVS和Subversion中存在的安全泄露问题(只要保护好.git目录),也不会像Subversion那样在搜索本地文件时候出现搜索结果混乱的问题.甚至,Git还提供了一条git grep命令来更好的搜索工作区的文件内容,例如,我们可以在本书的Git库中执行下面的命令来搜索版本库中的文件内容:

$git grep "工作区文件内容搜索"

Git将版本库(.git目录)放在工作区根目录下,那么Git的相关操作一定要在工作区根目录下执行吗?换句话说,当工作区中包含子目录,并在子目录中执行了Git命令时,如何定位版本库位置呢?

实际上,当在Git工作区的某个子目录下执行操作的时候 ,会在工作区目录中依次向上递归查找,.git目录,找到的.git目录就是工作区对应的版本库,.git所在的目录就是工作区的根目录,文件.git/index记录了工作区文件的状态(实际上是暂存区的状态).

例如,在非Git工作区执行git命令时,会因为找不到.git目录而报错.

>>>>>>未完....先总结到这里.

博客园总结

git中的tags 是一个什么概念呢?
定期消除临时branch,命令不好使?

git config 命令行各参数有什么区别(4.3 63).
是谁完成的提交 (4.4 65)
随意的设置提交者的姓名,是否不太安全(4.5 67)

使用过SVN等集中版本控制系统的用户都知道,每次提交的时候需要认证,认证成功之后,登陆ID就作为提交者ID出现在版本库的提交日志中.

修改不能直接提交吗>(5.1 70)
理解Git暂存区的概念(stage)
命令别名是干什么的?(4.6 68)

cherry-pick
checkout
git reset 步骤 soft mixed hard
git log git reflog
git diff
git reset git revert
git revert 的情况 ....
git merge git rebase
git stash
git stash apply
git stash pop

git cherry-pick

向git中提交文件.

git的提交命令为:git commit

这里要说一下 git commit 和git commit -a

git commit 提交的是暂存区里面的内容,也就是 Changes to be committed 中的文件。

git commit -a 除了将暂存区里的文件提交外,还提交 Changes bu not updated 中的文件。

添加提交信息

如果直接运行 git commit (-a) 则会默认使用 vi 添加描述。也可以使用 git config --global core.editor 命令更改为你喜欢的编辑器。还有一个方法就是使用 -m 选项直接添加提交信息。

关于git的基本命令的更多相关文章

  1. Git的基本命令介绍

    Git的安装 进入官网下载系统所需要的版本  官网地址:https://git-scm.com/downloads 点击下载按钮官方网站一般会根据操作系统的自动下载所需要的Git版本. 下载完成后,点 ...

  2. Git使用- 基本命令

    $ git config --global user.name "Your Name"   全局 name 设置 $ git config --global user.email ...

  3. Git Shell 基本命令(官网脱水版)

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

  4. git 的基本命令

    ...git init ...git add ...git commit -m "first commit" ...git remote add origin https://gi ...

  5. Git: 一些基本命令

    1.快速获取远程项目 1) git clone xxx.git // 如:git clone git://git.kernel.org/pub/scm/git/git.git 2) git clone ...

  6. 【Git】基本命令使用

    init: 1 git init 添加远程分支: 1 git remote add <远程主机名>  <远程主机地址url> 例如:git remote add origin  ...

  7. Git之基本命令

    先介绍一下Git: Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前, ...

  8. Git操作基本命令

    分支开发原则: 如果本地dev分支有修改,则需要先切换到master分支,把本地分支的修改merge回master(git merge dev),然后在master上把合并后的内容push到maste ...

  9. git常用基本命令

    一定要以管理员的身份打开,否则有些命令不能用,比如ssh -T git@github.com(查看配置ssh是否成功)@初始化git git config --global user.name ruo ...

随机推荐

  1. SQL竖表转横表 / 横表转竖表

    竖表转横表 竖表结构: Name Course Grade 张三 语文 75 张三 数学 80 张三 英语 90 李四 语文 95 李四 数学 55 转换后横表结构: Name 语文 数学 英语 张三 ...

  2. ADB 远程无线调试

    由于自己购买的x4412 Android开发板存在一个问题,是无法同时链接USB线,和插入无线网卡.只能使用其中一个功能 需要复现一个DRM在线下载的功能,同时需要抓起一些日志信息,此处就想到了使用 ...

  3. mvc5经典教程再补充。。

    转自:http://www.cnblogs.com/powertoolsteam/p/3656203.html ASP.NET MVC 5 - 查询Details和Delete方法   在这部分教程中 ...

  4. 【转】Mybatis Generator最完整配置详解

    本文转简书:http://www.jianshu.com/p/e09d2370b796 --> --> <!-- 自动识别数据库关键字,默认false,如果设置为true,根据Sql ...

  5. Android实例-处理隐藏输入法后不再显示问题(XE8+小米2)

    结果: 1.可以处理再次显示问题,但缺点是每个控件都要处理一次,累.哪位大神有好的处理方法,请M我. 实例代码: unit Unit1; interface uses System.SysUtils, ...

  6. DTD - XML Building Blocks

    The main building blocks of both XML and HTML documents are elements. The Building Blocks of XML Doc ...

  7. [iOS基础控件 - 3.5] NSBundle, UIImageView和UIButton的区别, 模拟器和文档

    1.NSBundle1> 一个NSBundle代表一个文件夹,利用NSBundle能访问对应的文件夹2> 利用mainBundle就可以访问软件资源包中的任何资源3> 模拟器应用程序 ...

  8. 转载jquery $(document).ready() 与window.onload的区别

    jquery $(document).ready() 与window.onload的区别 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2009-12-28我要评论 Jquery中$ ...

  9. 流弊博客集锦(updating)

    1.http://ifeve.com/ 2.淘宝的 code project http://code.taobao.org/ http://blog.csdn.net/tenfyguo/article ...

  10. squid 安装、配置、优化

    官方网站:http://www.squid-cache.org 下载路径:wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABL ...