目录
开发者的GIT教程
GIT是最新一代的分布式版本控制系统。它解决了CVS,SVN和Mercurial版本控制系统中存在的问题。它特别适合于分布式开源的发展,在这个项目中也是如此。
介绍
强烈推荐使用图形界面。注意这里Github上的应用程序设计为易于使用,但只能工作Github上,并可能缺乏支持你看到的其他地方git的功能,这些是伟大的开始方式。
Windows客户端
Mac客户端
- 命令行,使用Homebrew安装
Linux客户端
- 命令行,使用如
sudo apt-get install git
命令安装 - Linux: gitg
Github for Windows
冲突解决
先进的
忽略和从索引删除文件而不删除它们
例如,如果意外地签了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