IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git学习-1 -> 正文阅读

[开发工具]Git学习-1

了解

来自百度翻译

Git(读音为/g?t/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] 也是[Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds/9336769)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper [1] 。

介绍一下,gitee或者github这种远程仓库的比喻吧,

对了这只是一部分的,本文只牵涉,自己上传和下载别人的代码,没有pr,pull等许多概念,所以比喻有所不当,但是绝对是一种可理解的方式

现在你站的地方是你的大本营,这个地方叫作工作区,你在这里工作(你的电脑上某个文件夹),接着有一座桥,这个桥有两条路,桥的尽头是gitee或者github这种远程仓库,这个远程仓库所在的地方,你可以创建仓库,别人也可以创建,但是分为私有和公开的,私有的别人瞧不见,同样你也瞧不见别人私有的,但是公开的呢,可以互相下载到自己大本营,就是自己的电脑,但是要遵守相应的条约,这个和是否可以商业化等联系我就不做赘述了,

那么现在说说这个桥,桥有两个路分别对应两个功能,一,有了git,就是一个路,可以上传自己的代码也好,下载也行,一条上传到gitee仓库的路,另一条路也不用说了,就是github这条路,这是基建,可以下载别人的开源的东西到自己电脑

当然了git除此之外还能解决冲突,实现多人开发中的等需求

git工作流程(workflow掌握)

image-20220314083137880

1-0 github密钥

配置密钥是因为提交的时候每次都要输入用户名和密码,为了避免每次都出现这种繁琐情况,就出现了密钥,且安全

比较

两种上传方式
第一种https 每次都需要输入密码和用户名
https://github.com/xiangshuo1992/preload.git
第二种提交方式,利用SSH密钥
git@github.com:xiangshuo1992/preload.git

一 设置user name 和email

git config --global user.name "Luke.Deng"
git config --global user.email  "xiangshuo1992@gmail.com"

查看user name 和 Email

git config user.name
git config user.email

二 检查是否存在SSH Key

cd ~/.ssh
ls
//存在id_rsa和id_rsa.pub则已经有了SSH Key

image-20220314084956195

若没有ssh key,则生成一下

ssh-keygen -t rsa -C "填写自己的邮箱"

然后检查

检查是否存在
cd ~/.ssh
ls

三 获取SSH Key密钥

//拷贝秘钥 ssh-rsa开头
cat id_rsa.pub
在git里边是Linux的操作语法,和wondows不一样
复制是:ctrl+ins
粘贴是:shift+ins

image-20220314085859066

四 GitHub添加SSH Key

image-20220314090652757

五 验证

ssh -T git@github.com
成功的样子如下

image-20220314090818568

克隆的时候直接复制如下对应的地方

image-20220314091121257

参考链接:https://blog.csdn.net/u013778905/article/details/83501204

1-1 Fork

看明亮学长的博客不懂,看廖雪峰的懂了

如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:(雪峰老师的话)

git clone git@github.com:michaelliao/bootstrap.git

一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。

1-2 Clone

开发的话就一般在develop(dev分支)里克隆就行

image-20220314094222735

如果只是想要这个项目,可以在master主分支克隆,这是稳定版本(默认)

代码:

git clone 克隆的地址粘贴一下

这里,感觉明亮学长写的ssh://是多余的,我验证是不需要的

成功的样子:

image-20220314171254188

1-3 添加远程仓库

查看远程仓库有哪些

命令
git remote -v
运行结果如下,代表只有自己的远程仓库
origin  git@github.com:jing-zhi/git-study.git (fetch)
origin  git@github.com:jing-zhi/git-study.git (push)
这种情况需要添加组长的主仓库
git remote add upstream ssh主仓库地址
再检查如下
origin  ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch)   #自己的
origin  ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push)    #自己的
upstream        ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch)    #项目组长的
upstream        ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push)     #项目组长的

1-4 看分支状态

就是对现在的情况了解一下

看看自己有啥分支
git branch    (查看自己本地分支)
git branch -a  (查看所有的分支,包括远程和本地)
下边这个可以查看,哪个分支有啥变化
git status
以上三个都试试

1-5 新建分支

这一步不是必须的,只是为了确保开发安全

新建并且切换
git checkout -b check
也可以切换回来
git checkout develop

1-6 stash 放暂存区,拉新,合并

放暂存区是因为组长的仓库更新速度快,你得先拉取(pull),但是直接拉取可能会直接带来冲突,所以可以先把自己的代码放在暂存区

放暂存区
git stash save "save message"
拉组长最新的仓库
git pull upstream develop
这个时候再把咱放在暂存区的代码拿出来,合并
git stash pop

1-7 经典三部曲

到这里大家肯定都知道那三步了

git add .
git commit -m""
git push origin HEAD:分支名称  (origin代表自己的远程仓库)如果远程仓库没有这个分支会自动创建

1-8 真的最后了

提交pr ,就是pull request ,提交给组长看,他同意了,主仓库那边就更新了

image-20220315085336245

1-9 END

剩下的就是,自己的了

切换到开发分支
git checkout develop
将check合并到自己当前的分支
git merge check
删除check 分支
git branch -d check

1-10 明灿学长写的注意事项

  • 在每次新建分支之前和push之前,都要pull一下主仓库,保证代码最新,避免产生冲突。
  • 任何关于项目的私密信息,例如一些账号密码等,不要放到开源平台上!也不要随意把项目源码在未经负责人的同意下私自开源。
  • 在每次提交了合并请求之后不要立马删除该分支,并且写新的代码之前也要再新建一个分支,因为分支合并请求提交之后需要时间,如果合并请求不通过还要在该分支上进行修改。
  • 如果有项目伙伴因需求更改了项目文件名称或是一些文件夹的名称,需要告知所有在工作中的伙伴停下手中的工作,等待文件名称修改后,push到仓库后,其他伙伴再拉新的代码,再进行工作。

? 这里推荐git的学习地址:Git教程 - 廖雪峰的官方网站

直接上手篇

最简单篇

  1. 让你的小伙伴在github上创建一个仓库,例如git-study
  2. 咱们点一个fork,就拷贝到自己的远程仓库了
  3. 咱们找到对应的分支(一般是dev),复制ssh密钥,在本地电脑上找个文件目录clone(前提是自己配置过ssh密钥了)
  4. 在本地添加小伙伴的仓库(既主仓库)git remote add upstream ssh的密钥
  5. 现在可以进行一下,简略的最后三步
  6. 当你在本地加了或者改了(例如加了个文档:王景玉大帅哥),先提交到自己的本地仓库,
    git push origin HEAD:分支 (注意:后不要有空格)
  7. 拉取主仓库最新的代码
    git pull upstream develop(这个分支是你同学(项目组长)让你去做的一个功能,给的分支,所以从一开始只需要这个分支的ssh密钥,现在也是拉这个分支的最新代码,其他的分支的东西不是咱管的事)
  8. 现在就算是完成了,在github上直接提交pr就行了,注意一下,下图
  9. image-20220315085336245

正常流程篇

  1. 让你的小伙伴在github上创建一个仓库,例如git-study

  2. 咱们点一个fork,就拷贝到自己的远程仓库了

  3. 咱们找到对应的分支(一般是dev),复制ssh密钥,在本地电脑上找个文件目录clone(前提是自己配置过ssh密钥了)

  4. 在本地添加小伙伴的仓库(既主仓库)git remote add upstream ssh的密钥

  5. 前四步和上边一样。平时工作要细心肯定不能向上边一样草率,但是思路都相同

  6. 检查有没有主仓库

    git remote -v
    出现以下,代表只有自己的远程仓库,没有组长的主仓库
    origin  ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch)
    origin  ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push)
    没有的话,就添加,你们都知道
    git remote add upstream ssh://主仓库地址
    出现下边,有upstream代表有了组长的主仓库
    origin  ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch)   #自己的
    origin  ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push)    #自己的
    upstream        ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch)    #项目组长的
    upstream        ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push)     #项目组长的
    
  7. 检查下分支状态

    git branch (这个检查的是本地的分支状态)
    git branch -a (检查的是远程和本地的)
    git status  (检查分支状态)
    上边三个可以都试试
    
  8. 检查工作做好了,准备工作,先pull最新代码,再新建个分支

    一大早先拉取最新代码,准备工作
    git pull upstream develop
    再新建个分支,安全
    git checkout -b check  (新建分支并且切换到这个分支)
    不想的话,再切换回来
    git checkout develop
    
  9. 代码写好了,工作准备结束,为了安全,先把代码放在暂存区

    放暂存区
    git stash save "save message"
    再拉组长的最新代码,因为这一天之内,这个分支也有别人再做
    git pull upstream develop
    将代码从暂存区拿出来
    git stash pop
    
  10. 经典三部曲,先提交到自己的远程仓库(github仓库)

    git add .
    git commit -m""
    git push origin HEAD:分支
    
  11. 最后了pr (pull requsts),这一步就是提交,给组长发过去
    image-20220315085336245

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:41:58  更:2022-03-16 22:43:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:31:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码