• 代码管理工具:使用github和git工具管理自己的代码


    一、git工具和账户创建

    1.1 安装

    Git 是 Linus Torvalds 最近实现的源代码管理软件。"Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。"

    Git 目前主要由寻找 CVS 或专有代码管理解决方案替代物的软件开发人员所使用。Git 与 CVS 有很多区别:

    • 分支更快、更容易。
    • 支持离线工作;本地提交可以稍后提交到服务器上。
    • Git 提交都是原子的,且是整个项目范围的,而不像 CVS 中一样是对每个文件的。
    • Git 中的每个工作树都包含一个具有完整项目历史的仓库。
    • 没有哪一个 Git 仓库会天生比其他仓库更重要。

    安装当前版本的 Git,我们可以使用供应商在 Linux 发行版中提供的包,或者从最新的稳定快照开始手工进行编译。

    Git工具所需要的环境如下:

    • zlib
    • libcurl
    • libcrypto(OpenSSL)
    • rsync

    在ubuntu的命令行下输入命令:sudo apt-get install git 即可完成自动安装。

    若是手动安装需要下载源码包,然后对源码包进行编译,假设已经下载了源码包,然后执行下面的操作:

    • tar -jxvf git-xxx-tar.bz2    或    tar -zxvf git-xxx-tar.gz
    • 切换到源码目录中执行make命令:
      • make prefix=/usr/local install
      • sudo make prefix=/usr/local install

    1.2 使用

    1.2.1 用户名和邮箱

    用户名和邮箱地址相当于自己的身份标识,是本地Git客户端的一个变量,不会随着Git库而改变。

    每次commit都会用用户名和邮箱纪录。

    githubcontributions跟自己的邮箱是有关联的。

    1.2.2 查看自己得用户名和邮箱

    git config user.name

    git config user.email

    1.2.3 修改自己得用户名和邮箱

    git config --global user.name "xxx"

    git config --global user.email "xxx"

    1.2.4 查看系统config

    git config --system –list

    1.2.5查看当前用户(global)配置

    git config --global  --list

    1.2.6 查看当前仓库配置信息

    git config --local  --list

    1.2.7 列出所有tag

    git tag

    1.2.8 查看某些tag

    git tag -l v1.*

    1.2.8 创建tag

    创建轻量级tag:

    git tag v1.0

    这样创建的tag没有附带其他信息,与之相应的是带信息的tag:

    git tag -a v1.0-m 'first version'

    -m后面带的就是注释信息,这样在日后查看的时候会很有用,这种是普通tag,还有一种有签名(需要有GPG私钥)的tag:

    git tag -s v1.0-m 'first version'

    除了可以为当前的进度添加tag,还可以为以前的commit添加tag:

    • 首先查看以前的commit:git log –oneline
    • 假如有这样一个commit:123456 updated readme,这样为他添加tag:git tag -a v1.1123456

    1.2.9 删除tag

    git tag -d v1.0

    1.2.10 验证tag

    如果有GPG私钥的话就可以验证tag:

    git tag -v v1.0

    1.2.11 共享tag

    在执行git push的时候,tag是不会上传到服务器的,比如现在的github,创建tag后git push,在github网页上是看不到tag的,为了共享这些tag,必须执行下面得命令:

    git push origin --tags

    二、使用git 下载 uboot源码

    2.1 下载

    下面的命令将创建一个名为 u-boot 的 Git 仓库。这个目录包含了一个隐藏目录 .git/ 。

    执行命令:git clone git://git.denx.de/u-boot.git u-boot

    等待下载完毕。

    2.2 查看仓库信息及release版本

    切换到包含新下载的u-boot的目录中:cd u-boot

    2.2.1 查看仓库信息

    执行命令:git status

    2.2.2 查看release版本

    查看release版本即是查看打了标签的版本。

    执行命令:git tag

    2.2.3 切换到特定版本

    执行命令:git

    2.2.4 查看当前版本与其他版本的不同

    执行命令:git diff 当前版本

    2.3 从仓库中导出文件

    我们需要将文件从 Git 仓库(隐藏目录中的那些文件)中导出到工作目录中才能开始自己的 hack 过程。下面的命令会在当前目录中写入没有隐藏的目录,其中包含了 u-boot 的源代码:

    执行命令:git checkout -b v2018.07

    如果希望覆盖本地修改,可以使用 -f 选项导出文件,这样就可以回到一个干净的状态:

    执行命令:git checkout -f

    切换完之后查看一下分支:git branch

    现在在当前工作目录中,我们应该就可以看到熟悉的 u-boot 源代码目录结构了,然后我们可以对这些源代码任意进行修改。

    2.4 更新本地git仓

    切换到特定仓库时候,如v2018.07后,需要手动从服务器拉取分支代码:

    git pull origin 分支名称

    三、github代码托管

    3.1 github上进行版本创建

    首先得注册并登陆githubgithub官方地址:https://github.com

    然后点击左下角的 New repository 按钮来创建一个版本库:

    然后将版本库命名为 u-boot,然后选择添加一个 C 项目类型的.gitignore 文件,并使用 GPL2 来作为u-boot的开源协议

    接着点击 Create repository 按钮,coolweather 这个版本库就创建完成了

    四、进行本地版本管理

    进入下载好得u-boot代码文件夹中。

    删除当前目录下的 .git 和 .gitignore

    将自己得远程代码库clone下来:

    git clone https://github.com/xxxxxxxxx/u-boot.git

    在这个里面会生成一个新的u-boot文件夹,将其中的.git 和 .gitignore文件拷贝到u-boot源码根目录。然后删掉源码根目录下的u-boot文件夹。

    提交代码到远程库:git add .

    查看代码是否已经加载:git status

    提交代码:git commit -m "v2018.07"

    代码压入仓中:git push origin master

    也可可以执行强制上传:git push -u origin master -f,但是可能会丢失掉分支和修改的代码
    

    最后一步需要输入github的用户名和密码。

    注意:关于 git push 过程中卡住的问题,可以尝试以下方法:

    • 添加 sendpack.sideband 属性并置为 false
      • 全局的:git config --global sendpack.sideband false
      • 仓库的:git config --local sendpack.sideband false
    • 通过git config --local -l 查看仓库级配置,可以看到有 sendpack.sideband 这一项并且是置为false的:

    • 设置成功后再次push

    上传成功后:

    Github 官网:

  • 相关阅读:
    leetcode 203. Remove Linked List Elements 删除链表中的某个值 ---------- java
    leetcode 202. Happy Number 判断一个数是否是“Happy Number” ---------- java
    leetcode 201. Bitwise AND of Numbers Range 求范围中,每一位都是1的数 ---------- java
    js获取Html元素的实际宽度高度
    jquery中this与$this的区别
    find()与children()方法的区别
    jquery创建动态的div
    兼容性问题
    bootstrap插件小记
    禁掉a链接的几种方法
  • 原文地址:https://www.cnblogs.com/kele-dad/p/9344773.html
Copyright © 2020-2023  润新知