cpsa3 / blog

hello world

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Git常用命令

cpsa3 opened this issue · comments

commented

提交代码

git status //查看本地版本状态
git add . //添加本地修改文件
git add -A //会将未通过git rm删除的文件全部stage
git commit -m 'comment' //提交到本地仓库
git push origin master //提交到远程仓库

创建远程分支:

git branch dev9.2 // 创建新本地分支
git checkout dev9.2 //切换至新本地分支
git add .
git commit -m '新提交'
git push origin <local_branch_name>:<remote_branch_name> //push本地分支至远程分支

clone分支并建立tracking:

git clone https://github.com/cpsa3/hello-world.git dev9.2
git checkout -t origin/dev9.2 //获取远程分支到本地,并自动建立tracking

创建tag:

git tag -a v1.4 -m 'version 1.4'  //创建含附注的标签
git tag //显示已有标签
git tag -d v1.0.0 //删除本地标签 v1.0.0
git push origin :refs/tags/v1.0.0 //删除远程tag
git push origin v1.0.0 //推送本地tag至远程(命令和推送远程分支一样,优先识别为分支)
git show v1.0.0 //显示tag或branch信息
git push origin :<branch_name> //删除远程分支(本地分支会保留)
git checkout -b branch_name tag_name //从tag创建分支

查看历史

git log --pretty=oneline // 一行显示log(不能察看已删除的commit记录)
git log --stat //查看提交统计信息
git reflog //可查看所有分支的所有操作记录(包括已经删除的commit)
git show commit-id // 查看某次修改

本地代码回滚

git reset HEAD //回滚至最新一次的提交
git reset --hard commit-id //回滚到commit-id,将commit-id之后提交的commit都去除 
git reset --hard HEAD~3 //将最近3次的提交回滚

回滚远程代码(原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支):

git checkout the_branch
git pull
git branch the_branch_backup //备份一下这个分支当前的情况
git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id
git push origin :the_branch //删除远程 the_branch
git push origin the_branch //用回滚后的本地分支重新建立远程分支
git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支

获取远程版本

git pull //从远程获取最新版本并合并到本地仓库:等同于git fetch + git mearge

撤销修改

git checkout -- <filename> //撤销某文件修改
git checkout . //撤销所有未提交修改

标签功能

git tag // 显示所有标签
git tag v1.3 // 简单打标签 

删除文件

git rm <filename> //直接删除文件
git rm --cached <filename> //删除文件暂存状态

文件比较

git diff //查看未暂存的文件更新 
git diff --cached //查看已暂存文件的更新 

分支操作

git branch <branch_name> //创建本地分支
git checkout -b master develop //创建并切换到develop分支 
git branch -r //查看远程分支
git branch //查看本地分支
git branch -av //查看所有分支
git push origin <branch_name> //将本地分支push至远程服务器
git checkout <branch_name> //切换本地分支
git branch -d <branch_name> //删除本地分支
git push origin :<branch_name> //删除远程分支(本地分支会保留)
git push origin <local_branch_name>:<remote_branch_name> //push本地分支至远程分支
git checkout -b dev origin/dev //获取远程分支到本地,并自动建立tracking
git checkout -t origin/dev //获取远程分支到本地,并自动建立tracking
git checkout --track origin/dev //获取远程分支到本地,并自动建立tracking
git mearge <branch_name> //分支合并(将指定名称的分支与当前分支合并)
git pull origin <branch_name> //拉去远程分支
git merge --abort //undo mearge[Since git version 1.7.4]

合并分支

git checkout master //切换到主分支
git merge --no-ff develop //把develop合并到master分支,no-ff选项的作用是保留原分支记录
git rebase develop //合并分支
git branch -d develop //删除develop分支

Git设置

git config --list //查看config
git config --global --list  //查看全局config 
git config user.name "xx" //设置user.name
git config user.email "xx@xx.com" ////设置user.email
git remote -v //查看远程分支别名

初始化项目

cd [package folder]
git init
git add
git commit -m "Initial"
git remote add origin [your git repo]
git pull origin master //同步远程库最新代码至本地
git push origin master

Stash使用:

git stash // 保存
git stash list //查看
git stash pop stash@{num} //num 是你要恢复的操作的序号,git stash pop命令是恢复stash队列中的stash@{0},然后从记录就删除,就是常规的pop操作
git stash clear // 删除(清空)

其他命令:

git merge --abort //revert merge(http://stackoverflow.com/questions/2389361/undo-a-git-merge)
git diff > mypatch.patch  //If you haven't commited the changes
git apply mypatch.patch // apply patch