Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
214 views
in Technique[技术] by (71.8m points)

git - GitHub: Why should I fork?

I understand that forking is cloning the repository on the server side. But I don't understand why I would do that.

Why not clone the original repository to my machine, add my code, than push the new branch to GitHub and make a pull request?

question from:https://stackoverflow.com/questions/31209669/github-why-should-i-fork

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I understand that forking is cloning the repository on the server side [...]

That's about right. On GitHub, a fork is a copy of some other GitHub repo, with a reference to the repo it was copied from.

enter image description here

Remark: the concept of a fork originated with GitHub; it is not a Git concept.

[...] but I don't understand why I would do that. Why not clone the original repository to my machine, add my code, then push the new branch to GitHub and make a pull request?

Unless you have write access to the repository in question, you cannot simply push anything to it; your push will be denied by the server with an error message of the form

remote: Permission to bos/text.git denied to Jubobs.
fatal: unable to access 'https://github.com/bos/text/': The requested URL returned error: 403

That's where a fork comes into play. By forking someone else's repo, you get a copy to which you have write access, i.e. to which you can push your contributions. The entire workflow goes something like this:

  1. Identify an area in Alice's repo that can be improved.
  2. Fork that repo.
  3. Make a clone of your fork on your local machine.
  4. In that clone, make changes, run tests, create commits (possibly on a new branch), etc.
  5. Optionally, once you're happy with your amendments to Alice's code, make your work more presentable: tidy/squash your commits, write good commit messages that respect the style of Alice's repo. You may also want to rebase your branch to that of Alice's branch, if Alice has pushed changes to her repo since you forked her repo.
  6. Push to your fork.
  7. Issue a pull request to Alice, and wait for her to review it.
  8. Push more commits to—and possibly rebase—your branch until Alice is satisfied with your work.
  9. Alice merges your pull request; your work gets integrated into her GitHub repo. Champagne! Your work was not in vain.
  10. To save space on GitHub's servers, and if you don't intend to contribute to Alice's repo any time soon, you can safely delete your fork.

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...