安装:
Centos系统下的安装:
yum install git
安装完成,查看安装的版本:
#git --version
git version 1.8.3.1
创建版本库:
创建一个新的空的目录
/db/git/learngit
使用 git init 将目录变成可Git可以管理的仓库
#git init
Initialized empty Git repository in /db/git//learngit/.git/
使用命令git add 将文件添加到暂存区
#git add readme.txt
使用命令git commit将文件提交到仓库
#git commit -m "wrote a readme file"
使用命令git status查看仓库当前状态
#git status
使用命令git diff查看修改内容
#git diff
使用命令git log查看提交日志,可以加上参数--pretty=oneline仅显式带有commit id的那一行
#git log
#git log --pretty=oneline
在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
使用命令git reset进行版本回退
# git reset --hard HEAD^
我们也可以使用commit id进行版本回退
# git reset --hard 3628164
使用命令 git reflog用来记录每一次的命令,里面有commit id
# git reflog
Git跟踪并管理的是修改,而非文件。
使用命令git checkout -- file可以丢弃工作区的修改
# git checkout -- readme.txt
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
当我们使用了git add 将修改后的文件加入到了暂存区后,可以使用命令 git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
# git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
删除文件:
通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:
# rm test.txt
你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
# git rm test.txt
rm 'test.txt'
# git commit -m "remove test.txt"
[master 90af2ab] remove test.txt
1 file changed, 2 deletions(-)
delete mode 100644 test.txt
现在,文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
# git checkout -- test.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”.
远程仓库:
创建SSH Key:
# ssh-keygen -t rsa -C "[email protected]"
将公匙拷到github账号对应的位置处。
在GitHub上创建仓库learngit,我们根据GitHub的提示,在本地的learngit仓库下运行命令:
git remote add origin [email protected]:michaelliao/learngit.git
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
把本地库的所有内容推送到远程库上:
# git push -u origin master
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在开始,只要本地做了提交,就可以通过命令:
# git push origin master
把本地master分支的最新修改推送到GitHub。
从远程克隆:
首先在远程GitHub上新建一个仓库,然后使用git clone进行下载克隆:
# git clone [email protected]:michaelliao/gitskills.git
从远程库克隆
阅读: 678059
上次我们讲了先有本地库,后有远程库的时候,如何关联远程库。
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
首先,登陆GitHub,创建一个新的仓库,名字叫gitskills
:
我们勾选Initialize this repository with a README
,这样GitHub会自动为我们创建一个README.md
文件。创建完毕后,可以看到README.md
文件:
现在,远程库已经准备好了,下一步是用命令git clone
克隆一个本地库:
$ git clone [email protected]:michaelliao/gitskills.gitCloning into 'gitskills'...remote: Counting objects: 3, done.remote: Total 3 (delta 0), reused 0 (delta 0)Receiving objects: 100% (3/3), done.$ cd gitskills$ lsREADME.md
注意把Git库的地址换成你自己的,然后进入gitskills
目录看看,已经有README.md
文件了。
如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
你也许还注意到,GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git
这样的地址。实际上,Git支持多种协议,默认的git://
使用ssh,但也可以使用https
等其他协议。
使用https
除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh
协议而只能用https。