关于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 选项直接添加提交信息。

 


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4155362.html,如需转载请自行联系原作者

相关文章
|
14天前
|
缓存 数据可视化 网络安全
Git命令大全
Git命令大全
45 1
|
18天前
|
开发工具 git
Git教程:深入了解删除分支的命令
【4月更文挑战第3天】
37 0
Git教程:深入了解删除分支的命令
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux git命令使用教程
【Shell 命令集合 文件管理】Linux git命令使用教程
34 0
|
1月前
|
开发工具 git
git常用命令整理
git常用命令整理
13 0
|
23天前
|
开发工具 git 开发者
Git常用命令大全:让你轻松驾驭版本控制
Git命令速查:`git init`新建仓库,`git clone`克隆,`git add`入暂存区,`git commit -m`提交,`git status`查看状态,`git log`查看历史,`git branch`创建分支,`git checkout`切换,`git merge`合并,`git pull`拉取更新,`git push`推送,`git remote -v`查看远程,`git checkout --`撤销本地修改,`git reset HEAD`取消暂存,`git reset --hard`回退版本。掌握这些,提升代码管理效率!
18 0
|
3月前
|
测试技术 持续交付 开发工具
1.Git使用技巧-常用命令3
1.Git使用技巧-常用命令3
34 0
|
2天前
|
存储 Linux 开发工具
Git 分布式版本控制系统基本概念和操作命令
Git 分布式版本控制系统基本概念和操作命令
21 0
|
4天前
|
算法 Java BI
云效产品使用报错问题之平台上导出的统计数据和 git 中使用命令导出的数据统计都对不上,如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1月前
|
算法 开发工具 git
【git 实用指南】git 增加 本地代码 git add 相关命令和复杂情况需求
【git 实用指南】git 增加 本地代码 git add 相关命令和复杂情况需求
93 0
|
1月前
|
Shell Linux 开发工具
【Shell 命令集合 系统管理 】Linux 查看当前Git仓库的提交历史 gitps命令 使用指南
【Shell 命令集合 系统管理 】Linux 查看当前Git仓库的提交历史 gitps命令 使用指南
18 0