天天看点

Git常用命令的学习

# 一、git在平时使用中常见的命令这个是我在看完一篇文章或者说是一本小书后,防止自己忘记,加深一下印象写下的,自己之前也一直在用git管理项目代码,一般托管到[codingnet](http://coding%E3%80%82net)上面,或者有时候托管到[github](http://www.github.com),废话少说 ,开始命令!配置命令----一般每个用户都需要配置自己的用户名和邮箱,这样提交代码的时候才知道是谁提交了。 **- $git config --global user.name "your name"** 配置你的名称 **- $git config --global user.email "[email protected]"** 配置你的邮箱初始化本地仓库-------通过 命令进入到自己新建的目录 执行:**$git init** //*初始化本地仓库*完成后,你会发现你的,目录下面会多一个.git文件,这个文件不能动他,他里面保存这个git仓库的重要信息,他叫版本库。在这里顺便说一下,git是分布式版本控制系统,相比之下我们以前用的svn是集中式版本管理系统,集中式版本管理系统,代码版本的管理都是在一个远程的中央服务器中,必须联网才可以工作,本地是不支持代码版本的管理的 ,而分布式版本控制系统,根本没有“中央服务器 ”,每一个本地仓库都是一个完整的版本控制服务器,本地记录的所有人的对代码的修改操作,所以相对于集中式的管理系统svn而言,git的安全性要高很多,因为每个本地仓库都记录的完整的版本控制,及时有其他的本地仓库宕机,也没有关系,随便找一个人拷一份就OK了,除此之外,git还有强大的分支管理,在后面会讲到。## 提交代码 ##比如我现在的git仓库里面添加一个 a.txt文件,现在要提交修改(添加删除修改文件内容,都属于版本库的修改)$git add a.txt *提交到暂存区* $git commit -m "提交了a.txt" //提交到版本库查看版本库状态 可以告诉你哪些文件被修改了,$git status查看版本库中a.txt的变化**$git diff a.txt**查看a.txt文件一共有几个版本提交到git仓库中了 **$git log** 简介的查看a.txt文件一共有几个版本提交到git仓库中了**$git log --preptty=oneline**如果错误的提交了a.txt的修改可以使用**$git reset --hard HEAD^ 退回上一个版本****$git reset --hard HEAD^^ 退回上上一个版本****$git reset --hard HEAD^^^退回上上上一个版本****$git reset --hard HEAD~100退回上100一个版本**其实我们有一种更好的方法,退回到想要的版本:先通过 git log 查询到要退回版本的commitid,然后 用git reset --hard commitid可以通过reflog查询以前的操作命令记录git reflog工作区 、暂存区、版本库------------工作区就是你当前的目录下暂存区是 你代码修改提交到版本库的一个中间区域,相当于add操作后,版本的修改是提交到暂存区的,当commit后才会将修改 提交版本库。## 撤销修改 ##git checkout a.txt这里是要分两种情况的,第一种是代码还没有add,即还没有提交到暂存区,此时,撤销的修改后就回到和版本库一样的状态。第二种是一件add修改到暂存区了,那此时的撤销就是返回到提交到暂存区前一时刻的状态。如果此时的修改已经commit了,即提交到版本库了,那此时的撤销则必须用 reset命令了:git reset HEAD a.txt 返回到最前的一个版本库(同时已经撤销了暂存区中的修改)## 删除文件与恢复 ##删除文件git rm a.txtgit commit -m "remove a.txt"如果想恢复删除的文件git checkout -- a.txt 分支管理----分支管理在版本控制中很重要,尤其是你接到一个新的功能开发的任务时,为了不影响现在的master分支的代码,最好是创建一个分支,等新功能开发完毕后,再合并merge到master分支上。## 创建分支 ##git checkout -b dev 上面的代码代表两步 1、创建分支dev 2、切换到分支devgit branch dev 创建分支git checkout dev 切换分支 **查看分支**git branch**合并分支**git merge dev 在当前分支上合并dev分支**删除分支** git branch -d branchname 由于今天精力有限,先写到这。后面会继续写: **如何处理合并中的冲突解决** **如何在处理不同类型或者说不同情况下的分支** **如何在git下 多人协作开发** **如何抓取分支** **标签管理**-