1.基本操作
git log -p file 查看某个文件的所有提交
git checkout id file只回退某个文件
git reset --hard id回退整个仓库
git log --oneline 只显示提交id和提交信息,每个提交一行
git remote -v 跟踪远程服务器
git reset id file 只回退某个文件到制定版本
git blame file | grep veriable //查看某个文件中具体变量的演变过程。
git reset HEAD~ //撤销本地提交但保留修改内容
2.git 添加ssh方式的推送
tina-ssh ssh://... (push)
git remote add tina-ssh ssh://...
git push tina-ssh(远程服务器) master(远程分支):refs/for/master 推送
3.git 提交缺少changeID
1.回到该条提交的状态:git rebase -i HEAD~4 (这里4表示第四条,若最近一次提交则HEAD~)
2.拷贝服务器的hooks:gitdir=$(git rev-parse --git-dir);
scp -p -P 29418(填写端口号) xxx@gerrit.xxx.com:hooks/commit-msg ${gitdir}/hooks/
如:scp -p -P 29418 flyranchao@gerrit.163.com:hooks/commit-msg ${gitdir}/hooks/
3.重新提交:git commit --amend --no-edit(表示保留提交信息直接提交,不进入提交编辑界面)
4.git push -u origin master报错
无法推送一些应用到。。。
更新被拒绝,因为远程仓库包含您本地尚不存在的提交,这通常是因为另外一个版本已向该引用进行了推送,再次推送前需要整合远程变更。
-u 表示指定一个主机
git push -u origin +master
git pull --rebase origin master 合并分支
git push -u origin master
5.gitlib无法git clone
实时注册的账号,ssh key被更新了,
ssh -keygen -t rsa -b 4090 -c "youremail@test.com" eval "$(ssh-agent -s)"
在本地.ssh目录下重新复制id_rsa.pub中的ssh秘钥到gitlab->profile setting->ssh key添加即可。
6.未建立远程联系报错
使用git pull 或git push时提示:git there is no tracking information for the …
因为本地分支和远程分支没有建立联系。
git branch -a 先查看所有分支
git checkout <branch> 切换到对应分支
若还是不行则
git branch --set-upstream-to = origin/远程分支名 本地分支名
7.git log 提示:fatal:bad default revision ‘HEAD’
是因为刚初始化的仓库,还没有一次提交,执行git commint提交一次即可。
8.git pull提示:有太多不可达的松散对象
git prune删除即可。
9.强制撤销push到远程仓库的提交(一般不建议)
1.在远程仓库project->setting->protected branch,将master的保护取消。
2.切换到push前的版本id(本地)git reset --hard
3.强制撤回push:git push origin <分支名> --force
10.git checkout时出现头指针分离
本地有修改时使用git checkout id号进行版本回退容易产生头指针分离
1.git checkout <分支名> 先回到对应分支
2.git reset --hard id号 再回退版本
11.git 提交的界面设置
vim .gitconfig 中添加
[core]
editor = vim 使用vim作为提交时的编辑器