1. 回退代码
1.1 回退上次commit
git reset --soft HEAD^
HEAD^的意思是上一个版本,也可以写成 HEAD~1;如果你进行了2次commit,想都撤回,可以使用HEAD ~2
--soft:不删除工作空间改动代码,撤销commit,不撤销git add .
--hard:删除工作空间改动代码,撤销commit,撤销git add . 注意完成这个操作后,就恢复到了上一次的commit状态。
1.2 回退到指定版本
// 本地代码回退到 commit-x 版本,远程分支还会处于最新代码
git reset --soft commit-x
强制回退记得备份代码
// 本地代码回退到 commit-x 版本,并将回退的后版本强推到远程主机。
git reset --hard commit-x
git push -f
1.3 当在分支A提交了很多记录,当需要将commit-x之前的所有提交合并到master分支时
可以先在branch-A push到远程分支,然后在分支A操作如下:
git reset --hard commitx
git checkout master
git merge branch-A
git push
git checkout branch-A
git pull
就可以继续在分支A开发了。
2. 修改提交
2.1 合并add和commit操作
git commit -am "提交的描述信息"
2.2 修改已commit&未push的commit注释信息
git commit --amend
输入:i
修改注释
按键:ESC
输入::wq
也可以用于追加提交
2.3 将当前分支的修改移到另外一个分支上
git add .
git stash //把暂存区内的修改存储起来
git checkout dev //切换到正确的分支
git stash pop //将存储的修改取出来
2.4. 取消merge
git merge --abort
3. 分支
3.1 分支重命名
本地分支:
git branch -m oldName newName
远程分支:
- 将远程分支删除掉
- 将本地分支重命名
- 将本地分支推到远程
将远程的dev重命名为develop:
git push --delete origin dev
git branch -m dev develop
git push origin develop
3.2 删除分支
3.2.1 删除本地分支
// 删除前检查merge状态
git branch -d develop
// 强制删除
git branch -D develop
3.2.2 删除远程分支
git push origin --delete [branch_name]
// 如果在远程删除了分支,有时候本地不能更新到,这时需要刷新一下分支列表
git remote update origin --prune
// 简写为
git remote update origin --p
4. 远程仓库
4.1 将远程git仓库里的指定分支拉取到本地
git checkout -b 本地分支名 origin/远程分支名
4.2 查看远程git地址
git remote show origin
4.3 删除远程git地址
git remote remove origin
4.4 更改本地仓库的远程git地址
git remote set-url origin https://github.com/USERNAME/PROJECTNAME.git
git push -u origin master
4.5 将本地分支与远程分支建立连接
git push --set-upstream origin 远程分支名
4.6 上传本地项目到远程git仓库
cd "本地存在项目的路径"
git init
git remote add origin git@gitlab.com:USERNAME/PROJECTNAME.git
git add .
git commit -m 'init commit'
git push -u origin master
当在远程分支已经新建了项目,有修改文件时,本地init的项目上传会提示:
fatal: refusing to merge unrelated histories
解决办法:可以在pull命令后紧接着使用--allow-unrelated-history选项来解决问题(该选项可以合并两个独立启动仓库的历史)。
详见refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories
5. git 用户
5.1 查看当前git用户
git config user.name
git config user.email
5.1 修改当前git用户
git config --global user.name "USERNAME" //USERNAME 为自己的用户名
git config --global user.email "EMAIL" //EMAIL 为自己的邮箱
6. git换行符统一
主流编辑器都支持EditorConfig,配置end_of_line后,你编辑的代码会自动转化为对应的换行符。当然你需要将autocrlf关闭,防止再次被转换成其他格式,
# 取值包括 crlf,lf,cr
end_of_line = lf
# 提交检出均不转换
git config --global core.autocrlf false