版本管理——github的使用

集中式 VS 分布式

集中式版本控制系统,
版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。
中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
在这里插入图片描述
集中式版本控制系统最大的毛病就是必须联网才能工作
如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟。
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,无需联网。
多个人协作,只需把各自的修改推送给对方,就可以互相看到对方的修改了。
分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

在这里插入图片描述
CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。

使用GitHub远程仓库

step1 创建ssh key

ssh-keygen -t rsa -C “youremail@example.com”
在这里插入图片描述
在这里插入图片描述

step2 登陆GitHub,打开“Account settings”,“SSH Keys”

在这里插入图片描述
在这里插入图片描述

step3 git bash ssh 连接到GitHub,添加远程仓库

登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。
git bash 终端,输入如下命令检测是否能够ssh连接github,
ssh -T git@github.com
在这里插入图片描述

step4 把本地仓库和远程仓库进行关联

git remote add origin git@github.com:echoyzt/allbijis.git
origin 是远程仓库在本地的别名
git@github.com:echoyzt/allbijis.git 远程仓库的路径

如何同一台电脑管理多个sshkey

余智天: 如果我想访问两台git服务器,我笔记本ssh私钥怎么处理呢?有两份私钥了

  1. 生成不同的密钥对: 使用ssh-keygen命令为每个服务器生成独立的SSH密钥对。例如,分别为服务器A和服务器B生成密钥对:ssh-keygen -t rsa -C “your-email@example.com” -f ~/.ssh/id_rsa_server_a
    ssh-keygen -t rsa -C “your-email@example.com” -f ~/.ssh/id_rsa_server_b
    bash这样将会分别生成私钥id_rsa_server_a和id_rsa_server_b以及对应的公钥id_rsa_server_a.pub和id_rsa_server_b.pub。2. 配置SSH配置文件: 编辑或创建~/.ssh/config文件,以便为每个服务器指定不同的私钥:# 配置服务器A
    Host server-a-hostname-or-ip
    HostName server-a-host.example.com
    User your-username-on-server-a
    IdentityFile ~/.ssh/id_rsa_server_a

配置服务器B

Host server-b-hostname-or-ip
HostName server-b-host.example.com
User your-username-on-server-b
IdentityFile ~/.ssh/id_rsa_server_b
ini在这里,server-a-hostname-or-ip和server-b-hostname-or-ip是你为两个服务器定义的别名,用于在命令行中快速引用它们。而HostName字段填写实际的服务器域名或IP地址,User字段填写你在对应服务器上的用户名,IdentityFile则指向相应的私钥文件。3. 将公钥上传到Git服务器: 分别将两个公钥上传到各自的Git服务器。例如,将id_rsa_server_a.pub的内容复制并粘贴到服务器A的SSH公钥设置中,同样操作将id_rsa_server_b.pub的内容上传至服务器B。完成以上步骤后,当你通过SSH连接Git服务器时,只需使用配置好的别名,SSH就会自动使用正确的私钥进行身份验证:git clone ssh://server-a-hostname-or-ip/repo.git
git clone ssh://server-b-hostname-or-ip/another-repo.git
bash这样,你的笔记本就可以根据目标服务器智能地切换私钥来进行认证了。

合并冲突

远程仓库操作

查看远程仓库

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testgitlabstream (develop2)
$ git remote
origin

origin ——这是 Git 给你克隆的仓库服务器的默认名字

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testgitlabstream (develop2)
$ git remote -v
origin  http://yuzttest:yuzt021zsh@101.132.249.52:8001/gitlab-instance-99486f77/testgitlabstream.git (fetch)
origin  http://yuzttest:yuzt021zsh@101.132.249.52:8001/gitlab-instance-99486f77/testgitlabstream.git (push)

工作区 vs 暂存区 vs 版本库

在这里插入图片描述

在这里插入图片描述

  • workspace:工作区,就是你在电脑里能看到的目录
  • staging area:暂存区/缓存区,英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • local repository:版本库或本地仓库,工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
  • remote repository:远程仓库

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:
在这里插入图片描述

——————————————————————
git diff 显示未暂存的变更 --cached 显示已经暂存的变更
git log,
git reflog
git log --pretty=oneline
git log --graph --pretty =format:“%h %s”

撤销文件修改

git checkout –

当数据使用add 添加到暂存区后

思路:先从暂存区里面移除相应的文件
在这里插入图片描述

删除文件

将文件从暂存区和工作区中删除
git rm
如果删除之前修改过并且已经放到暂存区域的话,必须用强制删除选项 -f。
强行从暂存区和工作区中删除修改后的 runoob.txt 文件
git rm -f runoob.txt
如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可
git rm --cached

再提交
git commit -m 备注
git show ID号
git show-branch -r显示远程分支,-a显示所有分支

git文件状态

untracked
tracked (执行git add 之后)
ignored(.gitignore文件)

——————————————————————
给远程仓库起别名
git remote add origin 远程仓库地址
git push -u origin 分支
git clone 远程仓库地址(第一次下载版本)
非ssh方式:
git clone http://root:yuzt021zsh@101.132.249.52:8001/root/liveroom-test.git
git pull origin 分支
——————————————————————
rebase 变基 使多条git提交记录合并成一条记录
git rebase -i HEAD~3 (合并最近的3条记录)
注意:不要合并已经push到版本库的记录

git rm --cached 会删除索引中的文件并把他保留在工作目录。
git rm 将文件从索引和工作目录中都删除。
git mv a.cpp b.cpp
git cat-file -p SHA1
git rev-parse 3b18e512d
git tag -m"xxx" V1.0 3ede462
git ls-files --stage

git bisect
git show-branch
检出分支 git checkout 已存在的分支名
git diff ???
@@ -1,4 +1,5 @@
- 表示第一个文件,1表示第一行,4表示连续4行
"+1,5"表示第二个文件从第一行开始的连续5行。
——————————————————————

关联仓库,同步分支

在分支A, 本地创建分支B,并关联远程分支B,不切换分支。

git branch develop origin/develop

在分支A,如果远程有分支B,本地没有该分支。

git checkout --track origin/branch_name
这时本地会新建一个分支名叫 branch_name,
会自动跟踪远程的同名分支 branch_name,且自动切到branch_name 分支。

如果本地新建了一个分支 branch_name,但是远程没有。

这时候 push 和 pull 指令就无法确定该跟踪谁,
一般来说我们都会使其跟踪远程同名分支,
git push --set-upstream origin branch_name
这样就可以自动在远程创建一个 branch_name 分支,
然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步。

远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch
 git push
远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch
 git push -u origin/remote_branch
远程没有remote_branch分支并且本地已经切换到local_branch
  git push origin local_branch:remote_branch

———————————————————————
gitstatus git ls-files -u 查看未合并的文件
裸版本裤可以简单的看成.git目录的内容
git stash save
git flow init

4 分支管理-Bug分支

git stash :把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list :查看所有被隐藏的文件列表
git stash apply :恢复被隐藏的文件,但是内容不删除
git stash drop: 删除文件
git stash pop: 恢复文件的同时 也删除文件

Git基本常用命令如下:
git diff XX : 查看XX文件修改了那些内容
git reflog : 查看历史记录的版本号id
在这里插入图片描述

git checkout – XX : 把XX文件在工作区的修改全部撤销。
git rm XX : 删除XX文件

本地仓库到远程仓库的操作

git remote add testgit https://github.com/RTplay/testgit.git: 添加一个远程库
git push -u(第一次要用-u 以后不需要) origin master :把当前master分支推送到远程仓库master分支。

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值