1. git基本操作

1.1 查看文件

还未被add的更改

  • 使用git status命令,它会显示哪些文件已经被修改并添加到暂存区,以及那些还未被添加的修改。
git status -uno       //不显示未追踪的文件,推荐使用
git status //可以显示未被追踪的文件。很慢!!

查看某一次commit的更改

git show <commit-hash>

查看某一次commit的某个具体文件的更改

git show <commit-hash> -- <file-path>
git show -p <commit-hash>:<file-path>

1.2 查看分支

git branch -vv

这将列出所有本地分支,并在每个分支旁边显示它们各自追踪的远程分支。当前分支会用星号 (*) 标记。

1.3 git stash 命令

git stash 命令在 Git 这个广泛使用的版本控制系统中被用来临时搁置(或称之为“贮藏”)工作目录中的更改,使您可以切换到其他任务。这在您需要快速切换上下文并处理别的事情,但还没准备好提交当前更改时非常有用。下面是一些常用的 git stash 使用方法和选项的快速概览:

1. 临时搁置您的更改

这个命令临时搁置更改,以便您可以处理不同的任务。默认情况下,贮藏的更改包括修改过的跟踪文件暂存区的更改,但不包括未跟踪的文件或被忽略的文件。

git stash
git stash pop

git stash pop可以应用第一个贮藏 相当于是git stash apply stash@{0} + git stash drop stash@{0}

2. 列出贮藏

  • 要查看您贮藏的更改列表,使用:git stash list

3. 应用贮藏

  • 要重新应用最近创建的贮藏的更改,可以运行:
git stash apply
  • 这个命令重新应用更改但保留它们在贮藏列表中。如果您想要应用特定贮藏的更改,可以像这样指定:
git stash apply stash@{n}

4. 删除贮藏

  • 如果在应用之后或决定不再需要某个贮藏,您可以用以下命令将其删除:git stash drop stash@{n}

5. 清除所有贮藏

  • 要移除所有存储的贮藏,使用:git stash clear

1.4 git log查看

下面的命令可以查看每次提交修改的文件

git log --stat

2. 开发新的模块

要拉取远程分支到本地且该分支在本地尚未存在,你可以通过以下步骤来完成:

  1. 执行git fetch以获取远程仓库的最新信息,这个命令会将远程的所有更改(包含新创建的分支)下载到本地,但不会自动合并到你的工作目录中。
  2. 选择你想要拉取的远程分支,并使用以下命令创建一个新的本地分支来跟踪远程分支。在这个例子中,假设要拉取的远程分支名为feature-x
git checkout -b feature-x origin/feature-x

这个命令实际上做了两件事:创建了一个与远程分支同名的新本地分支,并将其设置为跟踪远程分支。

3. 同步main分支的提交

你从 main 分支签出了 feature-branch 分支。

main 分支有了新的提交,现在你想将这些提交同步到 feature-branch

git rebase main

4. git pull 时遇到冲突

  • 使用 git pull --rebase 强制同步
  • 使用 git reset 强制同步
git fetch origin
git reset --hard origin/<远程分支名>

5. 撤销文件更改

5.1 未add的文件(工作目录

使用以下命令将工作目录中的所有更改恢复到上一次提交的状态:

# 高本版使用(推荐
git restore .
# 或者针对单个文件:
git restore <filename>
# 低版本使用
git checkout -- .
# 或者针对单个文件:
git checkout -- <filename>

5.2 已经add的文件

git restore --staged .    //将已经add的文件变为非add 暂存区->工作区,保留更改

5.3 git reset

  • 更改暂存状态git reset <file> 可以用于将文件从暂存区移回工作区,相当于“取消 git add”。
  • 回退提交git reset 也可以回退当前分支到某个特定的提交。
    • git reset --soft <commit>:回退到某个提交,保留所有更改在暂存区。
    • git reset --mixed <commit>(默认):回退到某个提交,保留更改在工作区,但不在暂存区。
    • git reset --hard <commit>:回退到某个提交,丢弃所有的工作区和暂存区更改。

5.4 后悔药

Git提供了一个命令git reflog用来记录你的每一次命令,然后再通过git reset返回该版本

6. 修改提交记录

6.1 把文件提交到上一次的提交:

  1. 添加修改:使用git add .将修改添加到暂存区
  2. 修正上次提交:使用git commit --amend将这些修改添加到上次提交中
  3. 这会打开你的默认文本编辑器,允许你修改提交消息。如果不需要修改提交消息,直接保存并关闭编辑器即可。

7. 修改追踪的远程分支

修改追踪的远程分支:如果你想要更改本地分支对应的远程分支,可以使用 git branch 命令的 --set-upstream-to 选项。假设你的本地分支是 my-branch,你想要让它追踪远程的 origin/new-branch

git branch --set-upstream-to=origin/new-branch my-branch

验证设置:使用 git branch -vv 来确认你的本地分支是否已经追踪到新的远程分支。

8. cherry-pick 其他目录的提交

  1. 添加另一个本地仓库为 remote:
git remote add otherrepo /path/to/other/repo
  1. Fetch 另一个仓库:
git fetch otherrepo       //必须这个名字,不能全局
  1. 查看提交:
git log otherrepo/main

将 main 换成另一个仓库实际的分支名。

  1. Cherry-pick 提交:
git cherry-pick abc1234

Git 操作进阶的更多相关文章

  1. 转 git操作小结

    UNDER MIT LICENSE. 公司几乎所有的项目都是使用 git 仓库来管理代码,以前对 git 只有些肤浅的了解,每次提交代码或者上线的时候总是会提心吊胆,生怕出现一些未知的问题.经过三个月 ...

  2. Intellij 中的git操作 转!

    http://blog.csdn.net/lovesummerforever/article/details/50032937 Git原理以后会分章节介绍,本次主要说一下intellij怎样操作git ...

  3. 使用Git操作GitHub代码入门教程

    GitHub除了网页操作外,还可以借助本地客户端git(或github for windows)来增删修改远程代码.使用Git操作来连接GitHub可以通过Https或SSH方式,使用SSH方式可以免 ...

  4. svn 迁移至git操作手册

    svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...

  5. git操作常用命令

    一.使用git 1.git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己 ...

  6. IDEA环境下GIT操作浅析之二-idea下分支操作相关命令

    上次写到<idea下仓库初始化与文件提交涉及到的基本命令>,今天我们继续写IDEA环境下GIT操作之二--idea下分支操作相关命令以及分支创建与合并. 1.idea 下分支操作相关命令 ...

  7. IDEA环境下GIT操作浅析之一Idea下仓库初始化与文件提交涉及到的基本命令

    目标总括 idea 下通过命令操作文件提交,删除,与更新并推送到github 开源库基本操作idea 下通过命令实现分支的创建与合并操作 idea 下通过图形化方式实现idea 项目版本控制基本操作 ...

  8. Git操作自动触发企业微信机器人webhook

    [本文出自天外归云的博客园] 背景 在git做一些merge或push的操作,我们希望可以自动在企业微信群发送自定义的通知. 服务代码 这里选用php作为网络服务的开发语言,关键的代码如下(githo ...

  9. openvpn显示连接成功但是无法进行git操作

    使用openvpn连接公司内网以进行git操作.以管理员身份运行openvpn gui,一段时间后提示连接成功,右下角图标变成绿色,但是进行git操作,每次都发生失败,提示连接不上.右键点击openv ...

  10. 在Emacs中使用git操作

    在Emacs中使用git操作 1.安装 magit 插件 2.安装后开始使用 3.使用方法: . 使用 M-x:magit-status 打开当前仓库查看基本信息 .使用 ? 键查看magit命令绑定 ...

随机推荐

  1. Tauri新手向 - 基于LSB隐写的shellcode加载器

    此篇是记录自己初次学习tauri开发工具,包含遇到的一些问题以及基本的知识,也给想上手rust tauri的师傅们一些小小的参考.此项目为保持免杀性暂不开源,希望各位师傅多多支持,反响可以的话后续会放 ...

  2. goland Cannot resolve import 'google/api/annotations.proto'

    前言 kratos 项目出现 import 标红,但是 $GOPATH/src/google/api/annotations.proto 已经存在了. 解决 路径:Goland > Settin ...

  3. Golang 入门 : 字符串及底层字符类型

    字符串 基本使用 在 Go 语言中,字符串是一种基本类型,默认是通过 UTF-8 编码的字符序列,当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节,比如中文编码通常需 ...

  4. datasnap的监督功能【2】-管理Session

    1.服务端的Session是有TDSSession定义的.TDSSession提供了许多有用的方法和特性,再开发室取得服务or重要信息. 如Session状态.安排Session独享定时or自动执行工 ...

  5. 【Guava】并发编程ListenableFuture&Service

    MoreExecutors directExecutor ExecutorService executor = Executors.newSingleThreadExecutor(); Settabl ...

  6. CH9121 FTP使用详解

    一.FTP简介: FTP是基于TCP应用层的网络文件传输协议,支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式).采用明文通信不加密. 1.Port模式 ...

  7. Greenplum优化总结

    Greenplum优化总结 GP优化需要了解清理缓存.性能监控.执行计划分析等知识.优化主要包含以下四方面: 表.字段,SQL,GP配置.服务器配置,硬件及节点资源. 一. 清理缓存: #!/usr/ ...

  8. JAVA基础之多线程二期

    一.主线程 public class MainThread { /** * 主线程:指执行main()方法的线程,且该线程是单线程,从上到下执行 * JVM执行main()方法时,JVM会将main( ...

  9. C#/.NET/.NET Core技术前沿周刊 | 第 34 期(2025年4.7-4.13)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  10. macOS系统:新用户更新需谨慎‼️

    发个牢骚:macOS系统的更新频率真的是太快了,基本都是BUG修复.功能更新等等.每更新一次版本,偌大的安装包就要重新将各种格式安装包封装一次.小更新还好,大更新直接会影响到软件APP的使用,尤其是小 ...