Git,GitHub常用命令介绍
Git给项目打标签
git tag -a v1.0 -m 'version 1.0' #给项目打v1.0标签
git push --tags #把标签推到github中
git tag checkout v1.0 #把项目检出到某个tag
git checkout master #切换到master 分支
git tag -l #列出所有的tag
git tag -d v1.0 #删除某个tag
Git generate ssh key&add config params
ssh-keygen -t rsa -C "tang.jilong@139.com"
ssh -T git@github.com
git config --global user.name "tim.tang"
git config --global user.email "tang.jilong@139.com"
git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
git config --global color.status auto
cat ~/.gitconfig
Git查看配置
Git branch操作
git branch #查看分支
git branch -r #查看远程分支
git branch -d tmp #删除本地tmp分支
git branch everyday_dev #在本地创建everyday_dev分支
git push origin everyday_dev #把本地分支提交到github.
git push origin :everyday_dev #删除github上的远程分支
Git diff操作
git diff [<path>...] #这个命令最常用,在每次add进入index前会运行这个命令,查看即将add进入index时所做的内容修改,即working directory和index的差异。
git diff --cached [<path>...] #这个命令初学者不太常用,却非常有用,它表示查看已经add进入index但是尚未commit的内容同最后一次commit时的内容的差异。即index和git directory的差异。
git diff <commit> <commit> [<path>...] #这个命令用来比较git directory中任意两个<commit>之间的差别,如果想比较任意一个<commit>和最新版的差别,把其中一个<commit>换成HEAD即可
git diff --stat #统计一下有哪些文件被改动,有多少行被改动
Git reset使用
git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD] #将当前的分支重设(reset)到指定的<commit>或者HEAD。
--hard:重设(reset) index和working directory,自从<commit>以来在working directory中的任何改变都被丢弃,并把HEAD指向<commit>。
--soft:index和working directory中的内容不作任何改变,仅仅把HEAD指向<commit>。这个模式的效果是,执行完毕后,自从<commit>以来的所有改变都会显示在git status的"Changes to be committed"中。
--mixed:仅reset index,但是不reset working directory。这个模式是默认模式,即当不显示告知git reset模式时,会使用mixed模式。这个模式的效果是,working directory中文件的修改都会被保留,不会丢弃,但是也不会被标记成"Changes to be committed",但是会打出什么还未被更新的报告。
$git reset --hard <commit-number> #将分支回滚到某个版本
$git push origin master -f
Git fetch
git fetch origin master:tmp
git diff master..tmp
git merge tmp
功能同上:
git fetch origin master
git log -p master..origin/master
git merge origin/master
Git blame
git blame filename #查看当前文件每行代码的修改者
Git archive
git archive --format zip -o $(git log --pretty=format:"%h" -1).zip HEAD #打包代码
Git meger and rebase
git merge <branch> # 将branch分支合并到当前分支
git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交
git rebase master <branch> # 将master rebase到branch,相当于:
git co <branch> && git rebase master && git co master && git merge <branch>
Git patch
git diff > ../sync.patch # 生成补丁
git apply ../sync.patch # 打补丁
git apply --check ../sync.patch # 测试补丁能否成功
Git stash
git stash # 暂存
git stash --patch # 选择需要暂存的文件
git stash list # 列所有stash
git stash apply # 恢复暂存的内容
git stash drop # 删除暂存区
Git remote repository management
git remote -v # 查看远程服务器地址和仓库名称
git remote show origin # 查看远程服务器仓库状态
git remote add origin git@github:tim-tang/tim-tang.github.com.git # 添加远程仓库地址
git remote set-url origin git@github.com:tim-tang/tim-tang.github.com.git # 修改远程仓库地质
git remote rm <repository> # 删除远程仓库
git remote set-head origin master # 设置远程仓库的HEAD指向master分支
Branching Model For Hotfixes
git checkout -b bug-xxx origin/bug-xxx #create a branch for this specific hotfix based on the prod branch and select bug-xxx branch as the current one.
git commit -m "bug-xxx blah blah" #commit the changes.
git checkout prod #select prod branch as the current one.
git merge bug-xxx #merge with bug-xxx branch.
git push origin prod #push fixes to prod.
git checkout master #select develop branch as the current one.
git merge bug-xxx #merge with bug-xxx branch.
git push origin master #push fixes to master.
502 Words
18 May 2012
Suzhou, China