(2)执行上一步命令成功后会在用户文件夹下生成ssh公钥文件。若能可以访问文件夹.ssh,则说明文件夹生成成功。
(3)找到.ssh文件夹,选择后缀为.pub的文件并用记事本打开,复制里面的内容。
(4)登录github网站,在setting里面找到ssh key,选择new ssh key。将之前复制的内容添加到ssh可以里面。Title我们可以起计算机的名字,因为每个计算机的ssh key是唯一的,并且添加一次后无需再次添加。最后保存。
(5)在git bash中输入ssh git@github.com进行连接认证。其中会询问是否需要进行连接,输入yes。如图所示,认证成功。
回到远程仓库的状态
抛弃本地仓库的所有版本(commit),回到远程仓库的状态。
git fetch –all && git reset –hard origin/master
重设第一个commit
也就是把所有的改动都重新放回工作区,并清空所有的commit,这样就可以重新提交第一个commit了
git update-ref -d HEAD
展示工作区和暂存区的不同
输出工作区和暂存区的different(不同)。
git diff
还可以展示本地仓库中任意两个commit之间的文件变动:
git diff
展示暂存区和最近版本的不同
输出暂存区和本地最近的版本(commit)的different(不同)。
git diff –cached
展示暂存区、工作区和最近版本的不同
输出工作区、暂存区 和本地最近的版本(commit)的different(不同)。
git diff HEAD
快速切换分支
git checkout -
删除已经合并到master的分支
git branch –merged master | grep -v ‘^*| master’ | xargs -n 1 git branch -d
展示所有的分支关联的远程仓库
git branch -vv
关联远程分支
关联之后,git branch -vv就可以展示关联的远程分支名了,同时推送到远程仓库直接:git push,不需要指定远程仓库了。
git branch -u origin/mybranch
或者在push时加上-u参数
git push origin/mybranch -u
删除本地分支
git branch -d
删除远程分支
git push origin –delete
或者
git push origin :
查看标签
git tag
展示当前分支的最近的tag
git describe –tags –abbrev=0
本地创建标签
git tag
默认tag是打在最近的一次commit上,如果需要指定commit打tag:
$ git tag -a
推送标签到远程仓库
首先要保证本地创建好了标签才可以推送标签到远程仓库:
git push origin
一次性推送所有标签,同步到远程仓库:
git push origin –tags
删除本地标签
git tag -d
删除远程标签
删除远程标签需要先删除本地标签,再执行下面的命令
git push origin :refs/tags/
放弃工作区的修改
git checkout
放弃所有修改:
git checkout .
回到某一个commit的状态,并重新增添一个commit
git revert
回到某个commit的状态,并删除后面的commit
和revert的区别:reset命令会抹去某个commit id之后的所有commit
git reset
修改上一个commit的描述
git commit –amend
查看commit历史
git log
查看某段代码是谁写的
blame的意思为‘责怪’,你懂的。
git blame
显示本地执行过git命令
就像shell的history一样
git reflog
修改作者名
git commit –amend –author=’Author Name email@address.com‘
修改远程仓库的url
git remote set-url origin
列出所有远程仓库
git remote
列出本地和远程分支
-a参数相当于:all
git branch -a
列出远程分支
-r参数相当于:remote
git branch -r
查看两个星期内的改动
git whatchanged –since=’2 weeks ago’
把A分支的某一个commit,放到B分支上
这个过程需要cherry-pick命令,参考
git checkout
给git命令起别名
简化命令
git config –global alias.
git config –global alias.st status
存储当前的修改,但不用提交commit
详解可以参考廖雪峰老师的git教程
git stash
保存当前状态,包括untracked的文件
untracked文件:新建的文件
git stash -u
展示所有stashes
git stash list
回到某个stash的状态
git stash apply stash@{n}
回到最后一个stash的状态,并删除这个stash
git stash pop
删除所有的stash
git stash clear
从stash中拿出某个文件的修改
git checkout stash@{n} –
展示所有tracked的文件
git ls-files -t
展示所有untracked的文件
git ls-files –others
展示所有忽略的文件
git ls-files –others -i –exclude-standard
强制删除untracked的文件
可以用来删除新建的文件。如果不指定文件文件名,则清空所有工作的untracked文件。clean命令,注意两点:
Mac下git设置外部比较工具(Beyond Compare):
打开Beyond Compare——>Beyond Compare Menu ——>Install Command Line Tools
如果不安装的话,会出现错误:
The diff tool bc3 is not available as ‘bcompare’
fatal: external diff died,stopping at plugins/PushPlugin.m
在终端:
git config --global diff.tool bc3
需要比较的时候,输入git difftool <文件名>
在终端:
git config --global merge.tool bc3
git config --global mergetool.bc3 trustExitCode true
代码冲突的时候,git mergetool
解决冲突后,会生成备份文件(*.orig),不想要这些文件,可以配置:
git config –global mergetool.keepBackup false
这样,每次解决冲突后对应的.orig文件就不会生成了。