86.git使用 创建和克隆远程仓库

22.5/22.6 单机上使用gitlinux

22.7 创建远程仓库git

22.8 克隆远程仓库github

 

 

 

 

 

22.5/22.6 单机上使用gitweb

 

 

git是分布式的。所谓分布式是咱们不依赖网络。你再你电脑上使用git我在我电脑上使用git们均可以,不须要把个人代码更新到服务端上去 。在本地作操做就能够了vim

1.yum install -y git网络

#yum安装便可dom

2.mkdir /data/gitrootssh

#建立git 目录分布式

3.cd /data/gitrootide

4.git init //初始化仓库

5.echo -e  “123\naaa\n456\nbbb” > 1.txt //建立一个新文件

#随便写点东西

6.git add 1.txt //把1.txt添加到仓库,作标记

7.git commit -m “add new file 1.txt” //add完了必需要commit才算真正把文件提交到git仓库里

#-m""双引号里指定解释说明这个文件,可尽可能写的清楚

8.再次更改1.txt

9.git status  //查看当前仓库中的状态,好比是否有改动的文件(未提交的)

10.git diff 1.txt  //能够对比1.txt本次修改了什么内容,相比较仓库里面的版本

#也就是查看变动

11.git log//查看全部提交记录。前面的字符是ID号

#版本回退

#多更改几回1.txt,而后add,commit,就可查看

12.git log --pretty=oneline//一行显示。前面的字符是ID号

#基于git log可显示的更加好看

13.git reset --hard f7c8e9//回退版本,其中后面跟的字符串是ID号简写

#撤销修改

#也能够利用ID号再回到以前的已经回退过的版本,但前提你要知道要回退的那个ID号

14.git reflog //查看全部历史版本

#这个命令能够查看全部的历史版本及ID号,包括已经删掉的

15.rm -f 1.txt//不当心删除了1.txt

git checkout -- 1.txt//恢复1.txt #注意空格

16.若是1.txt文件修改,add后但没有commit,再想回退到上一次提交的状态,可使用git reset HEAD 1.txt来取消标记。#也就是能够将你add命令的标记去掉

再执行git checkout -- 1.txt(就恢复1.txt到修改以前的状态)

17.删除文件

echo -e "11111111111\n2222222222" > 2.txt #测试

git rm 2.txt #删除2.txt

git commit -m "rm 2.txt" #提交也就是将库里的文件删除

18. git commit -a #能够查看提示信息

 

 

 

实例:

[root@axinlinux-01 ~]# yum install -y git

[root@axinlinux-01 ~]# mkdir /data/gitroot

[root@axinlinux-01 ~]# cd /data/gitroot/

[root@axinlinux-01 gitroot]# git init

初始化空的 Git 版本库于 /data/gitroot/.git/

[root@axinlinux-01 gitroot]# ls -la #当前目录下会生成.git的文件。跟svn很像

总用量 0

drwxr-xr-x 3 root root 18 11月 22 16:58 .

drwxr-xr-x 12 root root 167 11月 22 16:57 ..

drwxr-xr-x 7 root root 119 11月 22 16:58 .git

[root@axinlinux-01 gitroot]# vim 1.txt #随便写点东西

[root@axinlinux-01 gitroot]# git add 1.txt #添加到仓库,作标记

[root@axinlinux-01 gitroot]# git commit -m "add 1.txt" #真正提交到仓库。可是报错了。意思是让咱们告诉他咱们的邮箱以及username。有提示咱们怎么操做

*** Please tell me who you are.

 

Run

 

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

 

to set your account's default identity.

Omit --global to set the identity only in this repository.

 

fatal: unable to auto-detect email address (got 'root@axinlinux-01.(none)')

[root@axinlinux-01 gitroot]# git config --global user.email "519321158@qq.com" #按操做输入邮箱

[root@axinlinux-01 gitroot]# git config --global user.name "axin" #按操做输入username

[root@axinlinux-01 gitroot]# git commit -m "add 1.txt" #再次提交

[master(根提交) 3369881] add 1.txt

1 file changed, 4 insertions(+)

create mode 100644 1.txt

[root@axinlinux-01 gitroot]# git status

# 位于分支 master

无文件要提交,干净的工做区

[root@axinlinux-01 gitroot]# vim 1.txt #变动一下,可是不提交

[root@axinlinux-01 gitroot]# git status #咱们查看状态,就会出现会提交的。以及怎么提交

# 位于分支 master

# 还没有暂存以备提交的变动:

# (使用 "git add <file>..." 更新要提交的内容)

# (使用 "git checkout -- <file>..." 丢弃工做区的改动)

#

# 修改: 1.txt

#

修改还没有加入提交(使用 "git add" 和/或 "git commit -a")

[root@axinlinux-01 gitroot]# git diff 1.txt #查看变动

diff --git a/1.txt b/1.txt

index 06b4546..4b2d89e 100644

--- a/1.txt

+++ b/1.txt

@@ -3,4 +3,4 @@ dfnjdshfjhdkjfhsdk

njkndkjfnhkdjsnfkjdsnf

dfdfdf

735678465874368564376587435

-

+43679839885679875698859677

[root@axinlinux-01 gitroot]# git log

commit 9bd505e01e4713b386b01b55faa109465a609762

Author: axin <519321158@qq.com> #咱们首次登录设置的,能够在配置中查看到

Date: Thu Nov 22 17:20:54 2018 +0800

 

add 1.txt again3

下面还有其余版本,不作演示了

[root@axinlinux-01 gitroot]# cat /root/.gitconfig #是在这定义了你的全局配置

[root@axinlinux-01 gitroot]# git log --pretty=oneline #比起git log更加规范

9bd505e01e4713b386b01b55faa109465a609762 add 1.txt agent3

3655c5f4cb7f018bb36fe0d75301a223a334fe48 add 1.txt agent2

4e654b08101e8acb95ee09f84f24a6206842835f add 1.txt agent

3369881e206ece9abeab7234bef9c1192789f9b5 add 1.txt

[root@axinlinux-01 gitroot]# git reset --hard 3369881e206ece9abeab72 #后面的数字可简写几个

HEAD 如今位于 3369881 add 1.txt

[root@axinlinux-01 gitroot]# git log --pretty=oneline

3369881e206ece9abeab7234bef9c1192789f9b5 add 1.txt

[root@axinlinux-01 gitroot]# git reflog #查看全部的历史版本。可让咱们知道并来回回退各个历史版本。前面的是ID号

9bd505e HEAD@{0}: reset: moving to 9bd505e01e4713b3

3369881 HEAD@{1}: reset: moving to 3369881e206ece9abeab72

9bd505e HEAD@{2}: commit: add 1.txt agent3

3655c5f HEAD@{3}: commit: add 1.txt agent2

4e654b0 HEAD@{4}: commit: add 1.txt agent

3369881 HEAD@{5}: commit (initial): add 1.txt

[root@axinlinux-01 gitroot]# rm -rf 1.txt #假设咱们不当心删掉了这个文件

[root@axinlinux-01 gitroot]# ls

[root@axinlinux-01 gitroot]# git checkout -- 1.txt #能够用git checkout -- 1.txt来恢复。注意空格

[root@axinlinux-01 gitroot]# ls #而后就有了。由于他还存在于你的版本管理库里,虽然目录里已经没有了

1.txt

[root@axinlinux-01 gitroot]# vim 1.txt

[root@axinlinux-01 gitroot]# git add 1.txt

[root@axinlinux-01 gitroot]# git reset HEAD 1.txt

重置后撤出暂存区的变动:

M 1.txt

[root@axinlinux-01 gitroot]# git checkout -- 1.txt

17.

[root@axinlinux-01 gitroot]# git rm 1.txt #使用git rm将1.txt删除

rm '1.txt'

[root@axinlinux-01 gitroot]# git commit -m "delete 1.txt" #再次提交就是讲库里的也删掉了

[master e0ad56c] delete 1.txt

1 file changed, 6 deletions(-)

delete mode 100644 1.txt

[root@axinlinux-01 gitroot]# ls #就没有了

[root@axinlinux-01 gitroot]# git checkout -- 1.txt #并且也恢复不来

error: pathspec '1.txt' did not match any file(s) known to git.

[root@axinlinux-01 gitroot]# git reflog #恢复的话使用git erflog来查看历史版本

e0ad56c HEAD@{0}: commit: delete 1.txt

1a3d7c8 HEAD@{1}: commit: add 1.txt agint

9bd505e HEAD@{2}: reset: moving to 9bd505e01e4713b3

3369881 HEAD@{3}: reset: moving to 3369881e206ece9abeab72

9bd505e HEAD@{4}: commit: add 1.txt agent3

3655c5f HEAD@{5}: commit: add 1.txt agent2

4e654b0 HEAD@{6}: commit: add 1.txt agent

3369881 HEAD@{7}: commit (initial): add 1.txt

[root@axinlinux-01 gitroot]# git reset --hard 1a3d7c8 #而后在使用git reset --hard ID号来恢复

HEAD 如今位于 1a3d7c8 add 1.txt agint

[root@axinlinux-01 gitroot]# ls

1.txt 2.txt

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

22.7 创建远程仓库

 

 

 

1.首先到 https://github.com 注册一个帐号,建立本身的git,点repositories 再点new

2.名字自定义,好比叫studygit 选择public 点 create repository

3.添加key:右上角点本身头像,选择settings,左侧选择SSH and GPG keys

4.左侧点New SSH key,把linux机器上的~/.ssh/id_rsa.pub内容粘贴到这里

5.把本地仓库推送到远程仓库 git remote add origin git@github.com:aminglinux/studygit.git //这一步是在远程建立一个新的仓库studygit,名字尽可能和本地的一致

6.git push -u origin master //而后把本地的studygit仓库推送到远程的studygit

下一次再推送,就能够直接 git push

 

 

 

 

实例:

进入github网站,建立帐号

输入username为axin-linux,邮箱为519321158@qq.com,密码为wx15098751520

再作三次傻逼的游戏,就能够点击sign in登陆了

 

 

以上,就会看到这个界面。想有一些简单的用法或说明啥的,一会在linux上还会用到这些提示的用法

此时还须要加一个秘钥。目的是为了认证,你得告诉他我是一个合法的用户

 

 

以上,公钥的方法为,linux上:

[root@axinlinux-01 gitroot]# ssh-keygen #ssh-keygen命令生成密钥对

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): #回车回车回车便可

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa. #这个是私钥,在这里路径里

Your public key has been saved in /root/.ssh/id_rsa.pub. #带pub的为公钥,在这个路径里

The key fingerprint is:

SHA256:upAdKxtWB6rI5MaSnlrXbuKz8WQfXohi+NwqQyjAZqQ root@axinlinux-01

The key's randomart image is:

+---[RSA 2048]----+

| |

| . |

|+ . |

|E+ . . |

|+o . o S |

|Bo.o = * . |

|=*+ @ O o . |

|+.+*o&.+ o |

|oo +B*= o |

+----[SHA256]-----+

[root@axinlinux-01 gitroot]# cd #由于公钥在root目录下,直接cd出来

[root@axinlinux-01 ~]# cat .ssh/id_rsa.pub #cat 这个公钥文件就能够了

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXXjoeyXRbpHSwxJa8kvnGev9HV7xqHfQxxVL711ypsMMaKGlpcRVGhRWNkfzS37W0jAfnVZJX3/nSD2BEcrmqmPAxRG48+OZMBhEqh6g6KeCe0JgOA0azm/gpujrrcRNLxbVsT6dTGiRzxfvAG2OPqwOCWN/a3QMPXpdd2IDVTSAw0GMDBYUpr+tHu1DzeVogt5wvdkcBAtb9+caDAAWM0uZLLlG/mZ+Zm2FqX7j8J9LPpy2LIeJF0OBbzeFHMHT1zdUkpLBL5FQSmQ2hrwweT3iqcBXB/A7MNQNan7SFAW4vj7LiUWuxA301RBHuY8e9sS74nLb9lJZds1yle5Hz root@axinlinux-01

 

以上,会让你在输入一次密码。就会出现这个画面。

接下来还要在客户端上(linux)上,新建一个仓库,而后在这个仓库写一些东西,再把这些东西推送到远程上去

[root@axinlinux-01 ~]# cd /tmp/ #就在tmp下建立这个仓库吧

[root@axinlinux-01 tmp]# mkdir apelearn #为了与远程端保持一致,最好也写成同样的名称

[root@axinlinux-01 tmp]# cd apelearn/ #cd进去

[root@axinlinux-01 apelearn]#

到这,有点小问题。我又从新搞了一次

[root@axinlinux-01 tmp]# rm -rf apelearn/

[root@axinlinux-01 tmp]# mkdir aming_linux

[root@axinlinux-01 tmp]# cd aming_linux/

[root@axinlinux-01 aming_linux]# echo "# aming_linux" >> README.md #从这一步开始都是复制的建远程库(web上)以后提示的操做

[root@axinlinux-01 aming_linux]# git init

初始化空的 Git 版本库于 /tmp/aming_linux/.git/

[root@axinlinux-01 aming_linux]# git add README.md

[root@axinlinux-01 aming_linux]# git commit -m "first commit"

[master(根提交) 25ca739] first commit

1 file changed, 1 insertion(+)

create mode 100644 README.md

[root@axinlinux-01 aming_linux]# git remote add origin https://github.com/axin-linux/aming_linux.git

[root@axinlinux-01 aming_linux]# git push -u origin master

Username for 'https://github.com': axin-linux #初次登陆会让输入用户名和密码,就是一开始建立的用户名和密码

Password for 'https://axin-linux@github.com':

Counting objects: 3, done.

Writing objects: 100% (3/3), 216 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

remote:

remote: Create a pull request for 'master' on GitHub by visiting:

remote: https://github.com/axin-linux/aming_linux/pull/new/master

remote:

To https://github.com/axin-linux/aming_linux.git

* [new branch] master -> master

分支 master 设置为跟踪来自 origin 的远程分支 master。

以上,就把本地的文件推送到了远程。那怎么看远程有没有呢?回到web上,刷新一下界面就能看到咱们按照提示建的README了

[root@axinlinux-01 aming_linux]# vim 2.txt #咱们再来测试一下。建立个2.txt

[root@axinlinux-01 aming_linux]# git add 2.txt

[root@axinlinux-01 aming_linux]# git commit -m "add 2.txt"

[master 27e1249] add 2.txt

1 file changed, 1 insertion(+)

create mode 100644 2.txt

[root@axinlinux-01 aming_linux]# git push #记得要推一下。才能到远程

再回到web上刷新一下就有了

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

22.8 克隆远程仓库

 

 

 

github上有不少开源的项目。实际工做,使用最多的就是咱们怎么把远程上这些项目搞到本地上来

1.cd /home

2.git clone git@github.com:aminglinux/lanmp.git

#使用git clone后面跟克隆的地址

它提示,会在当前目录下初始化一个仓库,并建立一个.git的目录,以下

Initialized empty Git repository in /home/lanmp/.

3.git/完成后,ls能够看到一个lanmp的目录

4.cd lanmp

5.vi lanmp.sh 编辑一下文件,而后提交

6.git add lanmp.sh

7.git commit -m "sdlfasdf"

8.而后再推送到远程服务端

git push

9.若是咱们在远程里(web上)足了一些文件的更改,要拉倒本地:

git pull

 

 

实例:

[root@axinlinux-01 aming_linux]# git clone git@github.com:aminglinux/lanmp.git

#git clone克隆的地址就是上图中标出的地址

正克隆到 'lanmp'...

Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.

remote: Enumerating objects: 32, done.

remote: Total 32 (delta 0), reused 0 (delta 0), pack-reused 32

接收对象中: 100% (32/32), 5.99 KiB | 0 bytes/s, done.

处理 delta 中: 100% (6/6), done.

[root@axinlinux-01 aming_linux]# cd lanmp/

[root@axinlinux-01 lanmp]# ls

lanmp.sh README.md

相关文章
相关标签/搜索