This is for group developing test
Pull request Compare This branch is 8 commits behind LeafGrass:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Git Official - <>
Github - <>
Actually, you can get all the help you need from <>
Text below is just a rough conclusion, which may even be incorrect.

Step 0 Install and Setup Git

In Fedora
	sudo yum install git gitk
Or in Ubuntu
	sudo apt-get install git gitk
	git config --global YOUR_NAME
	git config --global 'YOUR_EMAIL'

A new user named rescue, do it like
	git config --global rescue
	git config --global ''
Then you can see your info by typing in
	git config --global --list
As like:
[rescue@leafgrass workspace]$ git config --global rescue
[rescue@leafgrass workspace]$ git config --global ''
[rescue@leafgrass workspace]$ git config --global --list
[rescue@leafgrass workspace]$ 

Step 1 Signup at Github
Nothing much to say :)

Step 2 Fork A Project Repo and Work on It
Go to LeafGrass github page, choose repo "grouoptest", then click on "Fork"
button on up right of the page. Wait a minute, this repo will be forked.

OK, for now, you've forked a project from organization LeafGrass.
Click "Dashboard" to go to your own github page and choose the repo you've
just forked.
See? There is a line represent for address of this repo, like:
Ok, in your local command line, run
	git clone

Then, I guess you'll meet a problem below, like:
[rescue@leafgrass workspace]$ git clone
Cloning into grouptest...
The authenticity of host ' (' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ',' (RSA) to the list of
known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

This is because you don't have SSH keys. Everyone need a private key and a
public key for himself, and may get many other's public keys, so people can work
and communicate together.
Follow these steps in link below, you can resolve it.

[rescue@leafgrass workspace]$ cd ~/.ssh/
[rescue@leafgrass .ssh]$ ls
[rescue@leafgrass .ssh]$ ssh-keygen -t rsa -C
Generating public/private rsa key pair.
Enter file in which to save the key (/home/rescue/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/rescue/.ssh/id_rsa.
Your public key has been saved in /home/rescue/.ssh/
The key fingerprint is:
The key's randomart image is:
+--[ RSA 2048]----+
|              ...|
|       . o   o...|
|        B = ..o  |
|       . O = o.  |
|        S = o  o |
|       .   .  . =|
|               oo|
|               . |
|             .E  |
[rescue@leafgrass .ssh]$ cat 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOXdY5RscN1gumTa0ZqNfTJ631WsK6Nwlaj9Bofk38kqLa6hI5RQ5SrmGG1EIH22is1wa1xCpSg2I6villDCUwfZcDc5ecyThLmaq44jip7Vle85LU3oSpJ/3Ak2ve/hP/ZrF4lZsd9fdvWwsj8jce2ZAspgrQELvAzfc7MqUWcBKyRuSQgwaWJLd1SozIn7Bm7BoHkTsaVo7qoKxrV+BSHY7/N/pPYXBkfZjXett0p2rBst7gBIKOB/vKesI9tK/lG8iAKnGTOAWJuCyxYwAWKjeJ2W1enGzf6m1tmzj3jJfvl2hLAlcyqYS1e6MUGyD0Hbn3aH0t9mcRwRThc6wx
[rescue@leafgrass .ssh]$

On the GitHub site Click “Account Settings” > Click “SSH Public Keys” > Click
“Add another public key”.
Copy the WHOLE output string like above to the "Key" field.
("Title" is not neccessary.)
Then click on "Add key", everything is ok. The "clone" action can be done now.

[rescue@leafgrass workspace]$ git clone
Cloning into grouptest...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 1), reused 6 (delta 1)
Receiving objects: 100% (6/6), 25.11 KiB, done.
Resolving deltas: 100% (1/1), done.
[rescue@leafgrass workspace]$ ls

OK? Go forward next step.

Step 3 Basic Working on Local
	cd grouptest
	git pull
	[do some changes]
	git add .
	git status
	git commit -a
	[type in your commit comment]
	git push

[rescue@leafgrass grouptest]$ git pull
Already up-to-date.
[rescue@leafgrass grouptest]$ ls
[rescue@leafgrass grouptest]$ echo testing >
[rescue@leafgrass grouptest]$ ls
[rescue@leafgrass grouptest]$ git add .
[rescue@leafgrass grouptest]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#	new file:
[rescue@leafgrass grouptest]$ git commit -a
[master 0cc4938] test
 1 files changed, 12 insertions(+), 0 deletions(-)
 create mode 100644
[rescue@leafgrass grouptest]$ git push
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 300 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
   d0bc323..0cc4938  master -> master
[rescue@leafgrass grouptest]$

Well, now turn to you github page and you'll see all your changes.

Actually, that's all for regular code updating, modifying and uploading.
Please see git documents for detailed information of these commands and other
advanced usage.

Step 4 Pull Request
Two terms here: push and pull.
push: After you commit your changes in you local repo, "push" will upload your
changes to the server(that is, our repository) and do an auto-merge.
pull: Download the latest files from server to your local repo(in fact, current
branch) then do an auto-merge, too.

On the page of your github repo, click on the "Pull Request" up right.
Then it will prompt a new page require you to fill in the requesting message,
just like writing an E-Mail.
Actually in this step, you are requesting the administrator of the repo you
just forked to merge your changes into the main repo in Organization LeafGrass.
Then you can see a line like this on github page:
rescue wants someone to merge 1 commit into LeafGrass:master from rescue:master

Thus, the repo administrator will receive an E-Mail and decide to merge or not.

Why pull request instead of direct push?
Look at this page - <>

Step 4 Keep Your Repo Up-To-Date with Organization
Run these commands in your repo directory, e.g.
	git remote add upstream
Then run (auto-merge)
	git pull upstream master
OR (manual merge)
	git fetch upstream
	git merge upstream/master

That's all for you to keep your working branch up-to-date.
For detailed information about differences between "fetch" and "pull", refer to
<> What is the difference between fetch and pull?

Step 5 Development in the Future
After we get to be familiar with this fast version control system - Git, each of
us developers need a direct acess to the base repo for a faster developing
Thus, one can create his own branch based on the latest master(trunk), and works
on it. Developing new features or fixing bugs will be done on this branch.
Ofcourse, he SHOULD take charge of his branch's healthy.
As this specific feature is implemented or bug is fixed, and passed the testing,
We can merge it to our trunk - master.

Let's do to help the source tree growing up ...