【Git常用命令及常见问题解决】

本文详细介绍了Git的基本命令,包括初始化、配置、提交、状态查看、文件比较、重置、拉取与撤销等,以及如何连接远程仓库、推送代码和解决常见问题。还提供了学习资源链接以深入学习。
摘要由CSDN通过智能技术生成

Git 原理图

git原理图

常用命令

初始化 git init

配置 git config

  • 配置每次提交的用户名和邮箱,加global配置的是全局的,所有仓库都是这个,不加配置的就是当前仓库的
  • 也可以通过配置文件进行设置,当前仓库配置 .git/config 文件,全局文件配配置主用户目录下的.config文件
git config --list  ## 查看配置
git config --global user.name "用户名"
git config --global user.email "邮箱"

查看 git Status

  • 文件前的A代表添加,M代表修改,绿色代表添加到缓存,红色代表未添加到缓存
  • 简要查看 git status -s
  • M a.txt 代表 新建a.txt文件先添加到缓存,本地又做修改,但未添加到缓存。
  • AMM a.txt 代表 a.txt 文件修改后添加到缓存,然后又做修改

比较 git diff

  • 比较本地和缓存git diff
  • 比较缓存和仓库 git diff --cached [file]
  • 比较本地和仓库 git diff head

重置 git reset

  • 默认 git reset HEAD 重置暂存区 仓库和本地版本不变
  • 参数 HEAD:代表重置的版本号,默认为当前仓库版本,可不写,上一版本为HEAD^ ,也可指定日志版本
  • –hard 参数代表同时重置本地文件
  • –soft 只重置仓库,不重置本地和暂存
  • git reset --hard HEAD 本地、暂存、仓库同时重置为当前仓库版本
  • git reset HEAD^ [文件] 重置暂存、仓库为上一版本
  • git reset --hard HEAD^ 本地、暂存、仓库同时重置为仓库上一版本
  • git reset --soft HEAD^ 回滚仓库版本,本地和暂存不变

拉取 git checkout

  • git checkout [文件名] 获取暂存版本到本地

  • git checkout HEAD [文件名] 获取仓库版本到本地

  • git checkout HEAD^ [文件名] 获取仓库上一版本到本地

  • git checkout HEAD 加文件路径,表示把文件拿到本地,不加路径表示拿版本文件,并创建游离分支

    总结 git checkout 两个作用:切换分支、拉取文件,默认拉取当前暂存,加版本号拉取仓库指定版本

撤销 git revert 、

  • git revert head 回退到上一版本,以进为退,相当于对上一版本的又一次提交,本地暂存都会被更新

重置 git restore

  • git restore --staged 重置暂存
  • git restore 重置本地

删除 git rm

  • git rm --cached runoob.txt 从缓存中删除文件

  • git rm runoob.txt 从缓存和本地中删除文件

  • git rm -rf 文件夹名 从缓存和本地删除文件夹

  • git checkout -b 分支名 切换分支,如果分支名不存在,则新建一个和当前分支一摸一样的分支

分支 git branch

  • git branch 查看分支
  • git checkout 分支名 切换分支
  • git checkout -b 本地分支名 origin/远程分支名 从远程切出新的分支
  • git branch -d 分支名 删除分支

合并 git merge

  • git merge 分支名 合并分支到当前分支
  • git merge origin/master 合并远程分支到本地分支 更新本地、暂存、仓库

变基 git rebase

  • git pull --rebase 远程分支名 把远程的代码合并到本地,然后再提交本次改动版本
  • git rebase master 把master 分支合并到当前分支上,作为一个新的提交基点,然后提交本次改动版本
  • git rebase --abort 放弃执行 rebase 命令
  • git rebase --skip 跳过,会丢弃本次提交的内容,慎用,会丢失提交。
  • git rebase 命令有冲突,修改冲突后执行 add 命令,加入暂存区,然后执行 git rebase --continue 命令完成合并,当提交多个版本进行rebase,并每个版本都有冲突时会进行多次版本冲突解决,执行多次 add 和 continue,这里和merge 有区别,merge 命令只需要解决一次冲突。所以推荐 分支之间尽量用 merge ,解决冲突真的很麻烦。

暂存 git stash

  • git stash save ‘save message’ 暂存文件
  • git stash list 查看暂存
  • git stash show 查看改动信息
  • git stash show stash@{$num} 查看指定改动信息 如:git stash show stash@{1}
  • git stash apply stash@{$num} 应用暂存
  • git stash pop stash@{$num} 弹出暂存到本地
  • git stash drop stash@{$num} 删除暂存
  • git stash clear 删除所有缓存的stash

其它命令

  • git ls-files -s 查看暂存版本
  • git fetch origin 获取远程代码 对本地、暂存、仓库没有任何影响
  • git reflog 查看仓库操作命令
  • git commit --amend -m “提交信息” 修正最后一次提交内容
  • git blame <选项> <文件路径> 以列表形式展示某个文件提交记录
  • git config --global log.date iso8601 设置全局日期格式
  • git config --global log.date “format:%Y-%m-%d %H:%M:%S”

常用场景解决

Git 连接远程仓库

  • 第一步:生成密钥 `ssh-keygen -t rsa -C “邮箱账户” 执行完会让输入一些东西,先不管,默认一路回车。执行完成后会在当前登录用户下生成一个.ssh的文件夹成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。回到github上,进入 Account Settings(账户配置),左边选择SSH Keys,Add SSH Key,title随便填,粘贴在你电脑上生成的key。
  • 第二步: 执行命令验证$ ssh -T git@gitee.com 如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。

把本地项目推送到Git上管理

  • 在github上新建仓库
  • 打开本地根目录执行git init 初始化本地仓库
  • 执行 git remote add origin [远程仓库地址] 将本地仓库和远程仓库关联
  • 执行 git pull origin master --allow-unrelated-histories
  • 执行 git push origin master
$ git init 
$ git remote add origin  [远程仓库地址] 
  • 取消本地和远程的关联 git remote rm origin
  • git push origin [分支名] 把本地分支推上远程,远程没有分支则会新建

合并多次提交

  • git reset --soft HEAD^ 回滚仓库版本,本地和暂存不变
  • 重新提交

解决控制台中文乱码问题

git config --global core.quotepath false
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
// 如果是在windows 环境可以尝试设置环境变量
set LESSCHARSET=utf-8

Git运行优化

垃圾回收

// 这个命令会立即删除不再引用的对象,并且清理掉所有的引用。
git gc --prune=now
// 这个命令会进行更加激进的垃圾收集,可以帮助删除更多的无用对象。
git gc --prune=now --aggressive

// 这个命令会让 Git 自动在每次提交后进行垃圾清理。
git config --global gc.auto 

附带两个学习教程

  • 分布式版本管理工具,学习教程:https://www.liaoxuefeng.com/wiki/896043488029600/898732864121440
  • 菜鸟教程 https://www.runoob.com/git/git-tutorial.html
  • git 手册 https://www.bookstack.cn/read/git-doc-zh/README.md
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值