getting-started-with-javascript icon indicating copy to clipboard operation
getting-started-with-javascript copied to clipboard

如何从主项目更新我fork过来的项目

Open xugy0926 opened this issue 6 years ago • 9 comments

需要从主项目更新自己fork的项目。请参考文档。

https://github.com/xugy0926/getting-started-with-javascript/blob/master/topics/%E5%A6%82%E4%BD%95%E4%BB%8E%E4%B8%BB%E9%A1%B9%E7%9B%AE%E6%9B%B4%E6%96%B0fork%E7%9A%84%E9%A1%B9%E7%9B%AE.md

xugy0926 avatar Aug 12 '17 14:08 xugy0926

git remote add upstream xxxx

这里面的 xxxx,一直不懂,刚Google一篇文章说是 上游仓库名称.git
于是我试了 https://github.com/xugy0926/getting-started-with-javascript.git 可还是不对

zzzyyyyjjj avatar Aug 12 '17 14:08 zzzyyyyjjj

学习了

fanliao1989 avatar Aug 12 '17 14:08 fanliao1989

问题刚解决,谢谢

zzzyyyyjjj avatar Aug 12 '17 15:08 zzzyyyyjjj

感谢同学热心的贡献,我个人觉得,文档里应明确每个操作步骤的进入路径,这样更能利用我这种小白操作,反复试了好几次,才成功。

menhan avatar Aug 13 '17 03:08 menhan

@zzzyyyyjjj 能把你之前解决不了的原因在这里说明一下吗

xugy0926 avatar Aug 13 '17 03:08 xugy0926

老师,上次不知道怎么搞,成功了。但是今天又是这个问题。我用的是windows 按照流程操作后,提示的是以下代码 $ git remote add upstream https://github.com/xugy0926/getting-started-with-javascript.git fatal: Not a git repository (or any of the parent directories): .git 解释是出现这个问题后,发现其实是在本系统下没有找到一个.git这样的目录

(后来花了一点时间,google 了一下 发现输入git init 运行就可以解决问题)

zzzyyyyjjj avatar Aug 16 '17 09:08 zzzyyyyjjj

你没有进入本地的getting-started-with-javascript操作。.git这个的目录只存在你项目(getting-started-with-javascript)里。

xugy0926 avatar Aug 16 '17 10:08 xugy0926

我提交过两次pr,更新主项目两次。参考了两位同学的文章,张丽娜https://github.com/xugy0926/getting-started-with-javascript/blob/master/topics/%E5%A6%82%E4%BD%95%E4%BB%8E%E4%B8%BB%E9%A1%B9%E7%9B%AE%E6%9B%B4%E6%96%B0fork%E7%9A%84%E9%A1%B9%E7%9B%AE.md 和何伟的文章https://github.com/xugy0926/getting-started-with-javascript/blob/master/topics/Git%E5%AE%9E%E6%88%98%E7%AC%94%E8%AE%B0.md 张丽娜同学的文章中 第一步的意思是进入到你自己的本地目录下,这个本地目录是你通过fork主项目到你的主页(xxx/getting-started-with-javascript)上,然后clone得来的。因为没有更新的缘故,所以提交会出现冲突。 如果你已经操作了fork和clone就直接进入本地项目仓库。 (有冲突的情况是基于旧版的文件a进行修改但没提交,而另一个用户修改了a,已经提交。这个时候提交服务器,而服务器上是新版的a,故冲突。) 第二步是关键 git remote add upstream https://github.com/xugy0926/getting-started-with-javascript.git(xxxx,这里的xxxx就是主项目,你fork的那个项目地址,也是clone一下,点击复制按钮的简单操作即可)git远程添加上游项目(就是主项目) 第三步git checkout master确认主项目 第四步git fetch upstream从上游抓取 第五步git merge upstream/master进行主节点和上游节点合并 第六步git push origin master这里push到了你fork的项目上,这个项目同主项目一样再服务器上。这一步可以反复操作,因为你可能要修改添加的你那份文件,用git add -A,git status,git commit -m"提示语",git push origin master 第七步就是向主项目发起pull request 在张丽娜的文章中第二步有提示说,如果再次更新主项目则省略这一步,我按照操作了一遍发现不行,因此参照何伟的文章中‘和老师的仓库保持同步’这部分: 首先,添加徐老师的仓库,并命名为upstream,方便以后再次调用。

git remote add upstream https://github.com/xugy0926/getting-started-with-javascript.git 然后将老师的仓库中的内容下载至本地。注意,下载至本地的内容,和自己的仓库是互不干扰的。 git fetch upstream master 这时,徐老师仓库的最新内容已经下载至本地了。

我们先不急着合并进来,先看看自己的仓库和老师的仓库有哪些不同。

git diff upstream/master 下图是执行后的结果 注意,执行git diff后,终端会进入vim环境,注意看图中最后一行行首的冒号。按一下q键,退出vim环境即可。

对比完徐老师和自己仓库的不同之后,就要把这些内容(upstream/master,代表upstream这个源的master分支)合并到自己的仓库中了。

git merge upstream/master 然后就可以提交自己的更改,或者进行其它操作了。

个人认为何伟同学的叙述较为清楚,操作性强。

french5 avatar Aug 16 '17 10:08 french5

又看了一遍概念又清晰了很多。这里想到个问题: git add .git add -A的区别是什么? 于是Google到了答案:

git add -A stages All git add . stages new and modified, without deleted git add -u stages modified and deleted, without new

然后我以后我都要用git add -A了。 https://stackoverflow.com/questions/572549/difference-between-git-add-a-and-git-add

yanqingmu avatar Aug 22 '17 10:08 yanqingmu