git介绍和常用指令

Git介绍和常用指令

介绍:Git和SVN一样都是版本控制工具。不同的是Git是分布式的,SVN是集中式的。Git开始用可能感觉难点,等你用习惯了你就会觉得svn是有点恐怖。(如果一个项目有好多人一起开发,有好多分支切来切去,如果用SVN就会让你崩溃的)集中式大概就是有一个中心代码库,大家改完代码以后都忘这个代码库提交,同样都在这里更新代码。

分布式就是没有中心数据库每个人的电脑上都有一个完整的本本库,大家可以相互推送代码和更新(为了方便也会建立一个中心库,大家都通这个中心库进行交互)。

安装git:从git官网http://git-scm.com/download/下载git。选择命令行模式,然后基本上next 就行了。

介绍下git的常用概念:

 

本地仓库:在本地存放各个版本分支的地方,像一个仓库,只要你提交的东西他都会保存下来。

远程仓库:可以和你本地仓库进行交互的另一仓库。可以是别人的仓库也可以是大家都用的一个中心的仓库。

工作区:就是我们看到的当前分支和版本的代码的区域,就是存放我们当前正在修改的代码的地方。

索引区:存放已经在git管理中的代码的区域,通过提交指令添加到仓库。

常用指令:

1、 关于仓库:

查看远程仓库:git remote  –v (-v表示显示详细信息)显示为仓库别名和仓库地址,远程仓库的默认别名为origin。

添加远程仓库:git remote add {url}

重命名:git rename {oldname}  {newname}

删除:git rm {remotename}

剩下的就自己查看帮助吧:git remote –help

初始化本地仓库:到你想作为仓库的路径,然后执行git init。就会发现在当前目录下多了个.git目录。发现git自动显示在maser分支上。然后添加一个远程仓库git remote add origin https://github.com/tomdogxu/firstWebProject.git(这里是github上我的仓库地址)然后更新合并代码。

也可以克隆远程仓库到本地:跳转到相应目录执行git clone https://github.com/tomdogxu/firstWebProject.git。这时候查看仓库可以看到 origin仓库。

2、 查看状态:查看当前工作的状态 git  status显示如下图:

其中标注为Changes to be committed:的绿色显示部分是已经add到索引区的修改,提示我们可以用git reset撤销。

标注为Changes not staged for commit:的是修改过没有添加到索引区的,提示我们可以通过git add添加到索引区或者通过git checkout 重置已经修改的文件。标注为Untracked files:是不在git的检查中的文件比如新建的文件。可以add添加到索引区。

3、将改变添加到索引区:git add [path]

4、比较不同: git  diff  [path],是比较工作区间与索引区的不同,当有参数—catch的时候就是比较索引区与仓库的不同,当有参数 commitid的时候就是比较工作区间与仓库指定版本的不同。例子:git diff --cached 索引区与仓库的不同,

git diff HEAD工作区间与仓库间的不同。

git diff commitid 工作区间与仓库指定版本号的间不同。

git diff --cached HEAD^ 索引区与上一次提交的不同。

git diff commitid1 commitid2 仓库指定两个id的版本之间的不同。

git diff branch1 branch2 比较两个分支间不同 (--stat参数列举简单信息)

git diff branch1:path branch2:path 比较两个分支间指定文件的不同

git diff master.. origin/master  比较本地master 和远程master的区别。

5、撤销:git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD] 这个指令有四中模式,

先说—mixed模式,因为他是默认模式,是最常用的模式,就是当用git reset –mixed [path]就是说将索引区的文件重置,撤销add的指令。

git reset –hard commitid,回滚到指定版本号,并且重置工作区间和索引区,就是说在某个版本号之后的修改都会丢弃,而且是找不回来的。

git reset –soft commitid 将当前版本指向指定版本号,这个版本号之后的提交都会被撤销到索引区,工作区和索引区的不变。

git rm --cached 文件名:将文件从索引中删除变成Untracked 。

 --merge和--keep用的不多。

git revert 也是撤销命令,区别在于reset是指向原地或者向前移动指针,git revert是创建一个commit来覆盖当前的commit,指针向后移动,就是不是真的撤销而是有一次提交得到撤销的效果。

6、关于分支指令:git branch +[branchname]新建分支,

git checkout [branchname] 切换到相应分支,

git checkout –b [branchname] 创建并切换到新的分支。

切换到别的分支之后执行git branch –d [branchname]删除分支

git branch 查看分支,

git branch –a 或者(git branch --remote)查看远程分支

git marge [branchname]合并指定分支到当前分支。

git fetch [remotename]更新远程仓库的分支,可以指定分支名或者更新全部,括号内为远程分支的别名。

git pull [remotename] [ branchname] 更新并合并远程分支,默认是origin仓库的master分支。

git push [remotename] [ branchname]将本地仓库的更改推送到远程分支,可以使用-u参数指定默认的推送的分支,之后就可以直接使用git push指令推送。

git branch [remotename] –delete [branchname]删除远程分支

git branch –d  [branchname]删除本地分支。

7、查看日志:git log

git log -p 显示详细信息,git log 路径 显示该路径下的日志 ,git log --no-merges 不显示合并版本的信息,git log --since="2 weeks ago" 显示最近两周的日志

8、其他关于设置全局变量等指令使用较少不做介绍,可以按提示操作即可。并且要学会多使用—help这个帮主指令。

本文章属于本人和博客园所有,如有转载请注明出自http://www.cnblogs.com/xucheng
原文地址:https://www.cnblogs.com/xucheng/p/git.html