连接问题
由于默认的git push
,git pull
,git clone
使用的是http连接,则我们可以修改git的http连接方式,通过代理服务器来连接GitHub
可以采用代理服务器的socket端口访问github
git config --global http.proxy socks5 127.0.0.1:10808 |
或者采用代理服务器的http代理来访问github
git config --global http.proxy 127.0.0.1:10809 |
这里 127.0.0.1
表示本地服务器,而由于一般来说代理服务器都安装在本地,10808
和10809
这些端口号为我们监听的代理服务器端口,这两个参数可以在代理服务器软件中看到。
使用如上git全局配置后,我们的push,pull,clone 都默认通过代理服务器推收。
可以使用如下代码来取消全局配置
git config --global --unset http.proxy |
身份验证问题
我一般使用ssh key来完成身份验证,基本流程是,将公钥id.rsa.pub
存储到GitHub账户上,私钥放到~/.ssh/id_rsa
中,这样每次git push的时候,就会自动验证身份.
连接远程仓库和设置远程分支
git remote add origin <远程仓库地址> #添加名为origin的远程仓库 |
然后给本地分支绑定一个上游分支(远程分支)
git branch -u origin/main #给当前的head分支关联远程的main分支 |
然后就可以使用 git push
来推送本地仓库了.
回退到某次提交,并删除后续提交记录
使用reset命令将 Git 仓库的当前分支的 HEAD 指针、索引(暂存区)和工作目录都重置到指定的提交(commit)状态。
git reset --hard commit-hash |
或者采用soft来保留修改,意思就是说,工作区代码不变,head回退到某次提交。
git reset --soft commit-hash |
然后使用git push force来将本地HEAD指向的分支,推送到origin(远程仓库)上的同名分支,并且直接覆盖掉.
git push origin HEAD --force |
例如,HEAD指向demo分支,origin为GitHub仓库,则上面这段代码会直接在,GitHub上对应仓库中,创建一个demo分支,用本地的分支copy过去.
删除一些提交记录
可以使用git rebase
来完成这个操作,下面指令使用交互式指令,来处理最近5次提交.
git rebase -i HEAD~5 |
或者使用下面指令,处理所有提交
git rebase -i --root |
然后会看到类似这样的交互界面:
# Rebase 628acfa..ba99949 onto 628acfa (3 commands) |
常用操作是:squash
和reword
,即合并提交和重新编辑提交日志.
然后可能需要处理一些冲突,处理完毕之后就可以使用git rebase --continue
指令,后续可能还有编辑日志等操作,最后完成rebase
操作.
git reflog
回溯到以前的状态
有时候使用git rebase
或者git reset
后,一些提交记录直接消失了,这时候可以调用git reflog
来查看HEAD
的引用记录,
1a2b3c4 HEAD@{0}: commit: Some commit message |
然后使用下面指令恢复之前的状态
git reset --hard HEAD@{2} |