git 常用命令(持续更新)

270 阅读3分钟

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

远程分支:

  1. 将远程分支删除掉
  2. 将本地分支重命名
  3. 将本地分支推到远程

将远程的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