关于git的基本命令
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的基本命令的更多相关文章
- Git的基本命令介绍
Git的安装 进入官网下载系统所需要的版本 官网地址:https://git-scm.com/downloads 点击下载按钮官方网站一般会根据操作系统的自动下载所需要的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社区中.目前, ...
- Git操作基本命令
分支开发原则: 如果本地dev分支有修改,则需要先切换到master分支,把本地分支的修改merge回master(git merge dev),然后在master上把合并后的内容push到maste ...
- git常用基本命令
一定要以管理员的身份打开,否则有些命令不能用,比如ssh -T git@github.com(查看配置ssh是否成功)@初始化git git config --global user.name ruo ...
随机推荐
- Express细节探究(1)——app.use(express.static)
express相信是很多人用nodejs搭建服务器的首选框架,相关教程有很多,也教会了大家来如何使用.如果你想更深的了解他的细节,不妨和我一起来研究一下. 先来看一个每个人都用到的方法app.use( ...
- 4.3 Reduction代码(Heterogeneous Parallel Programming class lab)
首先添加上Heterogeneous Parallel Programming class 中 lab: Reduction的代码: myReduction.c // MP Reduction // ...
- 【转载】lua中的require机制
[转载自]http://blog.chinaunix.net/uid-552961-id-2736410.html lua中的require机制 为了方便代码管理,通常会把lua代码分成不同的模块,然 ...
- bigData Ecosystem Unscramble
主题>>: cloudEra hadoop Ecosystem sim Unscramble; ruiy哥个人理解总结,其实我无非也还是站在那"砖家/叫兽"的肩上瞎扯扯 ...
- Apache下安装配置mod_pagespeed模块,轻松完成网站提速
mod_pagespeed是一个开源的Apache module,它由谷歌开发,通过优化你的网页来减少响应延迟和带宽占用.作用参考ngx_pagespeed功能:http://blog.linuxey ...
- MariaDB-5.5.32源码编译安装
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:Oracle公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分 ...
- PopupWindow 问题集锦
1.响应返回键/响应键盘事件(onKeyListener) 最近在做PopupWindow, 发现使用PopupWindow一出现,不会响应popup外面的事件,经过资料查找,发现有两种方法可以响应外 ...
- Android中的动画学习总结
android中动画可分为三种:帧动画,补间动画,和属性动画.其中属性动画是google推荐的,它可以实现前面两种动画的效果,运用起来更加灵活. 帧动画:顾名思义,就是一帧一帧的图片,快速播放形成的动 ...
- Java中的二维数组
Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...
- iOS中的深复制与浅复制
很多语言中都有深复制浅复制的概念,如C++,ObjC等.简单来说,浅复制就是两个变量指向了同一块内存区域,深复制就是两个变量指向了不同的内存区域,但是两个内存区域里面的内容是一样的. 浅复制示意图: ...