Git技巧
git 技巧
设置文本编辑器
git config --global core.editor emacs
配置用户信息
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
版本回退
回退上一个版本
git reset --hard HEAD^
回退到指定版本
git reset --hard 0fa7197c3170f7dbf8c872592a873ab50a4ce094
回退完后,要强制提交,强制提交比较旧的代码
git push origin HEAD:master --force
#or
git push origin 0fa7197c3170f7dbf8c872592a873ab50a4ce094:master --force
git reset 之后的后悔药
git reset 之后再想恢复的话,就要用到git reflog
- 通过
git reflog
查看 reset 前的 commit(比如是:8025dc0)
➜ testgitrepo git:(master) ✗ git reflog
afdd485 (HEAD -> master) HEAD@{0}: reset: moving to HEAD
afdd485 (HEAD -> master) HEAD@{1}: checkout: moving from 8025dc01b0d30ea4cc60c465253e133f1204fd38 to master
8025dc0 (origin/master, origin/HEAD) HEAD@{2}: checkout: moving from master to 8025dc0
afdd485 (HEAD -> master) HEAD@{3}: commit: add set routingKeys scripts
1472037 HEAD@{4}: reset: moving to HEAD^
8025dc0 (origin/master, origin/HEAD) HEAD@{5}: commit: add set routingKeys scripts
1472037 HEAD@{6}: clone: from http://git.abc.cn/config/testgitrepo.git
- 执行下面命令
git reset --hard 8025dc0
给已经存在的目录设置成git库
cd existing_folder
git init
git remote add origin https://code.aliyun.com/chk85106/linuxkai-test.git
git add .
git commit
git push -u origin master
取消pull代码时提示输入 message 信息,
git pull时,有时候会提示如上信息,会让我输入merge的message信息,git会自动 打个编辑器,让我们输入,这在我们使用脚本执行的时候,特别不方便,这时我们可以让他不显示
解决方法
方法1: 在git pull的时候添加 –no-edit的参数
git pull --no-edit
方法2: 修改配置文件,编辑~/.gitconfig
[core]
mergeoptions = --no-edit
方法3: 终端中执行
git config --global core.mergeoptions --no-edit
说明: 但似乎2.0以下的版本是不能用的,具体哪个版本没有测试过(1.9的不支持这个参数)
创建,推送 /dev/stable分支时报错
问题提示如下
➜ git:(dev/stable) git push --set-upstream origin dev/stable
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: error: cannot lock ref 'refs/heads/dev/stable': 'refs/heads/dev' exists; cannot create 'refs/heads/dev/stable'
To http://git.gitlab.cn/content/test-svr.git
! [remote rejected] dev/stable -> dev/stable (failed to update ref)
error: failed to push some refs to 'http://git.gitlab.cn/content/test-svr.git'
问题原因
出现此问题的原因是 之前已经创建了dev分支,再创建dev/stable分支时就冲突了
解决方法
- 把原来的dev分支删除或者改名
- 本地更新远程分支列表
git remote update origin --prune
远程删除了分支,但本地还可以看到,如何更新本地远程跟踪分支
git remote prune origin
fatal: unknown index entry format 0x72740000
解决办法
rm -rf .git/index
git reset