Git常用命令
查看
- git branch /-r/-vv/-a
查看本地所有分支/只查看远程仓库的分支/查看本地分支和相关联的远程分支/查看本地和远程仓库的所有分支 - git remote -v
查看远程仓库的信息 - git log
显示当前分支的版本历史 - git status
显示有变更的文件 - git diff
显示暂存区和工作区的差异 - git diff HEAD
显示工作区与当前分支最新commit之间的差异 - git reflog
显示当前分支的最近几次提交 - 查看用户名和密码
git config user.name
git config user.email - 设置用户名
git config --global user.name “mytheart” - 设置邮箱
git config --global user.email useremail@qq.com - 只查看commitid 和对应的描述
git log --pretty=oneline --abbrev-commit
分支操作
- git branch --set-upstream-to=origin/[branch-name]
将当前本地分支和远程分支相关联(本地分支和远程分支都已经存在) - git push --set-upstream origin branch_name
在远程创建一个与本地branch_name同名的分支并跟踪 - git checkout --track origin/branch_name
在本地创建一个与branch_name同名分支并跟踪远程分支 - git branch -D [branch-name]
删除本地分支(删除前不能处于要删除的分支) - git push origin --delete [branch-name]
删除远程分支(将一条空分支推送到远程 git push <远程主机名> <本地分支名> <远程分支名> ) - git branch [branch-name]
新建一个分支,但依然停留在当前分支 - git branch [branch] [commit]
新建一个分支,指向指定commit - git checkout -b [branch]
新建一个分支,并切换到该分支 - git checkout -
切换到上一个分支 - git merge [branch]
合并指定分支到当前分支 - git cherry-pick [commit]
选择一个commit,合并进当前分支 - 下载远程仓库的所有变动
git fetch [remote]
提交操作
- git commit --no-verify -m
提交并忽略校验 - git stash
现在想要切换分支,但是还不想要提交之前的工作;所以储藏修改。将新的储藏推送到栈上 - git stash list
查看栈中储藏的内容 - git stash pop
还原并删除该条stash记录
撤销/回滚操作
- git checkout .
重置所有工作区的文件 - git reset .
回退暂存区的文件(相当于回退到git add . 之前的状态) - git reset --soft HEAD^
撤销上次的本地提交(相当于回退到git commit 之前的状态,提交的文件回到暂存区) - git reset --hard HEAD^/HEAD~1/commitId
重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致/回退到底前1个版本/指定版本
仓库操作
- git remote -v
// 查看git对应的远程仓库地址 - git remote rm origin
// 删除关联对应的远程仓库地址 - git remote add origin https://github.com/xxx.git
// 重新关联git远程仓库地址 - git remote get-url origin //查看远程仓库地址
- git remote set-url origin https://github.com/xxx.git
// 设置远程仓库的地址
标签
- git tag v1.0
// 打在最新提交的commit上的 - git tag v0.9 f52c633
// 打在某个commit上
Git提交规范
- feat:新功能(feature)
- fix:修补 bug
- docs:文档(documentation)
- style: 格式(不影响代码运行的变动)
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- test:增加测试
- chore:构建过程或辅助工具的变动
常见操作(回滚+取消回滚)
- git reflog / git log -g 可以查看所有的操作日志
- git reset --hard commitId 重置本地仓库的commit到某次commitId
- git push -f 强制推送到远程分支(本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支)
- 进阶-公共远程分支版本回退的问题
PS:
- 采用git clone的项目包含.git目录,这里面有历史版本信息
- 采用下载zip文件的是没有版本历史信息的。只是当前分支的最新版本
- git pull <远程主机名> <远程分支名>:<本地分支名> ,git pull = git fetch + gei merge 。git pull 会拉取仓库当前分支的内容并合并到工作区,同时对于会把远程仓库中的全部变动拉到当前的本地远程仓库。
实际开发过程中遇到过的问题
- git报错:fatal: refusing to merge unrelated histories
背景:在本地初始化了一个Git代码仓库,关联到Github上新建的仓库,第一次执行git pull origin master 拉取远程分支时,出现标题上的问题(Git 2.9之后的版本才会出现此问题)
git pull origin master --allow-unrelated-histories
- 该选项可以合并两个独立启动仓库的历史
- 远程仓库回退
1. 本地仓库回退
git reflog // 找到要回退的版本的commit id; 显示你之前所有生成过commit的操作(git stash也在里面),不管出了什么错,理论上都是可以抢救的
git reset --hard Obfafd // 回退版本
2. 强制推送到远程分支:
git push -f
ps:另一个方法:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支