整体流程是:
安装msysgit → 安装及配置copssh → 粘贴某些文件 → git服务器测试
一、安装msysgit
安装一直next选择默认设置就好。
安装路径最好选择在每个盘的根目录下
安装完之后打开git bash,进入命令行
配置git的user.name和user.email
$ git config --global user.name "yourname"
$ git config --global user.email "youremail"
用以下命令生成公钥私钥,它们被放到默认当前用户目录下的.ssh文件夹中,打开生成的id_rsa.pub复制里面的公钥备用
ssh-keygen -t rsa
二、安装及配置copssh
下载网址为:https://www.fxxz.com/soft/107135.html
安装默认设置就可以
安装完成之后,打开其中的copssh control panel,选择第二行的users选项,第一次进入一般为空,点右边的add
接着点击“Forward”
在User中选择一个用户后,“Forward”
把options的第一个选项“Allow password authentication”勾去掉,因为要用公私钥来登陆,不用密码登陆,forward。
“Apply”完成用户添加。
添加后应该如上图。
点击keys,这里就是ssh保存的公钥。第一次点开应该是空的,就需要把刚刚在git bash中准备好的公钥放在这里
找到copssh安装目录,打开home,打开刚刚选择的用户名,打开.ssh
新建一个authorized_keys的文本(没有后缀!!),把准备好的公钥粘贴到里面,保存退出
这时回到copssh control panel,点击keys再关闭,再次打开就会有一个公钥信息了
(我的再次打开也没有公钥,回去刚刚的位置一看,它创建了一个新文件但里面没有我的公钥,于是我又把公钥复制到这个新文件里,再回到copssh公钥就出来了,之后添加客户端都是在这里添加公钥)
现在就可以用私钥来登录ssh服务器了
打开git bash,输入命令
ssh 刚刚选择用户名@你的ip地址
登录成功如下:
lenovo@DESKTOP-GLB2KSO MINGW64 ~
$ ssh lenovo@192.168.2.6
Last login: Thu May 13 14:26:36 2021 from desktop-glb2kso
这里查看自己的IP地址可以:Win+R → cmd → 输入ipconfig → 里面的Ipv4地址就是
登录成功后可以使用Linux的命令,但是git的命令还不能使用
三、粘贴一些文件
KaTeX parse error: Undefined control sequence: \bin at position 4: Git\̲b̲i̲n̲目录(Git也就是git安装包的位置)下的
git.exe ,
git-receive-pack.exe ,
git-upload-archive.exe ,
git-upload-pack.exe
libiconv-2.dll
复制到$ICW\bin目录(copssh的安装目录)下。
ICW下
把 $Git\mingw64\libexec\git-core中的git-upload-pack.exe 文件复制到 $git/usr/bin/ 下
至此,配置完毕
四、git服务器测试及其简单使用
创建一个git仓库
lenovo@DESKTOP-GLB2KSO MINGW64 ~
$ ssh lenovo@192.168.2.6 #连接ssh服务器,ip会变,如果没有这个ip的公钥会连接不上,要重新生成一遍公钥
Last login: Thu May 13 16:03:56 2021 from desktop-glb2kso
lenovo@DESKTOP-GLB2KSO ~
$ mkdir test.git #新建文件作为git remote仓库,新建的文件地址在C:\ICW\home\lenovo
lenovo@DESKTOP-GLB2KSO ~
$ cd test.git
lenovo@DESKTOP-GLB2KSO ~/test.git
$ git init --bare #初始化仓库,指定该仓库为裸仓库(没有工作区)
lenovo@DESKTOP-GLB2KSO ~/test.git
$ cd .. #返回上一级
lenovo@DESKTOP-GLB2KSO ~
$ ls #展开C:\ICW\home\lenovo中的内容
huluobo.git test.git myhome myhome.lnk no texxt.git
lenovo@DESKTOP-GLB2KSO ~
$ exit #退出ssh服务器
logout
Connection to 192.168.2.6 closed.
从服务器克隆这个仓库到D盘
lenovo@DESKTOP-GLB2KSO ~
$ cd d
-bash: cd: d: No such file or directory
lenovo@DESKTOP-GLB2KSO ~
$ cd d:
lenovo@DESKTOP-GLB2KSO /cygdrive/d
$ mkdir test1 #新建文件存放克隆仓库
lenovo@DESKTOP-GLB2KSO /cygdrive/d
$ cd test1
lenovo@DESKTOP-GLB2KSO /cygdrive/d/test1
$ git clone lenovo@192.168.2.6:test.git #还要加上 :test.git
#这里clone的地址user@192.168.xx.xx已经是在目录C:\ICW\home\lenovo下
#所以冒号后面写上test.git的相对路径就好了,
#这个test.git就是我们上面建的remote仓库
#clone下来的仓库一般会去掉原仓库的.git来命名
Cloning into 'test'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
也可以从git上clone托管代码下来测试一下
lenovo@DESKTOP-GLB2KSO MINGW64 /d/test1 (master)
$ git clone
Cloning into 'git-osc'...
remote: Enumerating objects: 938, done.
remote: Counting objects: 100% (938/938), done.
remote: Compressing objects: 100% (901/901), done.
remote: Total 938 (delta 424), reused 79 (delta 18), pack-reused 0
Receiving objects: 100% (938/938), 707.01 KiB | 1.68 MiB/s, done.
Resolving deltas: 100% (424/424), done.
push测试:
注意:如果是在刚刚克隆下来的test仓库里面修改,它已链接origin remote仓库,也就是我们的C:\ICW\home\lenovo/test.git
如果是新建的文件要push,那么需要设定origin remote才可以
下面有#的命令是第一种情况的操作,带*的是两种情况都需要的操作
lenovo@DESKTOP-GLB2KSO MINGW64 ~
$ cd d:
lenovo@DESKTOP-GLB2KSO MINGW64 /d
$ cd test1
#lenovo@DESKTOP-GLB2KSO MINGW64 /d/test1 (master)
$ cd test
*lenovo@DESKTOP-GLB2KSO MINGW64 /d
$ touch a b c
*lenovo@DESKTOP-GLB2KSO MINGW64 /d/test1 (master)
$ git status #输入该命令查看版本状态,有没有没有add, commit的文件
On branch master
nothing to commit, working tree clean
*lenovo@DESKTOP-GLB2KSO MINGW64 /d/test1 (master)
$ git add
Nothing specified, nothing added.
hint: Maybe you wanted to say 'git add .'?
hint: Turn this message off by running
hint: "git config advice.addEmptyPathspec false"
*lenovo@DESKTOP-GLB2KSO MINGW64 /d/test.git (master)
$ git add . #跟踪所有修改过的文件的(一个新的文件,需要被 add一次之后,
#本地git才会跟踪该文件),也可以直接 输入文件名,单独添加。
*lenovo@DESKTOP-GLB2KSO MINGW64 /d/test.git (master)
$ git commit -m "just for test" #-m后面输入的是本次提交的说明,可以输入任意内容
On branch master #提交会自动签名之前的global user.name 和Email
nothing to commit, working tree clean
这里是第二种情况的额外操作:关联裸库
lenovo@DESKTOP-GLB2KSO MINGW64 /d/test1 (master)
$ git remote add origin 192.168.3.5:/C:/ICW/home/lenovo/test.git
lenovo@DESKTOP-GLB2KSO MINGW64 /d/yi.git (master)
$ git remote add origin c:/test.git
lenovo@DESKTOP-GLB2KSO MINGW64 /d/yi.git (master)
$ git remote -v #查看origin remote
origin c:/test.git (fetch)
origin c:/test.git (push)
最终的push操作:
*lenovo@DESKTOP-GLB2KSO MINGW64 /d/yi.git (master)
$ git push origin master #master是默认分支名,可以更改到你要添加的分支
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 387 bytes | 387.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To c:/test.git
出现下面这种错误:
lenovo@DESKTOP-GLB2KSO MINGW64 /d/test.git (master)
$ git push origin master #origin是分支名
/usr/bin/git-receive-pack.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
需要配置环境变量来解决:
我的copsssh安装包ICW在C盘下,git安装包也在C盘下,以下路径都需要根据自己的情况修改
我们需要做的是
在C:\ICW\home\lenovo\.bashrc文件中,最后加上PATH=/cygdrive/C/Git/mingw64/libexec/git-core:/cygdrive/C/ICW/bin:${PATH}
#注意PATH中的C盘是没有冒号的,cygdrive不能删除