前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 常用命令,建议收藏 !

Git 常用命令,建议收藏 !

作者头像
田维常
发布2022-11-25 15:22:28
2910
发布2022-11-25 15:22:28
举报

你好,我是田哥

前两天,我知识星球里一位朋友咨询我Git怎么搞,那么多命令难道要全部记下来吗?

答案是:没有必要,作为多年使用Git的我,其实很多命令也没用过。

有的同学可能会说,IDEA上直接这里点commit、push之类的不就能把代码提交上去了吗?搞这么多命令有啥用?自己累不累呀? 我只想回一句:你太年轻了!

为了让你不再为Git命令多而烦恼,我特意写了这篇文章。

在阅读文章之前,先了解三个概念:

  • 工作区 Index / Stage
  • 暂存区 Repository
  • 仓库区(或本地仓库) Remote:远程仓库

本文重点是我们工作中常用的命令,只要搞定本文,工作就轻松多了。

话不多说,直接开始吧。

配置git

Git用户名

代码语言:javascript
复制
git config --global user.name "Your Name"

邮箱

代码语言:javascript
复制
git config --global user.email "email@example.com"

Git显示颜色

代码语言:javascript
复制
git config --global color.ui true

初始化

创建项目文件夹,进入到文件夹里,然后初始化Git。

代码语言:javascript
复制
mkdir project
cd project
git init

添加文件并提交代码(git commit之前需先git addcommit只负责提交暂存区的内容)

代码语言:javascript
复制
git add README.md(文件名)
# git add -f README.md(-f为强制添加,可提交.gitignore中配置的文件)
git commit -m "提交备注"

查看当前仓库状态

代码语言:javascript
复制
git status

对比文件改动内容

代码语言:javascript
复制
git diff README.md(文件名)

查看Git日志

代码语言:javascript
复制
git log

版本回退到第N个版本前

代码语言:javascript
复制
git reset --hard HEAD~N

版本回退(切换)到指定版本(git每次提交的唯一十六进制的id,git log或者git reflog(记录每次一提交的信息)可以查看)

代码语言:javascript
复制
git reset --hard e475afc93c209a690c39c13a46716e8fa000c366(版本号,这只是个例子,此值不必写全,只要能让git知道是哪个把那本就行,一般写5-6位即可)

撤销修改(撤销到最近一次git addgit commit之前的状态)

代码语言:javascript
复制
git checkout -- README.md(文件名)

撤销暂存区的修改(git commit之前)

代码语言:javascript
复制
git reset HEAD README.md(文件名)

删除文件(确定删除需要git commit,若误删可以使用git checkout -- 文件名)

代码语言:javascript
复制
git rm README.md(文件名)

查看远程仓库连接信息(fetch抓取,push推送)

代码语言:javascript
复制
git remote -v

关联远程仓库

代码语言:javascript
复制
git remote add origin git@github.com:username/xxxx.git

推送到远程库(第一次推送master分支)

代码语言:javascript
复制
git push -u origin master

推送到远程库

代码语言:javascript
复制
git push origin 分支名

克隆代码

代码语言:javascript
复制
git clone https://github.com/username/xxxx.git

代码语言:javascript
复制
git clone git@github.com:username/xxxx.git

克隆指定分支代码

代码语言:javascript
复制
git clone -b 分支名 https://github.com/username/xxxx.git

创建分支

代码语言:javascript
复制
git branch 分支名

切换分支

老版本

代码语言:javascript
复制
git checkout 分支名

新版本

代码语言:javascript
复制
git switch 分支名

创建分支并切换

老版本

代码语言:javascript
复制
git checkout -b 分支名

新版本

代码语言:javascript
复制
git switch -c 分支名

查看分支

代码语言:javascript
复制
git branch

查看所有分支(本地+远程,远程分支会以红色标出,当前分支前面会标一个*号)

代码语言:javascript
复制
git branch -a

合并某分支到当前分支,若存在冲突会提示手动修改后再提交,git merge默认为fast forward模式

fast forward模式

代码语言:javascript
复制
git merge 其他分支名

禁用Fast forward模式(--no-ff) 推荐

代码语言:javascript
复制
git merge --no-ff -m "提交备注" 其他分支名

git log --graph --pretty=oneline --abbrev-commit命令可以看到分支合并图

删除分支

代码语言:javascript
复制
git branch -d 分支名

强行删除分支

代码语言:javascript
复制
git branch -D 分支名

保存工作空间

代码语言:javascript
复制
git stash

查看保存的工作空间

代码语言:javascript
复制
git stash list

从保存的工作空间恢复

代码语言:javascript
复制
git stash apply 

若存在多个保存的工作空间(n为序号0开始)

代码语言:javascript
复制
git stash apply stash@{n} 

删除保存的工作空间

代码语言:javascript
复制
git stash drop

若存在多个保存的工作空间(n为序号0开始)

代码语言:javascript
复制
git stash drop stash@{n} 

从保存的工作空间恢复并删除保存的空间

代码语言:javascript
复制
git stash pop

若存在多个保存的工作空间(n为序号0开始)

代码语言:javascript
复制
git stash pop stash@{n} 

将其他分支上的提交应用到当前分支

代码语言:javascript
复制
git cherry-pick commit的编号

抓取代码

代码语言:javascript
复制
git pull

将本地分支与远程分支关联

代码语言:javascript
复制
git branch --set-upstream-to 分支名 origin/分支名

把本地未push的分叉提交历史整理成直线;

代码语言:javascript
复制
git rebase

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

打标签

代码语言:javascript
复制
git tag v1.0 commit的id(不加则为之后的commit添加标签)
代码语言:javascript
复制
git tag -a v1.0 -m "提交备注" commit的id(不加则为之后的commit添加标签)

查看所有标签

代码语言:javascript
复制
git tag

查看标签信息

代码语言:javascript
复制
git show v1.0

删除本地标签

代码语言:javascript
复制
git tag -d v0.1

删除远程标签

代码语言:javascript
复制
git push origin :refs/tags/v1.0

推送某个标签到远程

代码语言:javascript
复制
git push origin v1.0

推送全部尚未推送的标签

代码语言:javascript
复制
git push origin --tags

同一套代码关联多个远程库(同时关联github和gitee为例)

关联GitHub的远程库

代码语言:javascript
复制
git remote add github git@github.com:username/xxxx.git

关联Gitee的远程库

代码语言:javascript
复制
git remote add gitee git@gitee.com:username/xxxx.git

推送Github

代码语言:javascript
复制
git push github master

推送Gitee

代码语言:javascript
复制
git push gitee master

查看.gitignore文件中哪条规则写错了

代码语言:javascript
复制
git check-ignore -v 文件名

设置命令别名

git status => git st

代码语言:javascript
复制
git config --global alias.st status

git reset HEAD file => git unstage

代码语言:javascript
复制
git config --global alias.unstage 'reset HEAD'

git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit => git lg

代码语言:javascript
复制
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"

后记

命令还真不少,也没事的哈,Git原本就是个工具,所以,会使用就好。

建议收藏哈,工作中遇到了,不用到处去找。

参考:segmentfault.com/a/1190000020912590

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java后端技术全栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置git
  • 初始化
  • 添加文件并提交代码(git commit之前需先git add,commit只负责提交暂存区的内容)
  • 查看当前仓库状态
  • 对比文件改动内容
  • 查看Git日志
  • 版本回退到第N个版本前
  • 版本回退(切换)到指定版本(git每次提交的唯一十六进制的id,git log或者git reflog(记录每次一提交的信息)可以查看)
  • 撤销修改(撤销到最近一次git add或git commit之前的状态)
  • 撤销暂存区的修改(git commit之前)
  • 删除文件(确定删除需要git commit,若误删可以使用git checkout -- 文件名)
  • 查看远程仓库连接信息(fetch抓取,push推送)
  • 关联远程仓库
  • 推送到远程库(第一次推送master分支)
  • 推送到远程库
  • 克隆代码
  • 克隆指定分支代码
  • 创建分支
  • 切换分支
  • 创建分支并切换
  • 查看分支
  • 查看所有分支(本地+远程,远程分支会以红色标出,当前分支前面会标一个*号)
  • 合并某分支到当前分支,若存在冲突会提示手动修改后再提交,git merge默认为fast forward模式
  • 删除分支
  • 保存工作空间
  • 查看保存的工作空间
  • 从保存的工作空间恢复
  • 删除保存的工作空间
  • 从保存的工作空间恢复并删除保存的空间
  • 将其他分支上的提交应用到当前分支
  • 抓取代码
  • 将本地分支与远程分支关联
  • 把本地未push的分叉提交历史整理成直线;
  • 打标签
  • 查看所有标签
  • 查看标签信息
  • 删除本地标签
  • 删除远程标签
  • 推送某个标签到远程
  • 推送全部尚未推送的标签
  • 同一套代码关联多个远程库(同时关联github和gitee为例)
  • 查看.gitignore文件中哪条规则写错了
  • 设置命令别名
  • 后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档