工作中常用到的 Git 命令收藏

git分布式的版本管理系统,下面是我整理的常用的git命令。

常用的git命令

分支管理

在协作开发中,不同的人开发不同的功能一般都会创建相应的功能分支,功能完成之后的分支删除,查看远程、本地所有的分支等。

git branch 查看本地分支

git branch -a 查看所有的分支

git branch -r 查看远程所有的分支

git branch <branch> 新建本地新分支

本地分支重命名(还没有推送到远程):

git branch -m <old-branch> <new-branch>

远程分支重命名:

  • 首先重命名远程分支对应的本地分支

    git branch -m <old-branch> <new-branch>

  • 删除远程分支

    git push --delete origin <old-branch>

  • 上传新命名的本地分支

    git push origin <new-branch>

  • 把修改后的本地分支与远程分支关联

    git branch --set-upstream-to origin/<new-branch>

当需要删除本地分支:

git branch -d <branch> 删除本地分支

删除远程分支:

git push origin --delete <branch-name> 删除远程分支

git branch -dr <branch>

git push origin :<branch-name> 删除远程分支

当协作开发时,远程分支已被删除时,同步更新本地分支清除远程不存在的本地分支:

git remote prune origin 清除远程已不存在的分支

本地更改

git status 查看当前的分支版本状态

git diff 查看当前未提交的变更

git commit -m 'xxx' 添加提交信息

git commit -am 'xxx' 执行add 添加信息一起提交

git commit --amend 修改上一次提交信息

查看⽂件每⼀⾏最后是在哪个版本被修改

git blame /xxxx*.xxx

git checkout

git checkout 是我们的常用命令,最为常用的两种情形是创建分支和切换分支。

git checkout -b <branch> 创建新的分支并切换到创建的分支

git checkout <branch> 切换分支

git checkout --detach <branch> 切换分支的最后一次commit阶段

git checkout --merge <branch> 将当前分支修改的内容,同步到切换的分支下

查看分支提交记录

git log 显示提交记录

git show <commit> 查看某个具体的commit修改信息

git blame <file> 查看谁在什么时候修改了文件的信息

显示某个文件的版本历史,包括文件改名

git log --follow <file>

git whatchanged <file>

分支合并

git merge是在Git中使用比较频繁的一个命令,其主要用于将两个或两个以上的开发历史加入(合并)一起。

git merge <branch> 把分支代码合并到当前分支, 存在两个分支

git rebase <branch> 把分支代码合并到当前分支, 存在一个分支

同步远程代码

git fetch <remote> 获取远程分支,不更新本地分支

git pull 拉取远程当前分支并更新本地

git pull origin <remote> 拉取远程指定分支并更新当前分支

git push 推送本地更新到远程分支

撤销

git checkout <file> 撤销文件的修改,恢复到未更改前

git checkout . 撤销本地当前所有更改

git reset <file> 重置暂存区指定文件

git reset --hard 恢复到上一次commit

git reset <commit> 恢复到指定的commit

本地暂存工作和恢复

用来保存和恢复工作,只能在add之前执行stash

git stash list 查看所有暂存列表

git stash pop stash@{num} 恢复(只能恢复一次)

git stash apply stash@{num} 恢复(可恢复多次)

git stash drop stash@{num} 删除某个保存

git stash clear 清除所有保存

打标签

git tag 查看所有tag

git tag <tag-name> 给当前分支打标签

git tag -d <tag-name> 删除本地标签

git push origin :ref/tags/<tag-name> 删除远程tag

清除远程已经不存在的本地分支

git remote prune origin

开发中经常遇到的问题

很多时候有不想提交的文件已提交,在.gitignore文件中加入忽略还是是不行的。 git rm -r --cached <file> 删除缓存的文件再提交。

总结

平时多多使用 git 是非常有必要的,可视化界面用起来不适用全部场景。