Git命令这样用,代码管理轻松搞定

在日常开发中,Git命令是每个程序员必备的技能。但是面对几十个Git命令,很多同学总是记不住、用不对。今天就来整理一份最实用的Git命令清单,让你的代码管理变得轻松高效。

基础配置命令

让Git认识你

在开始使用Git之前,先让Git知道你是谁:

# 设置用户名和邮箱(全局配置)
git config --global user.name "张三"
git config --global user.email "zhangsan@example.com" # 查看当前配置
git config --list # 只为当前项目设置(局部配置)
git config user.name "张三"
git config user.email "zhangsan@company.com"

常用的其他配置:

# 设置默认编辑器
git config --global core.editor "code --wait" # 设置别名,简化命令
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit # 现在可以使用简化命令
git st # 等同于 git status
git co # 等同于 git checkout

仓库初始化和克隆

开始你的Git之旅

创建新仓库

# 在当前目录初始化Git仓库
git init # 在指定目录创建新仓库
git init my-project # 创建裸仓库(用于服务器)
git init --bare my-repo.git

克隆远程仓库

# 克隆远程仓库
git clone https://github.com/user/repo.git # 克隆到指定目录
git clone https://github.com/user/repo.git my-local-name # 只克隆最新的提交(浅克隆)
git clone --depth 1 https://github.com/user/repo.git # 克隆指定分支
git clone -b develop https://github.com/user/repo.git

文件状态管理

掌控代码变更

Git文件有四种状态:

查看文件状态

# 查看工作区状态
git status # 简化显示
git status -s # 查看具体的文件差异
git diff # 查看暂存区的差异
git diff --staged

添加文件到暂存区

# 添加单个文件
git add filename.txt # 添加多个文件
git add file1.txt file2.txt # 添加所有修改的文件
git add . # 添加所有txt文件
git add *.txt # 交互式添加(选择性添加文件的部分内容)
git add -p

撤销操作

# 撤销工作区的修改
git checkout -- filename.txt # 撤销暂存区的文件(保留工作区修改)
git reset HEAD filename.txt # 撤销最后一次提交(保留文件修改)
git reset --soft HEAD~1 # 撤销最后一次提交(丢弃文件修改)
git reset --hard HEAD~1

提交代码命令

记录你的每一次变更

基本提交操作

# 提交暂存区的文件
git commit -m "提交信息" # 添加文件并提交(跳过git add)
git commit -am "提交信息" # 修改最后一次提交信息
git commit --amend -m "新的提交信息" # 向最后一次提交添加文件
git add forgotten-file.txt
git commit --amend --no-edit

规范化提交信息

# 功能开发
git commit -m "feat: 新增用户登录功能" # Bug修复
git commit -m "fix: 修复密码验证逻辑错误" # 文档更新
git commit -m "docs: 更新API使用说明" # 代码重构
git commit -m "refactor: 优化数据库查询性能" # 样式调整
git commit -m "style: 统一代码缩进格式"

详细提交信息

# 包含详细描述的提交
git commit -m "fix: 修复用户注册邮箱验证问题 - 修复邮箱格式验证正则表达式
- 添加邮箱重复性检查
- 优化错误提示信息显示 Closes #123"

分支管理命令

并行开发的利器

查看分支

# 查看本地分支
git branch # 查看远程分支
git branch -r # 查看所有分支
git branch -a # 查看分支详细信息
git branch -v

创建和切换分支

# 创建新分支
git branch feature-login # 切换分支
git checkout feature-login # 创建并切换分支(一步完成)
git checkout -b feature-login # 使用新语法创建并切换分支
git switch -c feature-login # 切换到上一个分支
git checkout -

分支合并和删除

# 合并分支(先切换到目标分支)
git checkout main
git merge feature-login # 删除本地分支
git branch -d feature-login # 强制删除分支
git branch -D feature-login # 删除远程分支
git push origin --delete feature-login

远程仓库操作

与团队协作的桥梁

查看远程仓库

# 查看远程仓库
git remote # 查看远程仓库详细信息
git remote -v # 查看特定远程仓库信息
git remote show origin

添加和删除远程仓库

# 添加远程仓库
git remote add origin https://github.com/user/repo.git # 修改远程仓库地址
git remote set-url origin https://github.com/user/new-repo.git # 删除远程仓库
git remote remove origin

推送和拉取代码

# 推送到远程仓库
git push origin main # 首次推送并建立跟踪关系
git push -u origin main # 推送所有分支
git push origin --all # 拉取远程代码
git pull origin main # 获取远程代码但不合并
git fetch origin # 强制推送(谨慎使用)
git push --force origin main

查看历史记录

回顾代码演进历程

基本日志查看

# 查看提交历史
git log # 单行显示提交历史
git log --oneline # 图形化显示分支历史
git log --graph --oneline # 查看最近3次提交
git log -3 # 查看指定作者的提交
git log --author="张三"

高级日志筛选

# 查看指定时间范围的提交
git log --since="2024-01-01" --until="2024-01-31" # 查看包含特定关键词的提交
git log --grep="登录" # 查看指定文件的修改历史
git log -- src/main.js # 查看文件的详细修改内容
git log -p src/main.js # 查看提交统计信息
git log --stat

暂存工作状态

临时保存未完成的工作

基本stash操作

# 暂存当前工作
git stash # 带描述的暂存
git stash push -m "正在开发登录功能" # 查看stash列表
git stash list # 恢复最新的stash
git stash pop # 应用指定的stash
git stash apply stash@{0} # 删除stash
git stash drop stash@{0}

高级stash操作

# 只暂存已跟踪的文件
git stash --keep-index # 包含未跟踪的文件
git stash -u # 交互式暂存
git stash -p # 从stash创建分支
git stash branch feature-temp stash@{0}

实用技巧命令

提高工作效率的秘诀

文件操作

# 删除文件
git rm filename.txt # 重命名文件
git mv oldname.txt newname.txt # 停止跟踪文件但保留本地文件
git rm --cached filename.txt # 查看文件内容
git show HEAD:filename.txt

标签管理

# 创建标签
git tag v1.0.0 # 创建带描述的标签
git tag -a v1.0.0 -m "版本1.0.0发布" # 查看标签列表
git tag # 推送标签到远程
git push origin v1.0.0 # 推送所有标签
git push origin --tags # 删除标签
git tag -d v1.0.0
git push origin --delete v1.0.0

搜索和定位

# 在代码中搜索
git grep "function" # 查找引入bug的提交
git bisect start
git bisect bad HEAD
git bisect good v1.0.0 # 查看文件的每一行是谁修改的
git blame filename.txt # 查看两个提交之间的差异
git diff commit1..commit2

常见问题解决

遇到问题不慌张

提交相关问题

# 合并多个提交为一个
git rebase -i HEAD~3 # 修改历史提交信息
git rebase -i HEAD~3
# 将pick改为reword # 撤销merge
git reset --hard HEAD~1 # 查找丢失的提交
git reflog
git cherry-pick commit-hash

冲突解决

# 查看冲突文件
git status # 手动解决冲突后
git add 冲突文件
git commit # 放弃merge
git merge --abort # 使用工具解决冲突
git mergetool

Git命令速查表

常用命令一览

功能 命令 说明
初始化 git init 初始化仓库
克隆 git clone <url> 克隆远程仓库
状态 git status 查看工作区状态
添加 git add . 添加所有文件到暂存区
提交 git commit -m "msg" 提交代码
推送 git push origin main 推送到远程分支
拉取 git pull origin main 拉取远程代码
分支 git checkout -b <name> 创建并切换分支
合并 git merge <branch> 合并分支
日志 git log --oneline 查看提交历史

总结

掌握Git命令不是一天的事情,但是通过系统的学习和不断的实践,你会发现Git其实并没有想象中那么复杂。记住这些关键点:

  1. 从基础开始:先掌握add、commit、push等基本命令
  2. 理解工作流:明白工作区、暂存区、本地仓库的关系
  3. 多加练习:在实际项目中不断使用和总结
  4. 善用别名:为常用命令设置别名,提高效率

记住,Git是工具,不是障碍。掌握了这些命令,你的代码管理将会变得游刃有余!


觉得这篇文章对你有帮助吗?欢迎点赞关注推荐给更多的小伙伴!

Git命令这样用,代码管理轻松搞定的更多相关文章

  1. 几行c#代码,轻松搞定一个女大学生

    几行c#代码,轻松搞定一个女大学生 的作业... 哈哈,标题党了哈,但是是真的,在外面敲代码,想赚点外快,接到了一个学生的期末考试,是一个天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找 ...

  2. git 命令合并分支代码

    git 命令合并分支代码 对于复杂的系统,我们可能要开好几个分支来开发,那么怎样使用git合并分支呢? 合并步骤: 1.进入要合并的分支(如开发分支合并到master,则进入master目录) git ...

  3. 如何通过Git命令行把代码提交到github上

    1.http://www.cnblogs.com/leesf456/p/5169765.html   参考博客 背景:最近入手了mac,看见mac上的大神都是在用git命令行推代码,我很羡慕有木有,好 ...

  4. 如何使用Git命令克隆仓库代码

    今天我的电脑装了新系统,刚装了Git到电脑上,突然有一个大胆的想法,以后不适用可视化工具了. 要逐步锻炼我的命令的操作能力,不能太依赖可视化工具. 今天先记录一下如何使用git命令克隆仓库代码 git ...

  5. GIT命令行统计代码提交行数

    项目中遇到写报告的时候要反馈某个人或者某个功能的代码量,又没有集成CI这些插件,可以简单的用GIT命令统计下代码提交量: --统计某个人的提交代码 git log --author="old ...

  6. 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)

    微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...

  7. 【转】轻松搞定FTP之FlashFxp全攻略

    转载网址:http://www.newhua.com/2008/0603/39163.shtml 轻松搞定FTP之FlashFxp全攻略 导读: FlashFXP是一款功能强大的FXP/FTP软件,融 ...

  8. 【微服务】之三:从零开始,轻松搞定SpringCloud微服务-配置中心

    在整个微服务体系中,除了注册中心具有非常重要的意义之外,还有一个注册中心.注册中心作为管理在整个项目群的配置文件及动态参数的重要载体服务.Spring Cloud体系的子项目中,Spring Clou ...

  9. 【微服务】之七:轻松搞定SpringCloud微服务-API权限控制

    权限控制,是一个系统当中必须的重要功能.张三只能访问输入张三的特定功能,李四不能访问属于赵六的特定菜单.这就要求对整个体系做一个完善的权限控制体系.该体系应该具备针区分用户.权限.角色等各种必须的功能 ...

  10. 基于 CODING 轻松搞定持续集成

    点击观看视频教程 带你一步一步搞定 CODING 持续集成 持续集成加速软件交付 持续集成这个概念是由 Grady Booch 在 1991 年首次提出,随后成为了 DevOps 的核心实践之一.持续 ...

随机推荐

  1. 一条 SQL 语句在 MySQL 中的执行过程

    一条 SQL 语句在 MySQL 中的执行过程 当一条 SQL 语句被提交到 MySQL 时,它会经历多个步骤,包括解析.优化.执行等.以下以 SELECT 语句为例,详细描述整个执行流程. 1. 客 ...

  2. wordpress插件开发时如何通过js调用图库/媒体选择器的问题

    效果: 原文地址: wordpress插件开发通过js调用图库/媒体选择器的问题 - 搜栈网 (seekstack.cn)

  3. QQ收藏self_xss漏洞复现(娱乐)

    漏洞影响范围:QQ安卓版本 <=V8.8.5.5570 漏洞存在位置:QQ我的收藏功能 我的qq版本 漏洞复现 1.点击头像>>我的收藏 2.点击右上角:"+" ...

  4. XXL-MQ v1.3.0 | 分布式消息队列

    Release Notes 1.[增强]消费者分组属性 "group" 支持为空,为空时自动赋值UUID,方便实现多分组广播消费: 2.[增强]海量数据堆积:消息数据存储在DB中, ...

  5. 《原型设计工具深度解析:Axure到墨刀的实战指南》

    原型设计工具深度解析:从Axure到墨刀的实战应用 项目背景 "Shou学"作为信息学院本科必修课指南平台,需通过高保真原型实现课程导航.知识点拆解.习题模拟等核心功能.本文结合& ...

  6. 动态DP(DDP)

    动态DP是树上的.带修改的DP.修改操作一般而言用树剖加线段树加广义矩阵乘法来维护,复杂度可以达到 \(n\log^2 n\). 叫DDP是不知从哪里延续下来的一种神秘简称. P4719 [模板]动态 ...

  7. golang map 和 interface 的一些记录

    golang的map读取是不需要判断key是否存在的,不存在的key会返回默认值. 如果map的value是interface,那么interface是需要先进行类型转换的,非要求类型的转换,得到结果 ...

  8. Django踩坑之在Django中创建项目时ImportError: No module named django.core

    不使用django-admin.py,而是使用django-admin.exe 具体操作如下 django-admin.exe startproject learning_log . ok,没有提示错 ...

  9. Median of Two Sorted Arrays---LeetCode进阶路④

    题目描述 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of th ...

  10. linux里面的Crontab 定时任务

    一.基本概念      1.1. 概念:crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,和 Windows 中的计划任务有些类似. 我们经常使用的是crontab ...