1、安装git:
$sudo apt-get install git
2、创建版本库:
第一步:创建一个空文件夹
$mkdir learngit
$cd learngit
$pwd
/Users/michael/learngit`
第二步:使用gitinit 命令把这个目录 变成Git可以管理的仓库(repository)
3、创建文件(TXT)
在目录下创建一个readme.txt文件,内容:
Gitis a distributed version control system.
Gitis free software.
第一步:用gitadd命令告诉Git,把文件添加进仓库:
$git add readme.txt
第二步:用命令gitcommit告诉Git,把文件提交到仓库:
$git commit -m "wrote a readme file"
[master(root-commit) cb926e7] wrote a readme file
1file changed, 2 insertions(+)
createmode 100644 readme.txt
4、修改文件内容并使用gitstatus命令查看:
提示readme.txt文件被修改过,但还没有准备提交的修改。
使用gitdiff命令查看修改的内容:
$git add readme.txt
gitstatus
告诉我们,将要被提交的修改包括readme.txt,下一步,就可以放心地提交了:
$git commit -m "add distributed"
[masterea34578] add distributed
1file changed, 1 insertion(+), 1 deletion(-)
5.回退到上个版本及重回最新版本:
gitlog
命令显示从最近到最远的提交日志,我们可以看到2次提交,最近的一次是adddistributed
,最早的一次是wrotea readme file
。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数:
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交3628164...882e1e0
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
我们要把当前版本回退到上一个版本wrotea readme file
,就可以使用gitreset
命令:
$ git reset --hard HEAD^
如果想再回到最新版本,可以先获取adddistributed
的commitid
,
如223~~54就是
commitid
,只需选取前一部分就可以了。
执行命令:
$ git reset --hard 223cccea
注意:it提供了一个命令gitreflog
用来记录你的每一次命令:可以用来查找commitid
,
$ git reflog
6、工作区、暂存区
工作区(WorkingDirectory)
就是你在电脑里能看到的目录,比如我的learngit
文件夹就是一个工作区:
版本库(Repository):
工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用gitadd
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用gitcommit
提交更改,实际上就是把暂存区的所有内容提交到当前分支(master)
Git跟踪并管理的是修改,而非文件,所以commit只会把暂存区中的数据提交到分支,当以修改一个文件后,如果没有做gitadd
操作,将不会将修改信息加入分支中。
7、撤销修改
命令gitcheckout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次gitcommit
或gitadd
时的状态。
8、删除文件 首先删除:
$ git rm test.txt
rm 'test.txt'
提交:
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
撤销删除:
$ git reset --hard 223cccea
如果使用rm 删除文件,则可用下述命令返回:
$ git checkout -- test.txt
9、链接远程库(github)
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
第1步:创建SSHKey。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开GitBash),创建SSHKey:
$ ssh-keygen -t rsa -C "[email protected]"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSHKey的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Accountsettings”,“SSHKeys”页面:
然后,点“AddSSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容:
点“AddKey”,你就应该看到已经添加的Key:
按照下面的操作就可以将本地库的内容全部推送到C.git
把本地库的内容推送到远程,用gitpush
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
把本地master
分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
注意:
在新建本地repository文件夹后,必须要有第一次commit才能将数据传到远程repository,
git add a_text_file.txt
...do:
git commit -m "Initial commit."
linux服务器git pull/push时提示输入账号密码之免除设置
1、先cd到根目录,执行git config --global credential.helper store命令
[root@iZ25mi9h7ayZ ~]# git config --global credential.helper store
2、执行之后会在.gitconfig文件中多加红色字体项
[user]
name = 天明
email = [email protected]
[credential]
helper = store
3、之后cd到项目目录,执行git pull命令,会提示输入账号密码。输完这一次以后就不再需要,并且会在根目录生成一个.git-credentials文件
[root@iZ25mi9h7ayZ test]# git pull Username for 'https://git.oschina.net': [email protected] Password for 'https://[email protected]@git.oschina.net':
[root@iZ25mi9h7ayZ ~]# cat .git-credentials https://Username:[email protected]
4、之后pull/push代码都不再需要输入账号密码了~
登录此网站,将html的网址输入就可以了<http://htmlpreview.github.com/>