- What is a git
- Preparation
- Begin
- File Operations
- Rollback
- Branch
- Remote (link to the github or others)
What is a git
git (a) 帮助我们进行代码的版本控制,我于2015/10/1花费一天时间学习一个关于git的视频,然后再参考几篇博客,将git的使用方法全部弄清楚。let's begin!
History
- *SCCS Source Code Control System *
- 1972, closed source, free with Unix
- *RCS Revision Control System *
- 1982, open source.
- *CVS Concurrent Versions System *
- 1986 - 1990, open source
- *SVN *
- 2000, open source
- BitKeeper SCM
- distributed version
- *GIT *
- github come out
Install
参考官网的安装方法 —— [git web]
- github come out
- download the tar.gz or some package[your linux]
- tar zxvf *.tar.gz
- /configure
- make && make install
- finish. or you can try:
- git config –global user.name [your name]
- git config –global user.email [your email]
- git config –global core.editor “vim”
- git config –global color.ui true
- use bash config
- wget https://github.com/git/git/raw/master/contrib/completion/git-completion.bash * ls * mv git-completion.bash ~/.git-completion.bash * add to .bashrc that if exist this bash, source it.
- help
Begin
init the git
- mkdir dir1
- cd dir1
- git init
- add one file (make change)
- git add . (add change)
- git commit -m “some word” (commit change)
- git log -n/ –since/ –until/ –grep
stream
working -add file- staging index -commit- repositiry
File Operations
Add (git status to check)
- git add .
- git commit -m “”
- git diff
- git commit -ma “”
Remove(git status to check)
- git rm filename
- git commit -m “”
Rename(git status to check)
- git add file
- git rm file
- git commit -m “”
- or you can use git mv file1 file2
Rollback
git diff to check to change
- git checkout – file(before add) it can return the status of the workspace.
- git reset HEAD file (after add)
- unstage the file -> before add
- git checkout – file
- git (after commit)
- find the Hash value of commit
- git comment –amend append to the same commit
- git diff –staged
- return the commit status
git checkout [commit hash] – file
Warning [git reset]
- –soft not change staging index & workspace
- –mixed(default) change staging & not workspace
- –hard change staging & change workspace
usage : git reset –soft [commit hash] git reset HEAD file -n try to do -f force to do
.gitignore
it can help us to ignore some file or dir reference :
- help.github.com/articles/ignoring-files
- github.com/github/gitignore git config –global core.excludesfile pathtofile
- try new ideas
- isolate the workspace
- fast context switching
operations
- git branch
- create -> git branch new_branch_name
- switch -> git checkout branch_name
- git checkout -b new_branch_name
- git diff [branch1]..[branch2] (use –color-words)
- git branch –merged
- git branch -m old_name new_name (–move)
- git barnch -d(–delete) name (-D to delete a non-empty branch)
- prompt
- export PS1=’$(__git_ps1 “(%s)”) > ‘
- export PS1=’\W$(__git_ps1 “(%s)”) > ‘
- export PS1=$PS1’$(__git_ps1 “(%s)”) > ‘ (it’s cool !)
Attantion: barnch is a stack mode, current branch can’t be delete
Merge
- git merge exist_branch
- git branch –merged
- conflict
- change by yourselt
- git log –graph –oneline –all –decorate
- git mergetool –tool=
Attention:
- keep lines short
- commits small focused
- merge often
stash
- git stash save “changed mission …”
- git stash list
- git stash show stash@{0} (you may use -p option)
- git stash apply
- git stash pop
- git stash drop stash@{0}
Remote (link to the github or others)
Easily, this can be changed to
Set up a github account
- you set up a account
- Create a repository
- look at the code following
echo # >> README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com/[User account]/[project name].git git push -u origin master
- you can easy use git remote rm origin
- git branch -a/-r
- git push -f
- git fetch
- fetch before work
- fetch before push
- fetch often
- git pull = git fetch + git merge
- git push origin :your branch
- git push origin [–delete] branch
[远程分支的使用] git checkout -b [new_branch] (make some change) git commit -am “word” git push [远程仓库名] [远程分支名(new_branch)]
password caching
Password Caching or save the ssh key.