git常见命令使用
- git版本库初始化,对当前目录下的文件进行版本控制:git init
- 远程下载代码:git clone git@github.com:dongchen2016/Hello-World.git
- 查看本地分支的远程分支:git remote -v
- 删除本地仓库文件:git rm 文件路径+文件名
- 查看本地仓库状态(改动):git status
- 将从工作区提交到暂存区:git add 路径+名称,如果需要提交的比较多可以使用 git add . ,会将工作区所有文件提交到暂存区
- 将文件从暂存区提交到本地版本库:git commit -m “message” 引号里面是对于本次提交到版本库的描述,
- 同时提交到暂存区、版本库:git commit -a -m “message”
- 从远程拉代码:git pull 远程别名(通过git remote -v获取) 分支名, 比如git pull origin master
- 本地版本库提交数据到远程:git push 远程名 分支名,例如:git push origin master
- 查看commit记录:git log
- 查看文件具体变化:git diff 路径+文件
分支操作
- 查看当前分支:git branch
- 创建分支:git branch 分支名
- 切换分支:git checkout 分支名
- 创建+切换分支:git checkout -b 分支名
- 合并某分支到当前分支:git merge 分支名
比如:将在开发中的分支(dev),合并到稳定分支(master),
首先切换到master:git checkout master
然后执行合并操作:git merge dev
如果有冲突,会提示解决冲突,可以使用git status,查看冲突文件
解决完冲突后,将文件提交到暂存区(git add .),提交到版本库(git commit -m “message”) - git rebase 和git merge区别在于,git merge会保留合并操作的日志,gitrebase则不会,相当于把dev分支相对于master多出来的部分拆下来,以打补丁的方式增加到master上面,前面的操作基本一样,解决冲突后,执行的命令:git rebase –continue提交修改,如果想要取消rebase,则使用git rebase –abort
- 删除分支:git branch -d 分支名
- git pull origin master:相当于执行从远程下载代码,合并到本地
- 删除远程分支:git remote rm 远程名(git remote -v)
- 增加远程分支: git remote add 远程名(可以自己定义) url(比如git@github.com:dongchen2016/Hello-World.git)
- 切换远程分支到本地:git checkout -b [分支名] [远程名]/[分支名]
修改撤销
- 撤销工作区修改(没有add,commit):git checkout – file(路径+名),取消全部修改:git checkout .
- 回退到之前的某次commit:git reset –hard hash值(可以输出git log查看自己的commit记录,里面会出现hash值)
- 如果想要让远程的提交也回复到之前的状态:在2的基础上,输入:git push –force,强制取消之前的提交(有人说是逆向commit,不是特别理解什么意思)
git仓库新建分支,将本地推送到远程操作过程
- 首先在本地将代码所在文件夹,纳入git 管理(git init)
- 将仓库设为本地代码的远程:git remote add origin url
- 将代码推送到远程(因为初次提交,其他正常提交git push origin master):git push –set-upstream origin master
git stash暂存当前所有修改
需要注意的是这里面的暂存不是存放到暂存区,而是相当于放到一个剪切板里面,需要的时候再拿回来
- 暂存:git stash save “提示信息”
- 提取最近一次提交:git stash pop
- 查看所有暂存:git stash list,里面会出现index,就是后面用到的
- 提取指定的某次提交:git stash apply stash@{1} ,其中1,表示哪次提交
- 清楚全部暂存:git stash clear
本地错误提交,以及远程错误提交的解决方法
本地错误提交
- 本地错误提交,首先找到错误提交之前的一次提交的hash值,然后git reset –hard(或者是soft,mixed等),将代码切换提交前;
- 如果是–hard类型,直接输入git reset hash值,就可以取消之前的commit;如果是soft、mixed,则自动取消之前的commit,但是会保留hash(某次commit)之后的代码变动,两者区别暂时不是特别理解
远程错误提交
1,在本地修改成功以后,git push -f origin master,直接强制提交
2,方法2,处于保险起见,可以先将主分支备份,然后再进行1,中操作,具体过程不再细说
tag操作
- 创建本地标签:git tag -a v1.1.4 -m “tagging version 1.1.4”
- 删除本地标签:git tag -d v1.1.4
- 推送本地标签到远程:git push origin v1.1.4
- 删除远程标签:先删除本地标签,git tag -d v1.1.4 ,然后 git push origin :refs/tags/v1.1.4或者是git push origin v1.1.4
- 列出所有标签:git tag
- 给某次历史记录打tag的方式:git tag -a v1.1.4 -m “tagging version 1.1.4” commitid(某次提交的hash值)