首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Git的使用

  • 25-04-24 11:01
  • 3311
  • 12179
blog.csdn.net

1.git介绍

1.1 产生历史

git是目前世界上最先进的分布式版本控制系统。

Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

1.2 git的两大特点

  1. 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。
  2. 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。首先找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用GitHub网站。

Git的优势

  • 大部分操作在本地完成,不需要联网
  • 完整性保证
  • 尽可能添加数据而不是删除或修改数据
  • 分支操作非常快捷流畅
  • 与Linux命令全面兼容

git的工作流程:

2.将项目拉取到github

  1. # 初始化一个新的 Git 仓库
  2. git init
  3. # 将远程仓库的地址添加为 'origin'
  4. # 'url' 是你的远程仓库地址,替换成实际的地址
  5. git remote add origin url(这是你仓库的地址网址)
  6. git remote set-url origin [email protected]:lemonjingl/Crawl_Learn.git # ssh连接
  7. # 将当前文件夹中的所有文件添加到暂存区
  8. git add .
  9. # 提交暂存区中的文件到本地仓库,提交信息为 'init'
  10. git commit -m 'init'
  11. # 将本地仓库的 master 分支推送到远程仓库的 master 分支
  12. git push origin master

2.Git命令行操作

2.1本地库初始化

  • 命令:
git add
  • 效果:

  • 注意:.git目录中存放的是本地库相关的子目录和文件,不要删除,也不要乱修改

2.2 设置签名

  • 形式:

                用户名:ningmeng

                Email地址:[email protected]

  • 作用:区分不同开发人员的身份
  • 辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。
  • 命令:
    • 项目级别/仓库级别:仅在当前本地库范围内有效
      • git config user.name ningmeng_pro
      • git config user.email [email protected]
      • 信息保存位置:./.git/config文件
    • 系统用户级别:登录当前操作系统的用户范围
      • git config --global user.name nengmeng_glb
      • git config --global [email protected]
      • 信息保存位置:~/.gitconfig文件
    • 级别优先级
      • 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
      • 如果只有系统用户级别的签名,就以系统用户级别的签名为准
      • 二者都没有不允许

2.3 基本操作

2.3.1 状态查看

查看工作区、暂存区状态

git status
2.3.2 添加

将工作区的“新建/修改”添加到暂存区

git add[file name]
2.3.3 提交

将暂存区的内容提交到本地库

git commit -m "commit message"[file name]
2.3.4 查看历史记录
git log

多屏显示控制方式:

        空格向下翻页

        b向上翻页

        q退出

 2.3.5 前进后退

1、基于索引值操作【推荐】

git reset --hard [局部索引值]

2、使用^符合:只能后退

git reset --hard HEAD^

注意:一个^表示后退一步,n个表示后退n步

3、使用~符合:只能后退

git reset --hard HEAD~n
2.3.6 reset命令的三个参数对比

--soft参数

  • 仅仅在本地库移动 HEAD 指针

--mixed参数

  • 在本地库移动 HEAD 指针
  • 重置暂存区

--hard参数

  • 在本地库移动 HEAD 指针
  • 重置暂存区
  • 重置工作区
2.3.7 删除文件并找回
  • 前提:删除前:文件存在时的状态提交到了本地库
  • 操作:git reset --hard[指针位置]
    • 删除操作已经提交到本地库:指针位置指向历史记录
    • 删除操作尚未提交到本地库:指针位置使用 HEAD
2.3.8 比较文件差异

1、git diff[文件名]

  • 将工作区中的文件和暂存区进行比较

2、git diff[本地库中历史版本][文件名]

  • 将工作区中的文件和本地库历史记录比较

3、不带文件名比较多个文件

2.3.9 删除文件

(1) 我们把目录中的code2.txt删除。

 这个时候,git知道删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻提示哪些文件被删除了。

(2)现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

另一种情况是删错了,可以直接使用git checkout – code2.txt,这样文件code2.txt又回来了。 

小结:

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

2.4 分支管理

2.4.1 什么是分支?

在版本控制过程中,使用多条先同时推进多个任务。

2.4.2 分支的好处?
  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
2.4.3 分支操作
  • 创建分支
    • git branch[分支名]
  • 查看分支
    • git branch -v
  • 切换分支
    • git checkout[分支名]
  • 合并分支
    • 第一步:切换到接受修改的分支(被合并,增加新内容)上git checkout[被合并分支名]
    • 第二部:执行merge命令 git merge[有新内容分支名]
  • 解决冲突
    • 第一步:编辑文件,删除特殊符号
    • 第二步:把文件修改到满意的程度,保存退出
    • 第三步:git add[文件名]
    • 第四步:git commit -m "日志信息"
      • 注意:此时commit一定不能带具体文件名

3.使用github

3.1 创建仓库

(1)注册github账户,登录后,点击"New respository "

(2)在新页面中,输入项目的名称,勾选'readme.md',点击'create repository'

(3)添加成功后,转到文件列表页面.

  

3.2 添加ssh账号

(1)点击账户头像后的下拉三角,选择'settings'

如果某台机器需要与github上的仓库交互,那么就要把这台机器的ssh公钥添加到这个github账户上

点击'SSH and GPG keys',添加ssh公钥。 

(2)在ubuntu的命令行中,回到用户的主目录下,编辑文件.gitconfig,修改某台机器的git配置。 

 

(3)修改为注册github时的邮箱,填写用户名。

(4)使用如下命令生成ssh密钥。 

ssh-keygen -t rsa -C "邮箱地址"

(5)进入主目录下的.ssh文件件,下面有两个文件。

公钥为id_rsa.pub

私钥为id_rsa

查看公钥内容,复制此内容

(6)回到浏览器中,填写标题,粘贴公钥

3.3 克隆项目

(1)在浏览器中点击进入github首页,再进入项目仓库的页面

(2)复制git地址 

(3) 克隆出错

(4)在命令行中复制仓库中的内容 

3.4 上传分支

(1)项目克隆到本地之后,执行如下命令创建分支smart.

(2)创建一个code.txt并提交一个版本。

 (3)推送前github上文件列表如下图

 

(4)推送前github上分支列表如下图

 (5)推送分支,就是把该分支上的所有本地提交推送到远程库,推送时要指定本地分支,这样,git就会把该分支推送到远程库对应的远程分支上

  1. git push origin 分支名称
  2. 例:
  3. git push origin smart

(6)再去github网站上去看分支页面,内容如下。 

3.5 将本地分支跟踪服务器分支

  1. git branch --set-upstream-to=origin/远程分支名称 本地分支名称
  2. 例:
  3. git branch --set-upstream-to=origin/smart smart

3.6 从远程分支上拉取代码

  1. git pull orgin 分支名称
  2. 例:
  3. git pull orgin smart

使用上述命令会把远程分支smart上的代码下载并合并到本地所在分支。

4.工作使用git

项目经理:

  1. 项目经理搭建项目的框架。
  2. 搭建完项目框架之后,项目经理把项目框架代码放到服务器。

普通员工:

  1. 在自己的电脑上,生成ssh公钥,然后把公钥给项目经理,项目经理把它添加的服务器上面。
  2. 项目经理会给每个组员的项目代码的地址,组员把代码下载到自己的电脑上。
  3. 创建本地的分支dev,在dev分支中进行每天的开发。
  4. 每一个员工开发完自己的代码之后,都需要将代码发布远程的dev分支上。

Master:用户保存发布的项目代码。V1.0,V2.0

Dev:保存开发过程中的代码。

注:本文转载自blog.csdn.net的ningmengjing_的文章"https://blog.csdn.net/ningmengjing_/article/details/146220551"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

118
开源
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top