gti 远程操作

目录

一. 分布式版本控制管理系统

1. 理解分布式版本控制管理系统

二. 创建远程仓库

​编辑

 ​编辑

三. 克隆远程仓库_HTTP

四. 克隆远程仓库_SSH

配置公钥

添加公钥

五. git 向远程仓库推送

六. 拉取远程仓库

七. 忽略特殊文件

八. 配置别名


一. 分布式版本控制管理系统

实际上,我们的 git 是一个分布式版本控制管理系统,那么什么是分布式版本控制管理系统呢?

1. 理解分布式版本控制管理系统

我们现在要开发一个产品,我们是需要多人协作开发的,所以我们现在每个人都有一台电脑,我们的每台电脑上都有一个 git 仓库,我们为了多人协作开发方便,所以我们现在有一个中央服务器,中央服务器里面有一个仓库,用来存储我们协作开发的内容,如果我们中的任何一个人想要看别人开发的代码,我们只需要在中央服务器上 clone 下来,然后我们就可以看到别人开发的代码了

上面的这个是我们自己弄的,而 git 就是已经帮我们弄好了,所以 分布式版本控制管理系统就是上面的那个样子

gti 远程操作_第1张图片

二. 创建远程仓库

我们使用的 git 平台是  码云 ,如果没有账户的话,可以先创建一个

下面会一步一步来,先到 gti 官网,登录上自己的账号,然后点击右上角的 ‘+’,然后点击 “新建仓库”

gti 远程操作_第2张图片

 gti 远程操作_第3张图片

我们先看一下初始化仓库里面的这些选项有什么用

选则语言:就是我们仓库代码的语言

模板:就是里面有一些模板,其中就有 gitignore 模板,有该模板的话,可以在 add的时候自动忽略一些没有用的文件

开源许可证:选则了某个开源项目的话,就可以使用里面的某些内容等...

设置模板就是创建完仓库里面自带的文件

Readme:就是用来介绍该仓库项目的

Issue:就是写该项目遇到的问题的,以及可以管理这些问题

Poll Request:就是当我们有一个分支想要 merge 的时候,我们需要申请,而Pull Request 就是申请

分支模型:我们之前学过的分支,如果不选的话,我们也自动创建一个 master 分支

然后我们选则完毕后,点击创建就创建完成

gti 远程操作_第4张图片

如果我们想要对仓库进行管理的话,那么我们就点击管理

gti 远程操作_第5张图片

我们就可以对仓库进行管理

三. 克隆远程仓库_HTTP

gti 远程操作_第6张图片

我们在我们的这个仓库里面 首先点击 克隆/下载,然后点击 HTTPS 在点击复制,然后我到我们的远程服务器上,我们使用 git clone + 复制的 URL

注意:不要在任何一个仓库目录下克隆

我们克隆后,我们要输入我们的 gitee 的用户名

gti 远程操作_第7张图片

然后输入我们的 gitee 的密码,linux下密码是不回显的

[lxy@hecs-165234 ~]$ git clone https://gitee.com/naxxkuku/remot-gitcode.git
Cloning into 'remot-gitcode'...
Username for 'https://gitee.com': naxxkuku
Password for 'https://[email protected]': 
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (7/7), done.

 我们克隆好后,我们的仓库就是这个样子

gti 远程操作_第8张图片

而这个远程仓库:origin 就是我们的远程仓库的名称

指令:git remote       查看远程仓库名(统称)

[lxy@hecs-165234 remot-gitcode]$ git remote
origin

指令:git remote -v      查看远程仓库的详细信息 

[lxy@hecs-165234 remot-gitcode]$ git remote -v
origin    https://gitee.com/naxxkuku/remot-gitcode.git (fetch)
origin    https://gitee.com/naxxkuku/remot-gitcode.git (push)

 上面的 URL 就是远程仓库的地址,而括号里面的 fetch(表示可以拉), push(表示可以推)

如果我们本地没有远程仓库的内容,那么我们就要使用 fetch权限,然后把本地仓库没有的给拉下来

如果我们本地仓库想要把开发的内容放到远程仓库,那么我们就要使用 push权限,把本地新的内容推送到远程仓库

四. 克隆远程仓库_SSH

gti 远程操作_第9张图片

使用 SSH 协议使用的是公钥加密和公钥登录的一个机制,我们要向使用SSH的话,我们需要将自己的服务器上的公钥放到 git 上进行管理。

下面查看 git 上是否配置公钥。

gti 远程操作_第10张图片

gti 远程操作_第11张图片 

gti 远程操作_第12张图片 

这里我们的 git 并没有配置公钥,我们配置一下。

如果这里没有配置,然后直接克隆试一下。

[lxy@hecs-165234 ~]$ git clone [email protected]:naxxkuku/remot-gitcode.git
Cloning into 'remot-gitcode'...
The authenticity of host 'gitee.com (180.76.198.77)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,180.76.198.77' (ECDSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

这里就出错了。

 

配置公钥

  1.  到用户目录下查看是否有 .ssh 文件(没有就创建)

  2. 如果有的话,查看是否有 id_rsa 和 id_rsa.pub,其中 id_rsa.pub 就是公钥,有的话就直接复制粘贴到那个配置项里面就可以了

  3. 没有的话,我们输入这条命令 ssh-keygen -t rsa -C "[email protected]"(这个邮箱是 git 上填的邮箱),输入后,这里一路回车,什么都不用填写。

 

[lxy@hecs-165234 .ssh]$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/lxy/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/lxy/.ssh/id_rsa.
Your public key has been saved in /home/lxy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:BzyRXqxyiIJCaTFmGs8ErLp9TFFtb47xn/svPYEC3po [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+*+    ..o       |
|+X.   ..+.o      |
|=.o  o +++       |
|+ . o o =+o      |
|o  . . oS*+   .  |
|.   .   .ooo . . |
| o o      o... ..|
|. . o    E  o ...|
|   .        .o.oo|
+----[SHA256]-----+
[lxy@hecs-165234 .ssh]$ ll
total 12
-rw------- 1 lxy lxy 1679 Jul 30 15:56 id_rsa
-rw-r--r-- 1 lxy lxy  399 Jul 30 15:56 id_rsa.pub
-rw-r--r-- 1 lxy lxy  185 Jul 30 15:46 known_hosts

 下面积都创建好了。

添加公钥

配置好后,我们打开公钥,然后赋值粘贴到配置项里面。

gti 远程操作_第13张图片

gti 远程操作_第14张图片 

配置好后要输入密码。

gti 远程操作_第15张图片 

这样就配置完成。

配置结束后就继续克隆。

[lxy@hecs-165234 ~]$ git clone [email protected]:naxxkuku/remot-gitcode.git
Cloning into 'remot-gitcode'...
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), done.

 这样就成功了。

五. git 向远程仓库推送

当我们的有远端仓库的时候,我们在查看一下 git 的配置,我们需要把git里面的 name 和 email 都配置成我们git 的。

gti 远程操作_第16张图片

名字就是这个。

邮箱就是我们 git 上填写的邮箱。

gti 远程操作_第17张图片 

[lxy@hecs-165234 remot-gitcode]$ git config --global user.name "naxxkuku"
[lxy@hecs-165234 remot-gitcode]$ git config --global user.email "[email protected]"
[lxy@hecs-165234 remot-gitcode]$ git config -l
user.name=naxxkuku
[email protected]
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
[email protected]:naxxkuku/remot-gitcode.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

 着用就配置好了。

[lxy@hecs-165234 remot-gitcode]$ git push origin master:master
[lxy@hecs-165234 remot-gitcode]$ git add .
[lxy@hecs-165234 remot-gitcode]$ git commit -m "linux 远程测试"
[master 00846ac] linux 远程测试
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.txt
[lxy@hecs-165234 remot-gitcode]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
[lxy@hecs-165234 remot-gitcode]$ git push origin master:master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To [email protected]:naxxkuku/remot-gitcode.git
   5fe97e9..00846ac  master -> master

这里就好了,这里在细看一下 push

这里就是git push 命令,然后后面是 origin  表示远端,在后面是一个 master 表示本地的master 分支,后面的master 分支表示向远端的master分支推送,这里如果本地和远端都是master分支那么其实是可以省略只写一个的。

gti 远程操作_第18张图片

这时候我们的远程仓库也就推送到了。

六. 拉取远程仓库

场景:当为我们和其他人共同使用一个仓库时,我们需要别人编写的内容,所i我们需要从远端仓库拉取下来。

这里就不使用这种场景了,这里我们就直接修改远端的数据,然后我们在向下拉取。

gti 远程操作_第19张图片 

现在我们开始向下拉取。

[lxy@hecs-165234 remot-gitcode]$ git pull origin master:master
[lxy@hecs-165234 remot-gitcode]$ git pull origin master:master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From gitee.com:naxxkuku/remot-gitcode
   3e140e1..a16ec9b  master     -> master
Warning: fetch updated the current branch head.
Warning: fast-forwarding your working tree from
Warning: commit 3e140e153a9dae37ce64c4d81032588ce3f88507.
Already up-to-date.
[lxy@hecs-165234 remot-gitcode]$ cat test.txt 
hello world
拉取测试~~~

 我们这里拉取成功了。

这个就是拉取,origin 也表示远端,master分别表示远端和本地,这两个也能省略写。

七. 忽略特殊文件

gti 远程操作_第20张图片

在创建文件的时候我们可以挑选 .gitignore 文件,这个文件可以帮助我们忽略掉我们不想要被管理的文件。

我们当时创建库的时候并没有选择该文件,所以我们可以创建一个。

[lxy@hecs-165234 remot-gitcode]$ cat .gitignore 
# 忽略文件

*.so
*.exe

 我们向该文件里面写入 *.so 表示所有的 so后缀的文件都会被忽略。

现在我们测试一下。

[lxy@hecs-165234 remot-gitcode]$ touch test.so
[lxy@hecs-165234 remot-gitcode]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#	.gitignore
nothing added to commit but untracked files present (use "git add" to track)

我们创建了一个 test.so 文件,然后我们 git status 查看,我们发现只有我们刚才的 .gitignore 文件,我们的 test.so 文件已经被忽略。

那么我们再试一下,我们创建一个 test.txt 文件,然后我们push后查看远端。

[lxy@hecs-165234 remot-gitcode]$ touch test.exe
[lxy@hecs-165234 remot-gitcode]$ vim test.exe
[lxy@hecs-165234 remot-gitcode]$ vim test.so
[lxy@hecs-165234 remot-gitcode]$ git add .
[lxy@hecs-165234 remot-gitcode]$ git commit -m ".gitignore 文件测试"
[master e3e09e3] .gitignore 文件测试
 1 file changed, 4 insertions(+)
 create mode 100644 .gitignore
[lxy@hecs-165234 remot-gitcode]$ git push origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 313 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To [email protected]:naxxkuku/remot-gitcode.git
   a16ec9b..e3e09e3  master -> master

gti 远程操作_第21张图片

我们发现并未被提交。那么我们就是向提交某一个 .so 文件呢?

[lxy@hecs-165234 remot-gitcode]$ git add -f right.so
[lxy@hecs-165234 remot-gitcode]$ touch right.so
[lxy@hecs-165234 remot-gitcode]$ git add -f right.so
[lxy@hecs-165234 remot-gitcode]$ git commit -m "强制提交忽略文件测试"
[master 4f7a650] 强制提交忽略文件测试
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 right.so
[lxy@hecs-165234 remot-gitcode]$ git push origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 303 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To [email protected]:naxxkuku/remot-gitcode.git
   e3e09e3..4f7a650  master -> master

 

gti 远程操作_第22张图片 

 

这里要是想强制提交,那么就是带 -f 选项,但是这样带 -f 选项会破坏规则,所以我们还可以在 .gitignore  文件里面继续编写。

[lxy@hecs-165234 remot-gitcode]$ cat .gitignore 
# 忽略文件

*.so
*.exe

!left.so

我们在前面加 ! 就表示不忽略该文件。下面测试一下。

[lxy@hecs-165234 remot-gitcode]$ touch left.so
[lxy@hecs-165234 remot-gitcode]$ git add .
[lxy@hecs-165234 remot-gitcode]$ git commit -m ".gitignore文件不忽略测试"
[master ba0b6df] .gitignore文件不忽略测试
 2 files changed, 2 insertions(+)
 create mode 100644 left.so
[lxy@hecs-165234 remot-gitcode]$ git push origin master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 334 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To [email protected]:naxxkuku/remot-gitcode.git
   4f7a650..ba0b6df  master -> master

gti 远程操作_第23张图片

如果当我们的 .gitignore 文件里面的忽略配置太多,我们也不知道我们到底有没有忽略,我们可以使用命令查看一下。

[lxy@hecs-165234 remot-gitcode]$ git check-ignore -v up.so
[lxy@hecs-165234 remot-gitcode]$ touch up.so
[lxy@hecs-165234 remot-gitcode]$ git check-ignore -v up.so
.gitignore:3:*.so	up.so

 这里就可以看到我们的 up.so 时被忽略的,到 .gitignore 的第三行。

八. 配置别名

有时候我们在 git 操作的时候命令太长,我们可以对其进行配置

[lxy@hecs-165234 remot-gitcode]$ git log --pretty=oneline --abbrev-commit

我们想对这条命令进行配置一下。

[lxy@hecs-165234 remot-gitcode]$ git config --global alias.缩写名 '被缩写的命令'

上面这个就是指令,我们来试验一下。

[lxy@hecs-165234 remot-gitcode]$ git config --global alias.lps 'log --pretty=oneline --abbrev-commit'

下面我们看一下我们的配置是否可以。

[lxy@hecs-165234 remot-gitcode]$ git lps
ba0b6df .gitignore文件不忽略测试
4f7a650 强制提交忽略文件测试
e3e09e3 .gitignore 文件测试
a16ec9b update test.txt.
3e140e1 git 远端测试
00846ac linux 远程测试
5fe97e9 Initial commit

当然我们配置后原指令也是可以继续生效的。

[lxy@hecs-165234 remot-gitcode]$ git log --pretty=oneline --abbrev-commit
ba0b6df .gitignore文件不忽略测试
4f7a650 强制提交忽略文件测试
e3e09e3 .gitignore 文件测试
a16ec9b update test.txt.
3e140e1 git 远端测试
00846ac linux 远程测试
5fe97e9 Initial commit

git 的远程操作就到这里,我们下次再见~

你可能感兴趣的:(Git,git)