- git 回退到之前提交的版本
git reset --hard <commitid>
git reset --hard #回退到上一次的提交
git reset --hard HEAD~2 #回退到前两次提交
* git reset --hard 回滚以后,怎么再回去?
```
git log -g #获取你要会退的版本的commit hash,可以通过提交的时间和日期来辨别
git reset --hard # 通过本命令回退,之前的那个commit对应的commitid
```
* 是谁弄乱了我的代码?
git blame [file_name] #将文件中的每一行的作者、最新的变更提交和提交时间展示出来
* git log和git reflog的区别
git log命令可以为你展示最后一次commit
git reflog则列出了head曾经指向过的一系列commit
* 检查丢失的提交
git fsck --lost-found
你可以通过运行 git show [commit_hash] 查看提交之后的改变
git merge [commit_hash] 来恢复到之前的提交。
git fsck 相对reflog是有优势的。比方说你删除一个远程的分支然后关闭仓库。用fsck你可以搜索和恢复已删除的远程分支。
* git reset soft,hard,mixed之区别深解
其实就是--soft 、--mixed以及--hard是三个恢复等级。
--soft就仅仅将头指针恢复,已经add的缓存以及工作空间的所有东西 都不变。
--mixed,将头恢复掉,已经add的缓存也会丢失掉,工作空间的代码什么的是不变的。
--hard,那么一切就全都恢复了,头变,aad的缓存消失,代码什么的也恢复到以前状态。
* git reset 和git revert的区别
git revert是用一次新的commit来回滚之前的commit,git reset是直接删 除指定的commit
git reset 是把HEAD向后移动,git revert是HEAD继续向前进
* git远程分支管理
添加远程分支
git remote add origin https://github.com/lvgithub/angular2-tutorials.git
修改远程地址
git remote set-url origin https://github.com/lvgithub/angular2-tutorials.git
git push origin master
删除远程分支
git remote rm origin
git push origin --delete master
推送到远程分支
git push -u origin master # -u选项指定一个默认主机,这样后面就可以不加任何参数使用git push
git push --all origin # 将所有本地分支都推送到origin主机
git push --force origin # 强制推送
git push origin --tags # git push不会推送标签(tag),除非使用–tags选项
* 配置ssh密钥
设置SSH Key
$cd ~/.ssh
如果说没有这个目录,就直接生成ssh key
$ssh-keygen -t rsa -C "email"
然后就生成一个目录.ssh ,里面有两个文件
id_rsa , id_rsa.pub,把这个SSH放到github上
用公钥,进入account-setting ,把id_rsa.pub的
内容复制进去就可以了。
测试,输入命令
$ssh -T git@github.com
在终端里输入命令
git config --global user.name "username"
git config --global user.email "email"
* https的方式,记录密码
如果想自己设置时间,可以这样做:
git config --global credential.helper cache
这样就设置一个小时之后失效
git config credential.helper 'cache --timeout=3600'
第二种方式直接配置密码到远程链接
git remote add origin http://yourname:password@git.oschina.net/name/project.git