一. git & gitee
1. git
:本地的 版本管理工具
linus
2. github
:代码托管云平台
3. gitee
:代码托管云平台
二. 版本管理工具分类
1.
集中式 :
SVN
2.
分布式 :
git
三. git初探
1.
查看版本
git --version
2. ubuntu
下的安装
sudo apt-get install git
3.
初始化仓库
git init
4.
新建文件编辑保存
5.
把文件添加到暂存区
git add 文件名git add *
6.
做一次提交
git commit -m " 此次提交的描述 "
7.
查看日志
git log
8.
实验过程
$ git init已初始化空的 Git 仓库于 /home/linux/giTest/1-test/.git/$ ls -l总用量 0$ ls -a. .. .git$ vi test.txt$ git add test.txt$ git commit -m "1- 第一次提交 "[master (根提交) 790175e] 1 - 第一次提交1 file changed, 1 insertion( + )create mode 100644 test.txt$ git logcommit 790175e6fcbdfab4cfb1b373a5615a34dcea6044 (HEAD - > master)Author: AndreaYYmm <andreayymm@163.com>Date: Wed Sep 22 22 :48:54 2021 -07001 - 第一次提交
9.可能遇到的问题
注意:按照提示执行命令,配置的是整个系统下git的用户名和邮箱
四. 版本切换
1.
版本切换
git reset --hard HEAD^git reset --hard 版本号
2.
查看当前仓库中执行过从操作
git reflog
3.练习过程
$ cat test.txtgit 是一个版本管理工具$ git logcommit 790175e6fcbdfab4cfb1b373a5615a34dcea6044 (HEAD - > master)Author: AndreaYYmm <andreayymm@163.com>Date: Wed Sep 22 22 :48:54 2021 -07001 - 第一次提交$ git reset --hard 790175e6HEAD 现在位于 790175e 1 - 第一次提交$ git reset --hard 3df1227571HEAD 现在位于 3df1227 2 - 第二次版本提交$ cat test.txtgit 是一个版本管理工具git 是一个超赞的版本管理工具$ git reset --hard HEAD^HEAD 现在位于 790175e 1 - 第一次提交$ git logcommit 790175e6fcbdfab4cfb1b373a5615a34dcea6044 (HEAD - > master)Author: AndreaYYmm <andreayymm@163.com>Date: Wed Sep 22 22 :48:54 2021 -07001 - 第一次提交$ git reflog790175e (HEAD - > master) HEAD@{0}: reset: moving to HEAD^3df1227 HEAD@{1}: reset: moving to 3df1227571790175e (HEAD - > master) HEAD@{2}: reset: moving to 790175e6790175e (HEAD - > master) HEAD@{3}: reset: moving to HEAD^3df1227 HEAD@{4}: commit: 2 - 第二次版本提交790175e (HEAD - > master) HEAD@{5}: commit (initial): 1 - 第一次提交$ git reset --hard 3df1227HEAD 现在位于 3df1227 2 - 第二次版本提交$ git logcommit 3df122757190bff4d363417121e8532a5d44423d (HEAD - > master)Author: AndreaYYmm <andreayymm@163.com>Date: Wed Sep 22 23 :05:36 2021 -07002 - 第二次版本提交commit 790175e6fcbdfab4cfb1b373a5615a34dcea6044Author: AndreaYYmm <andreayymm@163.com>Date: Wed Sep 22 22 :48:54 2021 -07001 - 第一次提交
五. 工作区、暂存区和版本库
1.查看状态
git status
2.
撤销工作区的修改
$ vi test.txtlinux@ubuntu:~/giTest/1-test $ cat test.txtgit 是一个版本管理工具git 是一个超赞的版本管理工具git 比 SVN 好用,但是 my stupid boss still like svn$ git status位于分支 master尚未暂存以备提交的变更:(使用 "git add < 文件 >..." 更新要提交的内容)(使用 "git checkout -- < 文件 >..." 丢弃工作区的改动)修改: test.txt修改尚未加入提交(使用 "git add" 和 / 或 "git commit -a" )$ cat test.txtgit 是一个版本管理工具git 是一个超赞的版本管理工具
3.
撤销暂存区和工作区的修改
$ vi test.txt$ git add *$ git status位于分支 master要提交的变更:(使用 "git reset HEAD < 文件 >..." 以取消暂存)修改: test.txt$ git reset HEAD test.txt重置后取消暂存的变更:M test.txt$ git status位于分支 master尚未暂存以备提交的变更:(使用 "git add < 文件 >..." 更新要提交的内容)(使用 "git checkout -- < 文件 >..." 丢弃工作区的改动)修改: test.txt修改尚未加入提交(使用 "git add" 和 / 或 "git commit -a" )$ cat test.txtgit 是一个版本管理工具git 是一个超赞的版本管理工具git 比 SVN 好用 but my boss till licke it$ git checkout -- test.txt$ cat test.txtgit 是一个版本管理工具git 是一个超赞的版本管理工具git 比 SVN 好用
4.
如果有了新的版本,参考上面的版本切换,回退到上一个版本即可
git reset --hard HEAD^
六. 创建远程仓库
1.
个人主页上
2.
新建仓库,对文件名和仓库介绍做一些描述
3. 创建好后,进入仓库首页
4. 下方有同步本地仓库的两种方式
第一种方式是,先创建本地仓库,然后把本地仓库的内容推到远程仓库,此过程需要登录
第二种方式是,先克隆远程仓库,然后修改克隆的仓库,再把本地新的版本推到远程仓库,也需要
身份认证
七
.
公钥管理
1.
先在
Ubuntu
上生成公钥
$ ssh -keygen -t rsa -C "andreayymm@163.com" # 生成公钥命令Generating public/private rsa key pair.Enter file in which to save the key (/home/linux/.ssh/id_rsa):Created directory '/home/linux/.ssh' .Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/linux/.ssh/id_rsa.Your public key has been saved in /home/linux/.ssh/id_rsa.pub. # 公钥保存子啊这个文件中The key fingerprint is:SHA256:Ovfq6go0DFo3EEt2ycQrzs1t + j0B1MCFXZ0C36FuOPA andreayymm@163.comThe key 's randomart image is:+ --- [RSA 2048 ]---- +| == oo.*oo.... || o ++ + o..oo. ||. o oo. o.. ||. + .....o o ||.o ++ . .E o || .o.o o..o || . oo .. || .. + .. || . ++ o + o. |+ ---- [SHA256]----- +$ cat ~/.ssh/id_rsa.pub #cat 保存公钥的文件查看公钥内容ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCkuGzg/vGE/ouYXjAiOEIdmJncNUKf + uFLAbLGe/TA6 + 8aC6WwGFjOU5V6YL/nl8ruv2EfyBc6ZzAaLYuYNDM0eymZQ6aMBloTHfuKTxILFTcVYr6eySR1UV9rAojZsFG42P/yDlKZ9RhxAUEDtaAnWeA4LE2Bo5XEslHBxpbXDIJOlM1U4BvuZM66XOZtfd/3r5NnTTMWabsgU1Gtw3AkYOOr31/L6pEBRHN6KWhak0k + q6ySw76hMbZuIV4mko5iuc6BmXgZsWgt5BE9ueJ6JBOooJYfCikPZBqY7iw6KmTOfeY4Wgi/AbL7MGFV7Bd + vSsKK2FCKgE/u5ILfs1fandreayymm@163.com
2.
添加公钥
点击头像,设置,左侧有一个
ssh
公钥管理
3. 测试公钥是否添加成功
$ ssh -T git @gitee.comThe authenticity of host 'gitee.com (212.64.62.183)' can 't be established.ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp + KkGYoFgbVr17bmjey0Wc.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'gitee.com,212.64.62.183' (ECDSA) to the list ofknown hosts.Hi 袁莹 -Andrea! You 've successfully authenticated, but GITEE.COM does notprovide shell access.
4.
使用
ssh
的方式同步远程仓库
$ git clone git @gitee.com:AndreaYYmm/giteetest-21051.git正克隆到 'giteetest-21051' ...remote: Enumerating objects: 4 , done .remote: Counting objects: 100 % (4/4), done .remote: Compressing objects: 100 % (4/4), done .remote: Total 4 (delta 0 ), reused 0 (delta 0 ), pack-reused 0接收对象中 : 100 % (4/4), 完成 .$ lsgiteetest-21051$ cd giteetest-21051/$ lsREADME.en.md README.md$ vi test.c$ gcc test.c$ ./a.outhello gitee$ lsa.out README.en.md README.md test.c$ git add *$ git commit -m "1-local commit"[master 74ded3d] 1 -local commit2 files changed, 14 insertions( + )create mode 100755 a.outcreate mode 100644 test.c$ git push origin master # 将新版本推到远程仓库对象计数中 : 4 , 完成 .压缩对象中 : 100 % (4/4), 完成 .写入对象中 : 100 % (4/4), 2 .84 KiB | 2 .84 MiB/s, 完成 .Total 4 (delta 0 ), reused 0 (delta 0 )remote: Powered by GITEE.COM [GNK-6.1]To gitee.com:AndreaYYmm/giteetest-21051.gitee99354..74ded3d master - > master
5. 刷新仓库主页,可以看到上传的文件