github

git简介

git是一个分布式版本控制/软件配置管理软件,原来是由linux内核开发者林纳斯托瓦兹为了更好地管理linux内核开发而设计的。对于一个软件开发者,就我个人而言,git是十分便捷好用的工具,git的速度很快,更重要的是它的合并追踪能力。而且,只是通过简单的命令行的输入,就可以轻松的完成代码的提交,建库等功能。当你编写一项工程时,在你一次次提交代码之后,它会清楚地记录你对代码所做的修改。

---------------------------------------------------------------------------------------------------------------------------

**********************************************************************

---------------------------------------------------------------------------------------------------------------------------

git命令

1.gitclone

这是一种简单的本地初始化的方式,当你远程上已经存在一个版本库,只须在本地克隆一份可以使用此命令。

例如:
git clone [email protected]:Moode/party_bid.git some_project

此命令执行后会把[email protected]:Moode/party_bid.git这个url的远程版本库完全克隆到some_project的目录下。也可以打开some_project目录,执行$cdsome_project,然后执行gitclonegit@github,com:Moode/party_bid.git。

———————————————————————————————————————————————————————

2.gitinitandgitremote

gitinit也是一个初始化命令。如果你在远程上没有建立版本库,可以在本地建立一个指定的工作目录,比如some_project,然后进入此目录,在目录下执行gitinit进行初始化。之后如果你想把该目录下的文件进行版本控制,需要在远程上先建立一个版本库,执行的命令是:

git remote add orign [email protected]:Moode/party_bid.git
,此时就建立了名为orign路径为[email protected]:Moode/party_bid.git的远程版本库。

———————————————————————————————————————————————————————

3.gitpull

gitpull是将其他版本库(可以是远程的也可以是本地的)中的代码更新到指定分支上。例如:

git pull orign(版本库)master

此命令是将orign版本库里的代码更新到master主支上。

———————————————————————————————————————————————————————

4.gitadd

gitadd是将当前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步,例如:gitadd.是将当前目录下的所有修改加入到git索引中。

———————————————————————————————————————————————————————

5.gitcommit

gitcommit是提交当前工作空间的修改内容,如果要附加修改内容的标题要使用参数-m

例如:
git commit -m “重构代码”

———————————————————————————————————————————————————————

6.gitpush

gitpush是将本地的commit的代码更新到远程版本库中,完成远程代码的更新。一般情况下,gitaddgitcommitgitpush是提交代码时连续使用的三个命令。

———————————————————————————————————————————————————————

7.gitrm

git rm是删除当前目录下或git索引中的文件,例如:
git rm .gitignore

———————————————————————————————————————————————————————

8.gitrevert

gitrevert是还原一个版本的修改,必须提供一个具体的Git版本号,例如'gitrevertbbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值。

———————————————————————————————————————————————————————

9.gitlog

gitlog是查看当前路径下的修改日志。

———————————————————————————————————————————————————————

10.gitbranch

git branch是对分支的增、删、查等操作,例如'
git branch new_branch
'会从当前的工作版本创建一个叫做new_branch的新分支,'git branch -D new_branch'就会强制删除叫做new_branch的分支,'git branch'就会列出本地所有的分支

———————————————————————————————————————————————————————

11..gitcheckout

gitcheckout:Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'gitcheckoutnew_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'gitcheckoutapp/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚

———————————————————————————————————————————————————————

12.gitrebase

用下面两幅图解释会比较清楚一些,rebase命令执行后,实际上是将分支点从C移到了G,这样分支也就具有了从C到G的功能

master

A-------->B--------->C

|---------->D---------->E___gitrebase_______________>A---->B----->C------>D------->E

new_branchmasternew_branch

———————————————————————————————————————————————————————

13.gitreset

将当前的工作目录完全回滚到指定的版本号,假设如下图,我们有A-G五次提交的版本,其中C的版本号是bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我们执行了'gitresetbbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么结果就只剩下了A-C三个提交的版本

A-------->B---------->C----------->D--------->E_____gitreset_______________>A-------->B------->C

———————————————————————————————————————————————————————

14.gitmerge

gitmerge用来合并两个分支。例如:

$git checkout master
$git merge -m 'merge from empty' empty

上面的命令是将empty分支上的改动merge到master分支上,并生成新的commit节点“mergefromempty”

———————————————————————————————————————————————————————

15.gitstatus

gitstatus命令用来查看当前的git状态,如:所在的分支,所做的修改commit等

———————————————————————————————————————————————————————

16.gitdiff

gitdiff命令将比较当前的工作目录和版本库数据库中的差异。

———————————————————————————————————————————————————————