git操作

本文最后更新于 2025-06-05 12:57:18

工作方式

1、工作区 -> 暂存区

  • 使用git add命令将工作区中的修改添加到暂存区

2、暂存区 -> 版本库

  • 使用git commit命令将暂存区中的修改提交到版本库

3、版本库 -> 远程仓库

  • 使用 git push 命令将本地版本库的提交推送到远程仓库

4、远程仓库 -> 本地版本库

  • 使用 git pull git fetch 命令从远程仓库获取更新

  • 工作区是本地计算机上的项目目录,在这里进行文件的创建、修改和删除操作。工作区包含了当前项目的所有文件和子目录
  • 暂存区是一个临时存储区域,它包含了即将被提交到版本库中的文件快照,在提交之前,可以选择性地将工作区中的修改添加到暂存区
  • 版本库包含项目的所有版本历史记录,每次提交都会在版本库中创建一个新的快照,这些快照是不可变的,确保了项目的完整历史记录
    1. 版本库分为本地版本库远程版本库。这里主要指本地版本库。
    2. 本地版本库存储在 .git 目录中,它包含了所有提交的对象和引用

常用命令

第一步

1
2
3
4
# 1 步
# 初始化
git init # 初始化仓库
git clone [url] # 拷贝一份远程仓库,也就是下载一个项目

第二步

1
2
3
4
5
# 2 步
#提交与修改
git add . / [file1] [file2] / [dir] # 将 所有文件/某些文件/文件夹 添加到暂存区
git status # 查看仓库当前的状态,显示有变更的文件
git reset [--soft | --mixed | --hard] [HEAD] # 回退版本

第三步

1
2
3
4
5
6
7
8
9
10
11
12
13
# 3 步
git commit -m "Commit message" # 将暂存区的更改提交到本地版本库
git log # 查看提交历史
git diff # 查看工作区和暂存区之间的差异
git diff --cached # 查看暂存区和最后一次提交之间的差异

git remote add <remote_name> <remote_url> # 添加远程版本库
git remote -v # 查看当前仓库中配置的远程仓库列表以及它们的 URL
git remote show [remote] # 显示某个远程仓库的信息
git remote rename old_name new_name # 修改仓库名
git remote set-url <remote_name> <new_url> # 修改指定远程仓库的 URL
git remote remove <remote_name> # 从当前仓库中删除指定的远程仓库,或 git remote rm name
git push origin --delete master # 远程仓库中的 master 分支将被永久删除
  • git status通常使用 -s 参数来获得简短的输出结果,一般在前面会有字母的组合,AM 状态的意思是这个文件在将它添加到缓存之后又有改动(A 在暂存区 M修改了,应该是吧)

  • reset

    1. --mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变

      1
      2
      3
      git reset HEAD^            # 回退所有内容到上一个版本  
      git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本
      git reset 052e # 回退到指定版本
    2. --soft参数用于回退到某个版本

      1
      git reset --soft HEAD~3   # 回退上上上一个版本 
    3. --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交(慎用,它会删除回退点之前的所有信息)

      1
      2
      3
      git reset --hard HEAD~3  # 回退上上上一个版本  
      git reset –hard bae128 # 回退到某个版本回退点之前的所有信息。
      git reset --hard origin/master # 将本地的状态回退到和远程的一样
    4. HEAD 说明:

      • HEAD 表示当前版本

      • HEAD^ 上一个版本

      • HEAD^^ 上上一个版本

      • HEAD^^^ 上上上一个版本

      • 以此类推…

      可以使用 ~数字表示

      • HEAD~0 表示当前版本
      • HEAD~1 上一个版本
      • HEAD^2 上上一个版本
      • HEAD^3 上上上一个版本
      • 以此类推…
  • git pull 其实就是 git fetchgit merge 的简写,先从远程仓库获取最新的提交记录,然后将这些提交记录合并到当前的分支中。


远程早已更新产生问题

1
2
3
# 4 步
git push <远程主机名> <本地分支名>:<远程分支名> # 如果本地分支名与远程分支名相同,则可以省略冒号及其后面内容
git push -f origin main # 强推 , 可能丢失他人代码,直接覆盖远程仓库分支
1
2
3
4
5
6
7
8
9
10
11
12
13
# 远程分支已更新(如他人推送了新代码),而本地分支仍基于旧的提交
# (1)
git fetch origin # 从名为 origin 的远程仓库获取所有更新
git fetch origin main # 只获取远程的 main 分支
git fetch --all # 获取所有已配置远程仓库的更新
git fetch -p # 或 git fetch --prune 如果远程分支被删除,本地仍会保留记录。使用命令清理
# (2)
git merge origin/main # 将origin远程 main 分支合并到当前分支,执行完fetch之后要执行本操作进行合并

git branch -r # 列出所有远程分支
git pull [远程仓库名] [分支名] # 从远程获取代码并合并本地的版本
# 举例:将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并(如果远程分支是与当前分支合并,则冒号后面的部分可以省略)
git pull origin master:brantest

其他操作

1. 日志:

1
2
3
4
git log -n <number> # 限制显示的提交数
git log --since="2024-01-01" # 显示自指定日期之后的提交
git log --until="2024-07-01" # 显示指定日期之前的提交
git log --author="Author Name" # 只显示某个作者的提交

2. 撤销

1
2
git revert <commit哈希值>/[HEAD] # 创建一个新的提交来抵消指定提交的修改,而不是直接删除历史记录,
git reset # 直接删除历史记录,无法回退,一般不用
  • 举例:
1
2
git revert 6d0f3b  # 使用提交哈希的前几位(无需完整哈希)
git revert HEAD~3..HEAD # 撤销最近4次提交(HEAD~3 到 HEAD)

3. 切换/创建分支

1
2
3
4
5
6
git checkout <branch-name> # 从当前分支切换到指定的分支 <branch-name>
git checkout -b <new-branch-name> # 创建一个新分支 <new-branch-name> 并立即切换到新创建的分支
git checkout - # 快速切换回前一个分支,无需记住分支名称
git checkout -- <file> # 将工作区指定文件 <file> 恢复到最近一次提交时的状态,丢弃所有未提交的更改

git checkout -b <分支名> origin/<分支名> # 快速建立联系

4. 查看分支

1
2
3
4
5
6
7
8
9
10
11
git branch # 查看本地分支
git branch -r # 查看远程分支 或 --remotes
git branch -a # 查看本地和远程分支 或 --all
git branch --show-current # 查看当前分支 Git 2.22+ 版本支持
git branch -vv # 查看分支关联关系

git branch --merged # 查看哪些分支已合并到当前分支
git branch --no-merged # 查看哪些分支尚未合并到当前分支
git branch -m master main # 重命名本地 master 为 main


5. 查看分支差异

1
2
git log branch1..branch2  # 显示 branch2 有但 branch1 没有的提交
git diff branch1..branch2 # 显示两个分支的文件差异

git操作
https://one-and-one-fourth.github.io/2025/06/05/中间件/git/git操作/
作者
一又四分之一
发布于
2025-06-05 11:17:08
更新于
2025-06-05 12:57:18
许可协议