---
tags: Hack,Git
---
# Common Git Usage
[toc]
### Command
##### add remote link as frequent using repo
``` git=
git remote add [NickName] [URL]
```
##### pull/push a branch
``` git=
git pull [NickName or URL] [RemoteBranch]:[LocalBranch]
git push [NickName or URL] [LocalBranch]:[RemoteBranch]
```
Note the different place for remote and local branch
##### change branch to feature branch
``` git=
git checkout [LocalBranch]
```
##### abort current change and restore to last commit status
``` git=
git checkout <file>
```
##### check difference from last commit
``` git=
git diff: show all difference.
git diff <file>: show specific file difference.
```
##### update code based version
``` git=
git rebase <branch or commit ID>
```
##### merge current changes into last commit
``` git=
git commit --amend
```
##### add all modified file to a temp stack
``` git=
git stash <--- store file
git statsh pop <--- pop out last stored file
```
##### remove a file from tracked status
``` git=
git reset
git reset <file>
```
##### setting Shortcut for commands
``` git=
git config --global alias.{SHORT_KEY} {ORIGIN CMD}
```
ex:
after type in:
``` git=
git config --global alias.st status
```
you can check status by
``` git=
git st
```
### Developing Process
Say, we are developing two different features at the same time.
```sequence
Master-->Develop:checkout
Develop-->Feature1:checkout
Develop-->Feature2:checkout
Note right of Feature1: F1 Commit
Feature1 --> Develop:Merge request
Note right of Develop: Merge accepted
Develop --> Feature2:Rebase(solve conflict)
Note right of Feature2: F2 Commit
Feature2 --> Develop:Merge request
Develop-->Feature2:Merge rejected by TechLead
Note right of Feature2: solve problems
Feature2 --> Develop:Merge request
Note right of Develop: Merge accepted
Develop --> Master: master V1.0
```
### Some useful links:
##### Change default github user
https://superuser.com/questions/1064197/how-to-switch-git-user-at-terminal