linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

发布于 2018-05-18  226 次阅读


单机上使用 git

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

#安装 git
[root@am-01:~#] mkdir /data/gitroot

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

#创建项目目录
[root@am-01:/data/gitroot#] git init

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

[root@am-01:/data/gitroot#] ls -la

总用量 0

drwxr-xr-x  3 root root  17 5 月  16 18:44 .

drwxr-xr-x 12 root root 156 5 月  16 18:44 ..

drwxr-xr-x  7 root root 111 5 月  16 18:44 .git

#初始化仓库
[root@am-01:/data/gitroot#] vim 1.txt

qwwqewexvrd

qwxvrbefwc

sfewsfcverw

[root@am-01:/data/gitroot#] git commit -m "add 1.txt"

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

 1 file changed, 3 insertions(+)

 create mode 100644 1.txt

#把文件提交到 git 仓库,需要先 add 更新要提交的内容,再用 commit 提交要提交的内容
[root@am-01:/data/gitroot#] vim 1.txt

qwwqewexvrd

qwxvrbefwc

sfewsfcverw



123654987418751891567541451548

[root@am-01:/data/gitroot#] git status

# 位于分支 master

# 尚未暂存以备提交的变更:

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

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

#

# 修改:      1.txt

#

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

#修改 1.txt,查看仓库的状态可以见到,会显示有改动并待提交的文件
[root@am-01:/data/gitroot#] git diff 1.txt

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

index 8e46393..42f4dea 100644

--- a/1.txt

+++ b/1.txt

@@ -1,3 +1,5 @@

 qwwqewexvrd

 qwxvrbefwc

 sfewsfcverw

+

+123654987418751891567541451548

#diff 可以查看未提交的文件跟仓库的文件之间的差异
[root@am-01:/data/gitroot#] git add 1.txt

[root@am-01:/data/gitroot#] git commit -m "add 1.txt 2"

[master f149f54] add 1.txt 2

 1 file changed, 2 insertions(+)

[root@am-01:/data/gitroot#] vim 1.txt

qwwqewexvrd

qwxvrbefwc



123654987418751891567541451548

[root@am-01:/data/gitroot#] git add 1.txt

[root@am-01:/data/gitroot#] git commit -m "add 1.txt 3"

[master f1a3c06] add 1.txt 3

 1 file changed, 1 deletion(-)

[root@am-01:/data/gitroot#] vim 1.txt



qwwqewexvrd

qwxvrbefwc



123654987418751891567541451548



15sadwjdhjk qwewqd

[root@am-01:/data/gitroot#] git add 1.txt

[root@am-01:/data/gitroot#] git commit -m "add 1.txt 4"

[master 2104f2d] add 1.txt 4

 1 file changed, 2 insertions(+)

[root@am-01:/data/gitroot#] git log

commit 2104f2d671ae103172f8cc10042d9928d58fecae

Author: am <runfali@outlook.com>

Date:   Wed May 16 19:14:44 2018 +0800



    add 1.txt 4



commit f1a3c06ea0635eae2ac00f358a932dd831bad18b

Author: am <runfali@outlook.com>

Date:   Wed May 16 19:13:56 2018 +0800



    add 1.txt 3



commit f149f547fafdc7b8b2e99b3496be996b623acb2b

Author: am <runfali@outlook.com>

Date:   Wed May 16 19:07:47 2018 +0800



    add 1.txt 2



commit 17544fbf9530f1f3af702fe97f3fd55504c1993c

Author: am <runfali@outlook.com>

Date:   Wed May 16 18:51:38 2018 +0800



    add 1.txt

#git log 可以查看所有的变更记录
[root@am-01:/data/gitroot#] git log --pretty=oneline

2104f2d671ae103172f8cc10042d9928d58fecae add 1.txt 4

f1a3c06ea0635eae2ac00f358a932dd831bad18b add 1.txt 3

f149f547fafdc7b8b2e99b3496be996b623acb2b add 1.txt 2

17544fbf9530f1f3af702fe97f3fd55504c1993c add 1.txt

#把 log 显示为一行,更直观
[root@am-01:/data/gitroot#] git reset --hard f149f5

HEAD 现在位于 f149f54 add 1.txt 2

[root@am-01:/data/gitroot#] git log --pretty=oneline

f149f547fafdc7b8b2e99b3496be996b623acb2b add 1.txt 2

17544fbf9530f1f3af702fe97f3fd55504c1993c add 1.txt

[root@am-01:/data/gitroot#] git reset --hard 17544fb

HEAD 现在位于 17544fb add 1.txt

[root@am-01:/data/gitroot#] git log --pretty=oneline

17544fbf9530f1f3af702fe97f3fd55504c1993c add 1.txt

#版本回退,使用"git reset --hard '版本的 ID'"
[root@am-01:/data/gitroot#] git reflog

17544fb HEAD@{0}: reset: moving to 17544fb

f149f54 HEAD@{1}: reset: moving to f149f5

2104f2d HEAD@{2}: commit: add 1.txt 4

f1a3c06 HEAD@{3}: commit: add 1.txt 3

f149f54 HEAD@{4}: commit: add 1.txt 2

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

[root@am-01:/data/gitroot#] git reset --hard 2104f2d

HEAD 现在位于 2104f2d add 1.txt 4

[root@am-01:/data/gitroot#] git log --pretty=oneline

2104f2d671ae103172f8cc10042d9928d58fecae add 1.txt 4

f1a3c06ea0635eae2ac00f358a932dd831bad18b add 1.txt 3

f149f547fafdc7b8b2e99b3496be996b623acb2b add 1.txt 2

17544fbf9530f1f3af702fe97f3fd55504c1993c add 1.txt

#回退错了,还可以使用 git reflog 查询所有历史版本,再使用回退命令回退到你想要的版本
[root@am-01:/data/gitroot#] rm -rf 1.txt

[root@am-01:/data/gitroot#] ls

[root@am-01:/data/gitroot#] git checkout 1.txt

[root@am-01:/data/gitroot#] ls

1.txt

#不小心删除了文件,还可以使用 git checkout 从仓库中拉取文件,从而恢复
[root@am-01:/data/gitroot#] vim 1.txt

qwwqewexvrd

qwxvrbefwc



123654987418751891567541451548

[root@am-01:/data/gitroot#] git add 1.txt

[root@am-01:/data/gitroot#] git reset HEAD 1.txt

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

M 1.txt

[root@am-01:/data/gitroot#] git checkout -- 1.txt

[root@am-01:/data/gitroot#] cat 1.txt

qwwqewexvrd

qwxvrbefwc



123654987418751891567541451548



15sadwjdhjk qwewqd

#只做了 add,没做 commit,但这时想起做错了,可以使用"git reset HEAD ‘文件名’"撤销操作

#之后还能使用"git checkout -- '文件名'"把文件恢复到没做修改之前的状态
[root@am-01:/data/gitroot#] git rm 1.txt

rm '1.txt'

[root@am-01:/data/gitroot#] git commit -m "delete 1.txt"

[master 6a2ee0a] delete 1.txt

 1 file changed, 6 deletions(-)

 delete mode 100644 1.txt

[root@am-01:/data/gitroot#] git checkout -- 1.txt

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

#删除 1.txt,同时也在仓库中删除
[root@am-01:/data/gitroot#] git log --pretty=oneline

6a2ee0af4e9bfc2e25d6b90f635d036459e04a31 delete 1.txt

2104f2d671ae103172f8cc10042d9928d58fecae add 1.txt 4

f1a3c06ea0635eae2ac00f358a932dd831bad18b add 1.txt 3

f149f547fafdc7b8b2e99b3496be996b623acb2b add 1.txt 2

17544fbf9530f1f3af702fe97f3fd55504c1993c add 1.txt

[root@am-01:/data/gitroot#] git reset --hard

HEAD        master      ORIG_HEAD  

[root@am-01:/data/gitroot#] git reset --hard 2104f2

HEAD 现在位于 2104f2d add 1.txt 4

[root@am-01:/data/gitroot#] ls

1.txt

[root@am-01:/data/gitroot#] cat 1.txt

qwwqewexvrd

qwxvrbefwc



123654987418751891567541451548



15sadwjdhjk qwewqd

#使用"git reset --hard ‘ID’"依然是可以把删掉的找回来的

提交的时候问题解决方案

[root@am-01:/data/gitroot#] git commit -m "add 1.txt"



*** 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@am-01.(none)')

#提示需要配置一下你的名称和邮箱地址

[root@am-01:/data/gitroot#] git config --global user.email "runfali@outlook.com"

[root@am-01:/data/gitroot#] git config --global user.name "am"

#使用这两句命令做配置

建立远程仓库

首先到https://github.com注册一个账号

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

邮箱激活后,登录账号

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

新建一个仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

添加密钥

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

github 的使用

root@am-01:~#] mkdir /tmp/Test

[root@am-01:~#] cd /tmp/Test/

[root@am-01:/tmp/Test#] echo "# Test" >> README.md

[root@am-01:/tmp/Test#] git init

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

[root@am-01:/tmp/Test#] git add README.md

[root@am-01:/tmp/Test#] git commit -m "first commit"

[master(根提交) 14cb609] first commit

 1 file changed, 1 insertion(+)

 create mode 100644 README.md

#本地新建一个目录,并建立测试文件,初始化 git,并把测试文件提交到本地仓库
[root@am-01:/tmp/Test#] git remote add origin git@github.com:runfali/Test.git

[root@am-01:/tmp/Test#] git push -u origin master

The authenticity of host 'github.com (13.229.188.59)' can't be established.

RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts.

Counting objects: 3, done.

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

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

To git@github.com:runfali/Test.git

 * [new branch]      master -> master

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

#把本地仓库推送到远程仓库,第一次推送需要使用"git push -u origin master"
[root@am-01:/tmp/Test#] echo "321456987" > 1.txt

[root@am-01:/tmp/Test#] git add 1.txt

[root@am-01:/tmp/Test#] git commit -m "add 1.txt"

[master d5288b5] add 1.txt

 1 file changed, 1 insertion(+)

 create mode 100644 1.txt

[root@am-01:/tmp/Test#] git push

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

Counting objects: 4, done.

Delta compression using up to 2 threads.

Compressing objects: 100% (2/2), done.

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

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

To git@github.com:runfali/Test.git

   14cb609..d5288b5  master -> master

#再在目录中新建文件,并提交到本地仓库,最后推送到远程仓库

到远程仓库测试,可以见到,推送成功

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

克隆远程仓库

使用 ssh 方式,复制仓库地址

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

到本地机器操作

[root@am-01:~#] cd /home/

[root@am-01:/home#] mkdir Test

[root@am-01:/home#] cd Test/

[root@am-01:/home/Test#] git clone git@github.com:runfali/Test.git

正克隆到 'Test'...

remote: Counting objects: 6, done.

remote: Compressing objects: 100% (3/3), done.

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

接收对象中: 100% (6/6), done.

[root@am-01:/home/Test#] ls

Test

[root@am-01:/home/Test#] cd Test/

[root@am-01:/home/Test/Test#] ls

1.txt  README.md

#这时已经把远程仓库克隆到本地了
[root@am-01:/home/Test/Test#] vim 1.txt

321456987

asdbvedfdef

[root@am-01:/home/Test/Test#] git add 1.txt

[root@am-01:/home/Test/Test#] git commit -m "1.txt 01"

[master 91ed5ee] 1.txt 01

 1 file changed, 1 insertion(+)

[root@am-01:/home/Test/Test#] git push

Counting objects: 5, done.

Delta compression using up to 2 threads.

Compressing objects: 100% (2/2), done.

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

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

To git@github.com:runfali/Test.git

   d5288b5..91ed5ee  master -> master

#修改本地仓库的文件内容并推送到远程仓库

查看远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

在远程仓库中修改文件内容

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

linux 学习笔记-087-代码管理平台-单机上使用 git,建立和克隆远程仓库

回到本地机器操作

[root@am-01:/home/Test/Test#] git pull

remote: Counting objects: 3, done.

remote: Compressing objects: 100% (3/3), done.

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

Unpacking objects: 100% (3/3), done.

来自 github.com:runfali/Test

   91ed5ee..27fa564  master     -> origin/master

更新 91ed5ee..27fa564

Fast-forward

 1.txt | 1 +

 1 file changed, 1 insertion(+)

[root@am-01:/home/Test/Test#] cat 1.txt

321456987

asdbvedfdef

撒开角度考虑时间空间撒开静安寺街道

#git pull 是从远程仓库拉取