Git常用操作
创建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
设置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
提交
git tracked的是修改,而不是文件
#将“当前修改”移动到暂存区(stage)
$ git add somfile.txt
#将暂存区修改提交
$ git commit -m "Add somfile.txt."
状态
$ git status
$ git diff
回退
# 放弃工作区修改
$ git checkout -- file.name
$ git checkout -- .
# 取消commit
$ git reset --soft HEAD
# 取消commit、add
$ git reset HEAD
$ git reset --mixed HEAD
# 取消commit、add、工作区修改
$ git reset --hard HEAD
记录
$ git reflog
$ git log
删除
$ rm file.name
$ git rm file.name
$ git commit -m "Del"
$ git rm -r --cached
有时候,gitignore考虑不全面,发现有不该提交的文件已经提交后,仅仅在.gitignore中加入忽略是不行的。这个时候需要执行:
git rm -r --cached filename
远程操作
$ git remote add origin git@github.com:michaelliao/learngit.git
# 第一次推送,-u(--set-upstream)指定默认上游
$ git push -u origin master
$ git push origin master
克隆
$ git clone https://github.com/Yikun/yikun.github.com.git path
$ git clone git@github.com:Yikun/yikun.github.com.git path
分支操作
产看当前分支
$ git branch
# 创建分支
$ git branch dev
# 切换分支
$ git checkout dev
# 创建并checkout分支
$ git checkout -b dev
# 合并分支
$ git merge dev
# 删除分支
$ git branch -d dev
git修改远程仓库地址
方法有三种: 1.修改命令
git remote origin set-url [url]
2.先删后加
git remote rm origin
git remote add origin [url]
3.直接修改config文件
TAG操作
1、查询远程所有TAG列表
git ls-remote --tags
2、删除远程TAG 先删除本地:
git tag -d v0.9
再删除远程
git push origin :refs/tags/v0.9
版本回退
场景: 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。 返回到上一个版本:
git reset --hard HEAD^
在windows中敲出上面命令后会出现 more? 错误如下:
fatal: ambiguous argument 'HEAD
': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
这是因为cmd控制台中换行符默认是,而不是 ,所以它的more?的意思是问你下一行是否需要再输入,而 符号就被当做换行符而被git命令忽略掉了。 解决方法有如下几种: 加引号:git reset --hard “HEAD^” 加一个^:git reset --hard HEAD^^ 换成~ :git reset --hard HEAD~ 或者 git reset --hard HEAD~1 ~ 后面的数字表示回退几次提交,默认是一次
git无法pull仓库refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories