开发者的GIT教程

GIT是最新一代的分布式版本控制系统。它解决了CVS,SVN和Mercurial版本控制系统中存在的问题。它特别适合于分布式开源的发展,在这个项目中也是如此。

介绍

强烈推荐使用图形界面。注意这里Github上的应用程序设计为易于使用,但只能工作Github上,并可能缺乏支持你看到的其他地方git的功能,这些是伟大的开始方式。

一个非常快的快速入门 (狗屎,一点不深入!) git - 简单指南
和一个很好的分支模型: 一个成功的GIT分支模型.

Windows客户端

Mac客户端

Linux客户端

  • 命令行,使用如 sudo apt-get install git命令安装
  • Linux: gitg

Github for Windows

程序启动后的资料库已签出,可以通过拖动文件夹到应用程序来添加到界面。选择C:\px4\Firmware 并且拖动文件夹到白色区域。

添加到应用程序文件夹后,主窗口将发生相应的变化:

冲突解决

在发生冲突的情况下,启动shell,然后按本指南继续:

  • FIXME

先进的

忽略和从索引删除文件而不删除它们

例如,如果意外地签了Eclipse .project文件,该文件可以从Git版本控制中被删除,而带有“–cached”选项不删除本地文件。

git rm --cached .cproject

本地消除不存在库中的分支

如果远程分支机构在远程存储库中删除,它们仍然存在于本地资源库中。 要修剪它们,对远程仓库运行这个命令 (如 origin).

git remote prune origin 

标签

GIT 木示签允许通过名称参考某些软件状态,而不是提交。这对于木示记已知良好或释出版本是特别有用的。Github允许、以ZIP文件的形式方便地下载该代石马状态。

git tag -a fixedwing_0.1 -m "创建预alpha版本的固定翼状态(自动试飞)"
git push origin --tags

检测和跟踪远程分支

要本地切换到不同的的分支,即跟踪(如掌握每个默认的)库分支,首先通过提取更新,然后需要输入如下检测命令:

git fetch
git checkout <branchname>

还原文件模式更改

有时文件可能会出现权限错误(例如,当使用USB闪存驱动器复制走Git仓库)。如果在Windows上使用Git,如下命令有助于GIT忽略权限更改:

git config core.filemode false

要恢复只是由于更改文件权限而产生的所有变化,在Linux或Mac OS中使用此命令:

git diff --summary | grep --color 'mode change 100755 => 100644' | cut -d' ' -f7- | xargs -d'\n' chmod +x
git diff --summary | grep --color 'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -d'\n' chmod -x

在MinGW / Windows:

git diff --summary | grep  'mode change 100755 => 100644' | cut -d' ' -f7- | xargs -e'\n' chmod +x
git diff --summary | grep  'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -e'\n' chmod -x

查看更改 (diff)

正常的 diff, 显示所有变更线(在颜色上,如果服从此网页上的配置说明)

git diff

如果变化真的很大(例如很多新的文件已检查且需要一些概述)

git diff --name-status

仓库中带有另一分支的Diff ,如 <master>

git fetch
git diff origin/master

Diff 只有一个文件夹:

git diff apps/examples

带有另一分支的Diff 只有一个文件夹 :

git fetch
git diff origin/master apps/examples

维护者

这些命令是非常先进的,大多是有关项目维护者的.

创建一个镜像/备份库

创建一个空/镜像库:

git clone --mirror git@github.com:px4/px4_nxbuilder.git

从现在起,所有分支(重要)更新镜像:

cd px4_nxbuilder.git
git fetch --all

GIT SVN导管

这个简短的教程涵盖了NuttX,RTOS PX4使用的GIT SVN管道。记录过程是一次性的努力,用户和普通开发人员应该使用PX4 NuttX GIT镜像.

git svn clone -s svn://svn.code.sf.net/p/nuttx/code nuttx-code

完成此初始复制,更新GIT至最新的NuttX是简单的:

git svn rebase

然后rebase后的状态可以被推进:

git push origin master

要做到这一点,上游资源库首先必须被定义:

git remote add origin git@github.com:PX4/nuttx-code.git
git push -u origin master

重新创建git-svn管道数据

如果GIT SVN导管应该在另一台机器上做 (确保只有一个人在同一时间做), 当地的Git资源库可以快速设置来实现。

首先复制GIT SVN库:

现在编辑该配置:

cd nuttx-code

编辑文件.git/config并增加:

[svn-remote "svn"]
            url = svn://svn.code.sf.net/p/nuttx/code
            fetch = trunk:refs/remotes/trunk

执行这个命令寻找顶部提交:

git show origin/master | head -n 1

该命令结果被打印成的git hash (aabbcc..) 必须放入文件.git/refs/remotes/trunk中:

echo aabbcc > .git/refs/remotes/trunk

现在本地资源库做SVN导管,可以用这个命令更新:

git svn fetch

Sending Patches

使用此命令可以生成补丁集(每个提交一个补丁):

git format-patch remotes/trunk
翻译跟原始页面比较起来显得有些陈旧,所以可能失效。 查看更新
本页面的其他翻译:


Quick Links

QR Code: URL of current page