本部分主要包含:向源码方提交,向自己GitHub创建的repository提交,向远程私有库提交等涉及git命令的内容。
Git常用代码参看链接。。
一、向源码方提交
1.注册git账号,成功后,请登录你的邮箱,进行激活。
2.fork你要贡献源码的与项目,完成后,进入已fork的项目。
3. 配置本地git环境(未配置点此)
4.clone你fork的项目
在任意目录下,使用命令fork自己的项目,即上文已经fork成功的项目地址为:https://github.com/GithubUserName/ProjectName (注意:GithubUserName这里应该改为你的用户名)
示例:
git clone https://github.com/GithubUserName/RookieTomatoFM
5. 添加远程仓库地址
当我们完成上述“4”的clone动作后,可以使用如下命令,来查看你fork的远程仓库的地址。
git remote -v
默认的clone操作完成后,远端仓库的地址别名为:origin,为了需要与原项目保持更新,你还需要将原项目地址给添加进来,使用如下命令可以添加远端仓库地址,其中upstream为新的远端仓库的别名。
git remote add upstream https://github.com/TargetNoBug/RookieTomatoFM
6. 保持与原项目同步 (可选)
当Fork的项目有更新时,你可以通过以下命令来保持与项目同步:
进入本地存放RookieTomatoFM项目的目录:依次执行下列命令:
- 从上游仓库fetch分支和提取点
git fetch upstream
- 切换到本地分支(建议你切换下)
git checkout master
- 把upstream/master分支合并到本地master上
git merge upstream/master
- 将upstream/master分支更新的内容更新到github中fork的项目上(从本地缓存库,提交至git远程库),就直接
git push origin master
7. 提交本地代码至github的fork上
进入本地RookieTomatoFM目录,执行以下命令:
git add .
git commit -m "有效注释"
git push
即可将本地的代码更新到github的fork上了
8. 将github的fork更新合并至主干
访问github登录,进入你fork的,如下图所示发起merge请求,等待源项目方审核通过并且合并进源项目。
示例项目.jpg
二、向自己GitHub创建的repository提交
1、cd到你的本地项目根目录下,再执行git命令
cd /Users/FilePath/Desktop/RookieTomatoFM
2、git本地仓库初始化
git init
3、将本地项目的所有文件添加到暂存区中
git add .
4、将暂存区的文件提交到git本地仓库,双引号里面写注释语句 ("XXXX"表示本次提交的说明/注释)
git commit -m "XXXX"
5、将git本地仓库和Github远程仓库关联,在github中打开要上传项目的远程仓库,得到网址https://github.com/TargetNoBug/RookieTomatoFM
git remote add origin https://github.com/TargetNoBug/RookieTomatoFM
6、从远程仓库pull,获取远程仓库的文件到本地仓库
git pull origin master
注意: 第6步可能会git pull 失败 ,提示:fatal: refusing to merge unrelated histories,这个问题是因为两个根本不相干的git 库,一个是本地库,一个是远端库,然后本地要去推送到远端,远端觉得这个本地库跟自己不相干,所以告知无法合并,此时使用:
`git pull origin master --allow-unrelated-histories`
后面加上--allow-unrelated-histories,把两段不相干的分支进行强行合并。
7、将代码由本地仓库上传到Github远程仓库(此处,可能我们会查看当前是否在master,使用命令:git check master)
git push -u origin master
-
附加:
1、注册trunk
pod trunk register 'Github账户对应邮箱' 'Github账户对应用户名' --verbose
2、查看注册信息
pod trunk me
3、验证.podspec文件
pod lib lint
(有WARN则需用pod lib lint --allow-warnings
)
4、验证通过无ERROR
pod trunk push RookieTomatoFM.podspec
(有WARN则需用pod trunk push RookieTomatoFM.podspec --allow-warnings
)
5、查看某个pods信息
pod trunk info RookieTomatoFM
6、删除pods的某个版本
pod trunk delete RookieTomatoFM 0.0.1
7、添加其他pods维护者
pod trunk add-owner 仓库名 邮箱
…………………………………………………………………………………………
1、pod查看版本号
pod --version
2、pod升级更新
sudo gem install cocoapods --pre
注意:当你升级遇到以下报错时,使用
sudo gem install cocoapods -n /usr/local/bin
报错:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
3、pod库更新
`pod repo update`
三、git小细节 (更多git细节点击)
Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0
、 v2.0
等等)。
1. 列出已有的标签
在 Git 中列出已有的标签非常简单,只需要输入 git tag
(可带上可选的 -l
选项 --list
):
$ git tag
v1.0
v2.0
git tag
命令以字母顺序列出标签,但它显示的顺序并不重要。
你也可以按照特定的模式查找标签。 例如,Git 自身的源代码仓库包含标签的数量超过 500 个。 如果只对 1.8.5 系列感兴趣,可以运行:
$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5
tips:
- 按照通配符列出标签需要 -l 或 --list 选项
如果你只想要完整的标签列表,那么运行 git tag 就会默认假定你想要一个列表,它会直接给你列出来, 此时的 -l 或 --list 是可选的。 - 然而,如果你提供了一个匹配标签名的通配模式,那么 -l 或 --list 就是强制使用的。
2. 如何创建和删除新的标签
-
Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。
-
轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。
-
附注标签是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。
附注标签:
最简单的方式是当你在运行 tag 命令时指定 -a 选项:
$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4
-m 选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,Git 会启动编辑器要求你输入信息。
通过使用 git show 命令可以看到标签信息和与之对应的提交信息:
$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date: Sat May 3 20:19:12 2014 -0700
my version 1.4
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
输出显示了打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息。
轻量标签
另一种给提交打标签的方式是使用轻量标签。 轻量标签本质上是将提交校验和存储到一个文件中——没有保存任何其他信息。 创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名字:
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5
3. 不同类型的标签分别是什么
参考链接
https://www.jianshu.com/p/bed0df7fbfc4
https://www.jianshu.com/p/52d7c6cb7b35
网友评论