Skip to content

Latest commit

 

History

History
238 lines (135 loc) · 464 KB

5. git_basic.md

File metadata and controls

238 lines (135 loc) · 464 KB

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命令查看:

img提示readme.txt文件被修改过,但还没有准备提交的修改。

使用gitdiff命令查看修改的内容:

img知道修改后,可以把修改后的文件再次提交给仓库,同上:

$git add readme.txt

imggitstatus告诉我们,将要被提交的修改包括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^

如果想再回到最新版本,可以先获取adddistributedcommitid

img如223~~54就是commitid,只需选取前一部分就可以了。

执行命令:

$ git reset --hard 223cccea

img

注意:it提供了一个命令gitreflog用来记录你的每一次命令:可以用来查找commitid

$ git reflog

img

6、工作区、暂存区

工作区(WorkingDirectory)

就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:

working-dir

版本库(Repository):

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

git-repo

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用gitadd把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用gitcommit提交更改,实际上就是把暂存区的所有内容提交到当前分支(master)

Git跟踪并管理的是修改,而非文件,所以commit只会把暂存区中的数据提交到分支,当以修改一个文件后,如果没有做gitadd操作,将不会将修改信息加入分支中。

7、撤销修改

命令gitcheckout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次gitcommitgitadd时的状态。

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_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开GitBash),创建SSHKey:

$ ssh-keygen -t rsa -C "[email protected]"

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSHKey的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Accountsettings”,“SSHKeys”页面:

然后,点“AddSSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

github-addkey-1

点“AddKey”,你就应该看到已经添加的Key:

github-addkey-2

按照下面的操作就可以将本地库的内容全部推送到C.git

img

把本地库的内容推送到远程,用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代码都不再需要输入账号密码了~

github直接预览html

登录此网站,将html的网址输入就可以了<http://htmlpreview.github.com/>