Git常用命令总结

基本配置

  • 配置用户名和邮箱
$ git config user.name manager
$ git config user.email manager@gmail.com
以上两个命令会将用户信息保存在当前代码仓库中
  • 如果要配置全局的用户名和邮箱
$ git config --global user.name manager
$ git config --global user.email manager@gmail.com
以上两个命令会将用户信息保存在用户目录下的 .gitconfig 文件中
  • 查看当前所有配置
$ git config -l
  • 配置带颜色的log别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

常用命令

  • Log打印
git log --oneline --graph // 显示主分支和自分支git日志
git log // 查看git的日志信息
  • 查询所有提交点
git reflog   #回退后需要反悔的话,需要通过此命令查找到所有操作的提交点
  • 查看本地添加了哪些远程分支地址
git remote -v
  • 本地git仓库添加远程地址
git remote add origin https://xxxxxxxxxxxx.git
  • 创建本地分支
git branch develop
  • 从develop衍生出一个新分支
git checkout -b some-feature develop
  • 推送本地develop分支到远程
git push -u origin develop 
  • 查看本地分支
git branch
  • 查看本地分支和远程分支
git branch -a
  • 切换分支
git checkout master// master是要切换的分支名
  • 删除本地分支
git branch -d develop// develop为要删除的分支名
  • 删除远程分支
git push origin --delete develop // 一般操作是先删除本地的分支,再删除远程的分支
  • 添加所有修改的文件到暂缓区
git add .
  • 查看所有文件状态
git status
  • 查看某一个文件状态
git status [filename]
  • 添加某一个文件到暂缓区
git add [file1] [file2] ... // 可以有多个
  • 提价代码到本地Git仓库
git commit -m "本次提交注释" // 需要先add . 才能提交
  • 修改注释
git commit --amend
  • 推送本地仓库代码到远程
git push // 提交之后可以直接push
  • 指定分支推送
git push origin HEAD:refs/for/branch // branch 为指定的分支
  • 更新远程代码
git pull
  • fetch是将远程主机的最新内容拉到本地,不进行合并
git fetch origin master
  • pull 则是将远程主机的master分支最新内容拉下来后与当前本地分支直接合并 fetch+merge
git pull origin master
  • 如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git pull origin master:develop   #git pull <远程主机名> <远程分支名>:<本地分支名>
  • 比较本地分支与git 主分支差异情况
git diff --stat develop origin/master
  • 在没有push之前,把项目恢复到最近一次commit或add的状态
git checkout -- . // 撤销所有文件的修改
git checkout -- filename.. // 撤销单个文件的修改

注意如果文件修改后还在工作区的话,执行上面命令就会回到和版本库的状态。如果已经执行add指令了又做了修改,执行上面指令就会回到添加暂缓区后的状态,如果你已经commit了就会回到最近一次的commit版本状态

  • 合并分支
git checkout master    #先切换到master分支
git merge develop      #合并分支develop和主干master,合并后的提交点属于主干master

注意:这里又几个参数需要了解 默认为 fast-forward只是简单的把指针右移动,不过如果删除分支的话,会丢失merge分支信息。–squash把一些不必要commit进行压缩。–no-ff关闭fast-forward模式,在提交的时候,会创建一个merge的commit信息,然后合并的和master分支

git merge develop
git merge develop –squash
git merge develop –no-ff
  • 打本地Tag
git tag xxx
  • 删除本地Tag
git tag -d xxx
  • 推送Tag到远程
git push --tags
  • 删除远程Tag
git push origin --delete xxx

版本回退

  • 回退到上一次提交
git reset —head HEAD~1 // 这里的1是上一次,如果写2的话就是回退到上上一次提交

注意:
这里的 --head的意思为:删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
--mixed:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft:不删除工作空间改动代码,撤销commit,不撤销git add .

  • 取消最近一次提交提交
git revert HEAD
  • 撤销执行提交
git revert <commit> 可以撤销指定的提交, 要撤销一串提交可以用 <commit1>..<commit2> 语法。 注意这是一个前开后闭区间,即不包括 commit1,但包括 commit2

git revert --no-commit f7742cd..551c408

然后重新提交推送到远程即可

git rebase使用

场景一:

我修改了代码准备推送到远端,但是由于远端有代码更新,git提示我先pull更新代码,我pull成功了之后,会生成一个新的提交历史f63ecbf Merge branch 'master' of 如果你不想分叉的话执行下面命令

git rebase // 合并提交
git push // 推送远端
或者 pull的时候加参数
git pull --rebase

场景二:

不同分支之间的合并。比如你新起一个分支开发新功能,开发完成后想合并到主分支,但是这个时候主分支已经不是之前的版本了,这个时候你合并必定会有冲突。你解决完冲突后再次提交合并会成功,但是提交记录会出现分叉的情况。如果不想分叉执行下面代码

在feature分支上执行

git rebase master // 这句命令的意识是:以master为基础,将feature分支上的修改增加到master分支上,并生成新的版本。

然后失败-解决冲突之后执行

git add .
git rebase --continue // 通过git rebase — continue,继续完成之前的rebase操作

然后切换到主分支master,将feather分支上的提交合并过来

git checkout master

git merge feature

最后删除feature分支即可

git branch -d feature
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容