当前位置: 首页 > news >正文

Git命令归纳

初始化git

  1. git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中
  2. git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中
  3. git init:先创建一个目录,进入这个目录文件,将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中

三区的概念

  • 工作区:仓库的目录,也就是当前目录文件下,所有修改操作均在这里进行。工作区是独立于各个分支的,也就是所有分支共享同一个工作区。
  • 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区,当对工作区的修改进行git add操作后,修改的文件放入暂存区。暂存区是独立于各个分支的,也就是所有分支共享同一个暂存区。
  • 版本库:存放所有已经提交到本地仓库的代码版本,也就是将暂存区的文件commit后的地方。

本地操作

在本地目录下的文件进行开发

git add file_name:将工作区的XX文件添加到暂存区

git add .:将工作区的所有文件添加至暂存区
git commit -m "info":将暂存区的内容提交到当前分支

状态操作

git status:查看分支状态
git diff file_name:查看file_name文件相对于暂存区做了哪些修改

日志操作

git log:查看当前分支的所有版本

git log --pretty=oneline:单行查看当前分支的所有版本
git reflog:查看HEAD指针的移动历史(包括回滚的版本)

git reflog --pretty=oneline:单行查看HEAD指针的移动历史
git reset --hard HEAD^或者git reset --hard HEAD~:将代码库回滚到上一个版本

git reset --hard HEAD^^:往上回滚两次,以此类推
git reset --hard HEAD~100:往上回滚100个版本
git reset --hard 版本号:回滚到某一特定版本

恢复操作

当在工作区编写的代码很烂时,将工作区的修改恢复到暂存区的内容或者撤销工作区的修改时:

git restore <filename>
强行将暂存区的修改拉回到工作区:当觉得暂存区里的代码有错误时,需要拉回工作区进行修改时:

git restore --staged <filename>

分支操作

git branch branch_name:创建branch_name分支
git checkout -b branch_name:创建一个名为branch_name的分支,并跳转到此分支
git branch:查看所有分支和当前所处分支
git checkout branch_name:切换到branch_name分支
git merge branch_name:将分支branch_name合并到当前分支
git checkout -d branch_name:删除本地仓库的branch_name分支

本地与云端的操作

第一步

git remote add origin git@git.acwing.com:xxx/XXX.git:将本地仓库关联到远程仓库

本地到云端 push操作
将本地分支推送到云端
如果你是独立开发(或者团队开发中只用到一个分支),一般只涉及一个分支,第一种方式后续操作会更简单

1、git push -u origin branch_name (或者 git push --set-upstream)

用途:将当前分支推送到远程仓库,并且设置本地branch_name分支与远程branch_name分支的关联(或者叫做建立本地分支对云端某个分支的追踪)。

解释:-u 是 –set-upstream 的简写。

在第一次推送本地分支时,使用 -u 会建立一个跟踪关系,这样在以后使用 git push 或 git pull 时,不需要指定远程仓库和分支名。如果独自开发,由于只有一个分支(当前的master分支),只需要输入git push -u。

2、git push origin branch_name

用途:将本地的指定分支推送到远程仓库,不会设置远程追踪。

解释:这个命令会把 branch_name 分支推送到远程origin仓库,但不会建立跟踪关系。即使你以后使用 git push 或 git pull,你仍然需要明确指定远程仓库和分支名。


3、git push -d origin branch_name:删除远程仓库的branch_name分支

云端到本地的pull操作
首先,默认情况下,从本地git pull的内容都是云端master(或main)分支的内容。所以在一开始,也就是pull之前,我们就要规避掉所有可能存在的风险:

  1. 在push阶段,就要建立本地与云端相同分支之间的关联;
  2. 在pull之前,执行下列操作:

git fetch:从远程仓库抓取(fetch)最新的改动(代码、提交记录等),但不会自动合并。执行此命令,可以先查看云端最新的代码,再决定要不要pull。

git pull:相当于git fetch+git merge,从远程仓库获取最新的代码并合并到当前分支。

如果本地dev分支未与云端dev分支建立关联
这样它并不会自动追踪 origin/dev,除非你手动设置。
这时候如果你执行:
git pull
git 会报错,像这样:

fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin dev

提醒你将本地分支与云端分支建立关联;或者执行git pull origin branch_name,将远程仓库的branch_name分支与本地仓库的当前分支合并

当你想对本地和云端的某个分支(可以不同名)建立关联,执行下面的命令:
git branch -u origin/branch_name1 branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应

git stash 是 Git 里非常实用的一个命令,它的作用可以一句话概括:

“把你当前的修改先临时保存起来,让工作区回到干净状态。”

什么时候会用到 git stash?
比如你正在开发功能,但突然需要:

  • 切换到其他分支修一个紧急 bug
  • 拉代码、合并别人提交,但本地有改动冲突
  • 暂时不想提交当前改动,但又不想丢掉它

这时候就可以用:

git stash
Git 会把你当前的 修改内容(工作区和暂存区)保存起来,然后让你工作区“看起来像刚刚 git checkout 完的一样”。

常用命令速查:

命令作用
git stash保存当前改动(默认名)
git stash save“备注说明” 保存时加上备注
git stash list查看所有 stash 的记录
git stash pop恢复最近的一次改动并移除它
git stash apply将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
git stash drop删除栈顶的 stash
git stash clear清除所有 stash

注意:
git stash 不会保存 未追踪的文件(untracked)和 .gitignore 的内容,除非你用:

git stash -u 包括 untracked
git stash -a 所有内容,包括忽略文件
总结一句话:
git stash 就像 Git 里的“临时背包”,先把当前改动塞进去,等会儿再拿出来接着干!

总结

其实git操作并没这么复杂,只涉及到很简单的流程:

当你是开发一个新项目时
第一步

mkdir dir_name:本地创建目录文件

第二步
云端(GitLab或GitHub等)创建一个相同名字的project或repo

第三步

git remote add origin git@git.acwing.com:xxx/XXX.git:将本地仓库关联到远程仓库

第四步
本地目录中进行开发:

git push -u origin branch_name:建立本地分支与云端分支的关联
vim file_name
git add .
git commit -m "..."
git push

当你对已开发项目进行修改时
第一步

git checkout branch_name:跳到你的分支上(一般情况一开始就是在自己的分支上)

第二步

git pull:拉取代码最新进展
vim file_name
git add .
git commit -m "..."
git push

相关文章:

  • 国产之光DeepSeek架构理解与应用分析04
  • 43.[前端开发-JavaScript高级]Day08-ES6-模板字符串-展开运算符-ES7~ES11
  • 免费多平台运行器,手机畅玩经典主机大作
  • 一个改善Entity Framework异常处理和错误信息的开源项目
  • 网络--应用层自定义协议与序列化
  • 捋一遍Leetcode【hot100】的二叉树专题
  • leetcode0113. 路径总和 II - medium
  • 6.8 Python定时任务实战:APScheduler+Cron实现每日/每周自动化调度
  • 重读《人件》Peopleware -(7)Ⅰ管理人力资源Ⅵ-莱特瑞尔 Laetrile
  • 3. 在 2节的基础上 ,实现launch文件简单编写
  • 遨游科普:防爆平板是指什么?有哪些应用场景?
  • 【EDA软件】【设计约束和分析操作方法】
  • ai学习中收藏网址【1】
  • Python学习之Seaborn
  • Redis 的持久化机制(RDB, AOF)对微服务的数据一致性和恢复性有何影响?如何选择?
  • CiteULike 数据集介绍与下载指南
  • docker底层原理
  • 使用Redis5.X部署一个集群
  • FPGA——基于DE2_115实现DDS信号发生器
  • 2024期刊综述论文 Knowledge Graphs and Semantic Web Tools in Cyber Threat Intelligence
  • 龙登高谈近世的基层治理及制度变迁
  • 人民日报和音:书写周边命运共同体建设新篇章
  • 海南一男子涨潮时赶海与同伴走散,警民协同3小时将其救上岸
  • 中央和国家机关工委建立健全整治形式主义为基层减负长效机制
  • 马上评丨黄仁勋到访中国,一个重要节点和一句大实话
  • 二手服装“批发”市集受到年轻人追捧,是哪一股潮流在推动?