GitHub,OSChina,码市的详细使用(上)

简介: GitHub,OSChina,码市的详细使用

一、Git的简介



  • 1.1.什么是git?
  • git是一款开源的分布式版本控制工具,在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
  • 1.2.git的起源
  • 作者是Linux之父:Linus Benedict Torvalds(林纳斯·本纳第克特·托瓦兹)(国内一般叫:李纳斯),当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)
  • 1.3.git的现状
  • 在国外已经非常普及,国内并未普及(在慢慢普及),越来越多的开源项目已经转移到git
  • 1.4.其他版本控制工具
  • 1.4.1. CVS
  • 最早的开源、免费的集中式版本控制工具,自身设计有问题,会造成提交文件不完整,版本库莫名其妙损坏的情况
  • 1.4.2. SVN
  • 修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制工具
  • 1.4.3. ClearCase
  • 收费的集中式版本控制工具,安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗或者人傻钱多
  • 1.4.4.VSS
  • 微软的集中式版本控制工具,集成在Visual Studio中
  • 1.4.5.OSChina(国内的)
  • 可以创建私有的仓库,速度在国内比GitHub快很多
  • 1.4.6.码市(国内的)


二、Git 与 Svn的对比



  • 2.1.SVN集中式版本控制(没有中间环节)


image.png

2.2.Git分布式版本控制


image.png



  • 2.3.git和SVN的简单对比
  • 2.3.1.速度
  • 在很多情况下,git的速度远远比SVN快
  • 2.3.2.结构
  • SVN是集中式管理,git是分布式管理
  • 2.3.3.其他
  • SVN使用分支比较笨拙,git可以轻松拥有无限个分支
  • SVN必须联网才能正常工作,git支持本地版本控制工作
  • 旧版本的SVN会在每一个目录置放一个.svn,git只会在根目录拥有一个.git
  • 2.4.SVN的工作流程(有中间环节)
  • 2.4.1.首先要 Check Out 一份代码,之后上传代码Commit,更新本地代码是Update


image.png



2.5.git的工作流程


image.png


  • 2.5.1.Git在使用时先Clone,之后Commit上传代码到本地仓库,更新代码用PULL,上传到服务器用PUSH
  • 2.5.2.分布式和集中式的最大区别在于:在分布式下开发者可以本地提交
  • 2.5.3.每个开发者机器上都有一个服务器的数据库
  • 2.6.git的使用
  • 跟SVN一样,你可以通过命令行敲指令或者图形界面客户端使用git
  • 在Mac上,比较好用的git图形界面客户端有
  • SourceTree
  • GitHub,它是专门为GitHub网站而设计的
  • Xcode:这点做得比较好


三、Git常用指令



  • 3.1.唠叨几句,Command+Shift+.出来的文件,千万别删掉(里面都是电脑的配置),切记
    Command+Shift+. 可以显示隐藏文件、文件夹,再按一次,恢复隐藏;
    finder下使用Command+Shift+G 可以前往任何文件夹,包括隐藏文件夹。
  • 3.2.初始化一个代码仓库(.git里面的东西千万别轻易删除)


git init
  • 会生成一个.git的文件夹,里面有一个config :git的配置信息相关(修改的是.git/config文件)
  • 3.3.如果使用GIT,必须给GIT配置用户名和邮箱
  • 3.3.1.给当前的git仓库配置用户名和邮箱


git config user.name “用户名”
git config email “邮箱地址”
  • 3.3.2.给git配置全局的用户名和邮箱


git config --global user.name “用户名”(用于跟踪修改记录)
git config --global email “邮箱地址”(用于多人开发间的沟通)
  • 3.4.初始化项目
  • 3.4.1.创建了 main.m 文件


touch main.m


image.png


3.4.2. 查看main.m的状态

git status


image.png


  • 红色表示该文件被添加或者被修改,但是没有添加到git的暂缓区
  • 3.4.3.将main.m添加到暂缓区


git add main.m
 git add . : . 相当于*,将工作目录下所有没有被添加到暂缓区的文件添加到暂缓区

image.png


  • 绿色:该文件在暂缓区,但是没有提交到本地版仓库
  • 3.4.4.将暂缓区的代码提交到本地git仓库(本地版本库)清空暂缓区


git commit -m  "这里面放提交内容的说明"


image.png

  • 1 file changed, 6 insertions(+): 这句话的意思是是说有1个文件被改变,6行代码插入
    注意:添加的文件或者是被修改的文件都要通过add命令将该文件添加到暂缓区
  • 3.4.5.再次查看文件的状态(没有任何内容)


git status


image.png


  • 3.5.给命令行起别名


git config alias.st  "status"    这句命令的意思是:用 `st`来代替 `status` ,查看代代码区文件的状态
git config alias.ct  "commit -m" 这句命令的意思是:用 `ct`来代替 `commit -m` ,把暂缓区的代码提交到本地仓库
git config --global alias.st  "status"  设置全局的查看状态(查看的方法可到桌面上面 前往->个人->.gitconfig查看:如果找不到就输入`Command+Shift+.`)
  • 3.6.删除文件


git rm person.m    删除person.m 文件
  • 3.7.查看版本信息


git log   版本号是由sha1算法生成的40位哈希值,仅能查看当前版本以及以上的版本


image.png

git reflog 可以查看所有版本回退的操作,可以查看所有的修改记录(版本绘图)


image.png

给查看版本起全局别名

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(y


image.png


查看起的别名(前往->个人->.gitconfig)

image.png

使用别名查看log信息


image.png

3.8.版本回退


  • 3.8.1.打开person.h,添加代码
    open person.h


image.png


3.8.2.在没有提交的情况下进行版本回退


git reset --hard HEAD^


image.png


3.8.4.回退到上上个版本

git reset --hard HEAD^^


image.png

3.8.5.回退到指定回退到某个版本

git reset --hard 版本号(至少前5位)


image.png


3.8.6.回退到前几个版本

git reset --hard~1


image.png


3.8.7.使用reflog查看日志

git reflog


image.png

  • 3.8.8.总结
  • 1.起别名:当前版本库别名,与全局别名(只需要起一次,下次创建仓库后就不用起别名了)
  • 2.删除文件:git rm 文件名,删除后保存在暂缓区,需要提交到代码仓库
  • 3.查看版本号
  • git log:查看当期与当前以上的操作
  • git reflog:查看版本包含回退的操作
  • 4.版本回退:回退到之前提交过的版本
  • 3.9.回滚的说明
  • 在做回滚时,要和对方说好,团队之间要配合好
git reset --hard HEAD^ 回到上一个版本
 git reset -f 强制上传到共享版本库


四、Git的工作原理



  • 4.0.总步骤
  • 通过git add 命令将工作区的内容提交到版本库的缓存区
  • 通过git commit 命令将缓存区的所有内容提交到当前分支
  • 4.1.工作区(Working Directory):仓库文件夹里除.git目录以外的内容
  • 4.2.版本库(Repository):.git目录,用于存储记录版本信息
  • 暂缓区(stage)
  • 分支(master):git自动创建的第一个分支
  • HEAD指针:用于指向当前分支
  • 4.3.git add和git commit的原理
  • git add .:把文件修改或者新添加的文件添加到暂存区
  • git commit :把暂存区的所有内容提交到当前分支
  • 4.4.暂缓区(stage)有内容


image.png


4.5.工作区提交到暂缓区


image.png

4.5.暂缓区(stage)有内容提交给本地仓库,暂缓区就会被清空


image.png


4.6.总结


  • 1.svn开发工作在主干进行,git开发工作在分支中进行
  • 2.通过add命令可以将工作目录没有被添加到暂缓区的文件添加到暂缓区
  • 3.通过commit命令将暂缓区的所有内容上传到当前分支,提交成功后清空暂缓区内容
目录
相关文章
|
网络安全 数据安全/隐私保护 iOS开发
GitHub,OSChina,码市的详细使用(下)
GitHub,OSChina,码市的详细使用(下)
259 0
GitHub,OSChina,码市的详细使用(下)
|
缓存 Linux 开发工具
GitHub,OSChina,码市的详细使用(中)
GitHub,OSChina,码市的详细使用
212 0
GitHub,OSChina,码市的详细使用(中)
|
开发工具 git 网络安全
git代码仓库迁移(从github到oschina)【转】
转自:http://blog.csdn.net/a5244491/article/details/44807937 版权声明:本文为博主原创文章,未经博主允许不得转载。 因为一些特殊原因,需要将公司原来的代码仓库从github移植到oschina上去,项目手工操作很麻烦。
1820 0
|
13天前
|
Rust 前端开发 JavaScript
Github 2024-05-20 开源项目周报 Top15
根据Github Trendings的统计,2024年5月20日当周共有15个项目上榜。按开发语言分类,项目数量如下:Python项目5个,TypeScript项目3个,C++项目2个,Jupyter Notebook项目2个,C、Go、Rust和C#项目各1个。介绍了多个值得关注的项目,包括ChatGPT桌面应用程序、Fooocus图像生成软件、Jellyfin媒体系统等。这些项目涵盖了多种功能和技术领域,值得关注和研究。
30 3
|
13天前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
21 2
|
13天前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
48 1
|
13天前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
51 1