环境
服务器 Ubnutu16.4 + git (version 2.7.4)
客户端 windows10 + git (version 2.20.1.windows.1)
服务器端
#安装git
#sudo apt-install git-core
#查看git版本
#git --version
客户端
下载GIt Bash,戳进去有完整的教程。
#这一步需要管理员的权限
#sudo useradd git
#然后进行密码的设置,但是对于已经创建账户的服务器来说,这一步可以自行跳过
在windows的git bash上输入
$ssh-keygen -t rsa
#连按回车三下,因为他会要求你设置git本地的登陆密码,直接按回车表示不设置密码
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/huanshangfeng/.ssh/id_rsa): Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/huanshangfeng/.ssh/id_rsa.
Your public key has been saved in /c/Users/huanshangfeng/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:c7C9CgiSgYZKxuh/9vsgZAhAsj76ceYtcgjLDonPJRM huanshangfeng@DESKTOP-LHO65D8
The key's randomart image is:
+---[RSA 2048]----+
|+. |
|B. |
|** . |
|Bo. . + |
|++E. o S o |
|+oooo. o . |
|*o+o=+.. . |
|o=oO=.o... |
|..+o...o+. |
+----[SHA256]-----+
#在显示上面的内容后,在执行后续操作
$cat ~/.ssh/id_rsa.pub
#下面显的就是你的密钥
#ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZJLyIJjkpEvk/hvdYRo2lapx8biu3
W0cKEZ6ouE9BQrWIQcm7FYk510mbRDPHV9FCnKt5qLF9UkR1aXE7iMq7aPmftXzH
iuuWTvn/v9GP95EUHBOqWWTnCey9V7E5HOhyJ04N0HPnqwRuLuhiK36piho6GkoI+
LN08PVJyDxXBljwxbobfOj5L3hvNyxGHXyZA9RuYPeMHe1yPkhHlJaqbpPfMMVUEHV
2b+W2kaWfPjRDZ6rKOKMYxkuXA/j9yQ/Xmzyp0PkX49D+7JaBMpFf2VetsnbO09Jt6H
mQ3cLLkngM3inxDXWysgyurQtcidzXHE5JSZb3Ts8GnY+3v6Yn huanshangfeng@DESKTOP-LHO65D8
接下来在你的/home/git/的目录下进行如下操作
$ls -a #找到隐藏的目录.ssh
$cd .ssh
#在.ssh目录下如果有authorized_kesys文件就可以直接将密钥复制进去,如果没有就创建该文件
$touch authorized_keys
在此之后,你去Git clone项目的时候,就无需输入密码
#在你的目录下创建一个新的文件夹.git (有没有.git后缀无关紧要,只要是为了让自己知道这个文件夹是干什么的,容易管理)
$mkdir sample.git
$cd sample.git
#初始化仓库
$git --bare init #这只是一个裸仓库,里面只有一个.git的文件
至此,服务器端的操作就基本完成
#git clone 用户名字@服务器ip:端口号 仓库地址
$git clone [email protected]:/home/git/sample.git #当端口号是22时,可以省略不写
这一步相当的重要,当你与他人合作一个项目的时候,你向远程仓库上传代码的时候必须留下你的名字,不然你的伙伴压根不知道你上传的代码是哪一份,在每一次上传时,git都会提示你
git config --global user.name"your name" #设置你的名字
git config --global user.email"[email protected]"#设置你的邮箱
#打开Git Bash创建一个空的文件夹
mkdir test
cd test
git init #初始化本地仓库
Initialized empty Git repository in E:/test/.git/ #初始化成功的仓库后的提示
#git remote [shortname] [url] #shortname:你定义的名字。 url:远程仓库的地址
git remote add origin hsf@172.24.97.26:/home/hsf/sample.git
使用git remote 查看自己设置的所有名字
使用git remote -v 查看更加详细的信息
使用git remote rm [别名] 删除已经设置的远程目录
1、git add 加入上传文件到缓存
2、执行 git commit 将缓存区内容添加到仓库中
3、上传文件到远程仓库
我已经事先将一个test.txt文件储存在本地仓库中
使用git status 或者 git status -s 的命令可以看到当前文件的状态,红色代表该文件并没有加入缓存
#使用git add命令加入缓存
git add [文件名] #将一个文件加入缓存当中
git add . #将该仓库中所有的文件都加入缓存当中
加入缓存后查看发现,提交的文件变成绿色
再次之后我对test.txt文件的内容进行了改动,使用git status后会告诉你该文件有改动,颜色变成红色,AM表示改动
当你想要想远程仓库加入最新改动的文件时,需要在此使用git add将文件加入缓存
git commit -m"注释" #可以通过注释来标识此次上传改动了什么。
#上传之后,使用git status就可以看到缓存区里已经没有东西
git push -u origin master #origin为你要上传的地址的别名
git log #可以查看所有的提交
#我预先提交了两个版本的test.txt
#当我们直接使用git clone下载的是最新的版本
git reset --hard (五六个数字)#上图 **黄色字体** commith后的数字
#这样就可以回到你想要的版本
但此时远程仓库还是我们之前提交的最新的版本,如果想要远程仓库的版本和我们当前版本保持一致,使用git push -f 强制回退版本