Git/Github
CSIE 瞿旭民
<kevinbird61@gmail.com>
Program Design - C++
http://slides.com/kevinbird61/deck-1
What is Git? Github?
- Git : tool , consider as interface between server and user.
- Github : data center of git , which has web service for user.
Why using Git?
- Back up the project
- Trace the project
- Work together
- and ...
Lots of tool support git
GUI tool for Git.
Editor tool for Git.
Test and deploy collaborated project.
... and so on.
(連結為簡易Github初步使用教學)
Installation
Windows、Mac
- Download from link
- All click the default choices is fine.
Linux
- Open your terminal (ctrl + t)
> sudo apt-get update
> sudo apt-get install git
- If your using CentOS or Fedora:
> yum install git
Overview
How does git work ?
Intro.
Repository
- Often represent as your project.
- The basic unit in git.
Commit
- Mostly contain all the current changes.
- User can record message represent each commit.
Branch
- Github allow different version from the same repo.
- If your project evolve with time, just like a tree grow up with lots of branch.
Diagram
Let's Practice!
Basic Setup
Basic
- Set up the user information with "git config"
- Using parameter "global" to let these setting globally
- If you want to upload your own project, you must do those settings.
> git config --global user.email "your@email.com"
> git config --global user.name "your_git_account"
> git config -l
user.email=your@email.com
user.name=your_git_account
- Windows have Git tool with GUI (Git Client, ... etc), also can do same tricks.
Git Command
Outline
Clone
- Everyone can download or clone any repository on github
- You can download the zip package, or using "git clone".
> git clone https://github.com/kevinbird61/tcp-requester.git
Cloning into 'tcp-requester'...
remote: Counting objects: 13, done.
remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
Unpacking objects: 100% (13/13), done.
Checking connectivity... done.
- After that, you can have this project on your own pc.
init
- Create a new repository (project)
- You can create repository by "git init"
- Use this when you want to add an existed project to a brand new repository on github.
[ Open terminal / git bash ]
> mkdir my_proj && cd my_proj
> git init
Initialized empty Git repository in /home/user/my_proj/.git/
.... (some operation , or ctrl+c+v an existed project in here)
> git add .
> git commit
> git remote add [remote_name/new_remote] [your repo url]
> git push -u [remote_name] [your repo branch]
... (authentication part , and if your network condition is fine, congratulate!)
status
> git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
- And then using "git status" to check out !
- This command will show all commit message !
- current stage of this repository: any changes、anything new will show in here
add、reset & commit
- When user accomplish their current work , then using "git add [project/files]" to add those new things.
- Also, you can discard above changes by "git reset [project/files]".
- And then using "git commit" to append some message on this changes stage.
commit message
Title
Blablabla
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
# new file: test
- First line : Represent as commit title ( clarity for other to view your commit log )
- One blank line (format)
- The content of this commit stage.
- Other message generate automatically
log
- If you need to modify other's repo( or your old repo) , you will need to trace and find how this repo work, and its architecture.
- Then you can using "git log" to trace.
> git log
commit 1490ef5d2a7e09864278f3a88dc9996f71d8e62b
Author: kevinbird61 <kevinbird61@gmail.com>
Date: Thu Feb 23 01:16:14 2017 +0800
Revise connection channel problem.
- Fix the bugs - "can't make connection again to server by same network
location"
- Using socket.io room instead of namespace.
- Next step: build room monitor.
...
committer
committer's message
push & pull
- After appending messages on your current stage, we can now using "git push [remote name]" to upload this package to git server.
- Also , if your repository was upload another place, you can using "git pull [remote name]" to update your local old repository. ( Hint: If your local repository has changed before "git pull", there might generate conflicts and display error message. You can manually check and remove by yourself, or let git server point out which parts are different. )
push & pull (conti.)
- As your first push, you must create an new branch and push.
> git push -u [remote_name] [branch_name]
- If you pull from some other branch in your project , you can't use default like "git pull", you have to give the target remote name and branch name.
> git pull [remote_name] [branch_name]
- check your remote : "git remote -v"
> git remote -v
origin https://github.com/<your_account>/<your_repo>.git (fetch)
origin https://github.com/<your_account>/<your_repo>.git (push)
checkout
- Change current branch by "git checkout [branch_name]", and then the repo will immediately change to target branch.
kevin@DESKTOP-0RERCE9:[~]$ ls
shell-script-usage test_proj tmp
kevin@DESKTOP-0RERCE9:[~]$ git clone https://github.com/kevinbird61/LifeGamer.git
Cloning into 'LifeGamer'...
remote: Counting objects: 15260, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 15260 (delta 11), reused 0 (delta 0), pack-reused 15229
Receiving objects: 100% (15260/15260), 34.56 MiB | 1.65 MiB/s, done.
Resolving deltas: 100% (3947/3947), done.
Checking connectivity... done.
kevin@DESKTOP-0RERCE9:[~]$ ls
LifeGamer shell-script-usage test_proj tmp
kevin@DESKTOP-0RERCE9:[~]$ cd LifeGamer/
kevin@DESKTOP-0RERCE9:[~/LifeGamer]$ ls
LICENSE README.md Version 1.0.0 Version 2.0.0
kevin@DESKTOP-0RERCE9:[~/LifeGamer]$ git checkout backend
Branch backend set up to track remote branch backend from origin.
Switched to a new branch 'backend'
kevin@DESKTOP-0RERCE9:[~/LifeGamer]$ ls
backend-gui backend-master backend-slave Feature.md protopype-gui.ep
checkout (conti.)
- Also , you can checkout to any commit.
> git log
....
commit 041ab969cd5c61cddde51f3cf2a87c116b33c34b
Author: kevinbird61 <kevinbird61@gmail.com>
Date: Tue Mar 7 12:51:11 2017 +0800
Modify battle bugs.
Bugs: if target battle room is not existed , the battle command will
crash the render server; so add an checking mechanism to prevent from
it.
....
> git checkout 041ab96
Conclusion
Reference
Git/Github Tutorial
By Kevin Cyu
Git/Github Tutorial
Git basic guideline for program design course.
- 3,240