Github入门3之fork一个库

来源:互联网 发布:超级数据恢复软件 编辑:程序博客网 时间:2024/05/21 16:37
fork一个库

贡献一个项目

出于某些观点,你可能发现你自己想去对他人的项目作出贡献,或者希望使用他人的项目作为你自己项目的起点。这种行为,被认为是“forking”。在这个教程中,我们将会使用“Spoon-Knife”项目。

步骤1:Fork Spoon-Knife 库

要fork这个项目,请点击Fork键

步骤2:克隆你的fork

你已经成功地fork了spoon-knife库了,不过,一直以来,它只存在于Github,要想在这个项目上工作,你将需要克隆它到你的本地上

运行以下代码
$git clone https://github.com/username/Spoon-Knife.git
#在终端中,创建你fork的库到当前目录

步骤3:配置远程库

当一个库被克隆了,它有一个在Github上的默认远程库叫origin指向你的fork,而不是被fork的原始库。想保持原始库的跟踪,你需要去增加另一个远程库叫upstream

$cd Spoon-Knife
#在提示符中改变这个活动目录到新的克隆“Spoon-Knife”路径

$git remote add upstream https://github.com/octocat/Spoon-Knife.git
#分配这个原始的库到一个叫“upstream”的远程库

$git fetch upstream
#拉取之前的修改到你本地库,但不会更改你的文件

你可以做的更多的事情

你已经成功地fork一个库,不过看完这些,你还有其它酷的事情可以做

推送提交

一旦你已经做过一些提交到一个fork库中,并且想推送它到你的fork的项目中,你用相同的方法定期库

$git push origin master
#推送提交到你存储在Github上的远程库

拉取upstream修改

如果你fork的项目的原始库发生了更新,你通过运行以下代码可以添加那些更新到你的fork

$git fetch upstream
#从原始库取一些新的修改

$git merge upstream/master
#合并那些取到你的工作文件的修改

有两种方式去从远程库或者分支上获取提交:git fetch 和 git pull 。首先,它们看起来很相似,但是,其中有明确的区别,你应该知道的。

pull
$git pull upstream
#从upstream上取提交并且存储它们到本地库

当你使用git pull,git尝试去自动为你去做你的工作。它是上下文敏感的,所以git将会合并一些拉取到的提交到你的当前正在工作的分支。记住一点,git pull自动合并这些提交的时候不会让你先审查它们。如果你不密切管理你的分支,你可能运行时频繁出现冲突

Fetch&Merge
$git fetch upstream
#从原始库上取一些新的提交

$git merge upstream/master
#合并一些取过来的提交到你的工作文件中

当你git fetch,git从目标远程库中检索那些在你本地库没有存储的提交。无论如何,它不会合并他们到你的当前分支上。这是尤其有用的,如果你需要去保持你的库是最新的但你更新了你的文件后可能会导致某些问题。整合提交到你的本地分支,你使用git merge。这个结合指定的分支并在出现冲突的时候提示你。

新建分支

分支允许你去建立新的特性或者测试想法而不需要给你的主项目增加风险。在git中,分支是一个书签的排序可引用在分支中建立的最后一个提交。这使得分支非常小并且容易使用

我如何使用分支
分支是十分容易去使用而且会节省你的头痛问题,尤其当你多人协作的时候。创建一个分支并且在它上面工作,要执行以下命令

$git branch mybranch
#创建一个新的名叫“mybranch”的分支

$git checkout mybranch
#使得“mybranch”为活动分支

另外,你可以使用捷径
$git checkout -b mybranch
#创建一个新的名叫“mybranch”的分支,并使得它成为活动分支

在分支间切换,使用git checkout

$git checkout master
#使得“master”作为活动分支

$git checkout mybranch
#使得“mybranch”作为活动分支

一旦,你完成在分支上的工作,并且准备去结合它回到master分支时,使用merge

$git checkout master
#使得“master”作为活动分支

$git merge mybranch
#合并提交从“mybranch”到“master”

$git branch -d mybranch
#删除“mybranch”分支

Tip: When you switch between branches, the files that you work on (the "working copy") are updated to reflect the changes in the new branch. If you have changes you have not committed, git will ensure you do not lose them. Git is also very careful during merges and pulls to ensure you don't lose any changes. When in doubt, commit early and commit often.

拉取请求
如果你希望回馈原始fork,你可以发送给原始作者一个 pull request。

无视主库
当你fork一个尤其流行的库,你可能发现你自己有非常多你不想要的关于它的更新信息。要退订这些主库的更新信息,在主库中点击这个“Unwatch”按钮,并选择“Not Watching”

删除你的fork
基于某些观点,你决定想要删除你的fork。要删除一个fork,只要跟着与你删除一个常规库相同的步骤去做即可。




原创粉丝点击