ToB企服应用市场:ToB评测及商务社交产业平台

标题: Git常见利用 [打印本页]

作者: 曂沅仴駦    时间: 2025-1-7 16:27
标题: Git常见利用
一、速查表格

命令作用git add <文件名>
将文件添加到暂存区,可以使用 . 将所有修改的文件添加git commit -m “提交信息”将暂存区的文件提交到本地堆栈git branch -d <分支名>
删除本地分支,使用 -D 逼迫删除git switch -c <新分支名基于当前分支创建新分支并切换git stash
暂时保存当前未提交的更改git stash
pop将暂存的更改恢复到工作目录git fetch从长途堆栈获取最新的提交、分支和标签信息git merge dev将dev分支归并到当前分支git rm -r --cached <文件夹路径>将指定文件夹从 Git 跟踪中删除,但保留本地文件夹git push origin <分支名>
推送代码到长途堆栈git push origin --delete <分支名>删除长途堆栈指定分支 二、常见利用

以下是一些常见的 Git 利用及其用途:
1. 配置 Git 用户信息

  1. git config --global user.name "你的名字"
  2. git config --global user.email "你的邮箱"
复制代码
2. 初始化堆栈

  1. git init
复制代码
在当前目录下初始化一个新的 Git 堆栈。
3. 克隆堆栈

  1. git clone <仓库地址>
复制代码
从长途堆栈克隆一个项目到本地。
4. 查看当前状态

  1. git status
复制代码
显示工作目录和暂存区的状态,查看哪些文件被修改或准备提交。
5. 添加文件到暂存区

  1. git add <文件名>
复制代码
将文件添加到暂存区,可以使用 . 将所有修改的文件添加。
6. 提交更改

  1. git commit -m "提交信息"
复制代码
将暂存区的文件提交到本地堆栈。
7. 查看提交记载

  1. git log
复制代码
显示提交汗青,git log
--oneline 简化输出。
8. 创建分支

  1. git branch <分支名>
复制代码
创建一个新的分支。
9. 切换分支

  1. git checkout <分支名>
复制代码
切换到指定分支。
10. 归并分支

  1. git merge <分支名>
复制代码
将指定分支的更改归并到当前分支。
11. 删除分支

  1. git branch -d <分支名>
复制代码
删除本地分支,使用 -D 逼迫删除。
12. 推送代码到长途堆栈

  1. git push origin <分支名>
复制代码
将本地分支的更改推送到长途堆栈。
13. 拉取长途堆栈的更改

  1. git pull
复制代码
获取并归并长途堆栈的更改。
14. 克隆特定分支

  1. git clone -b <分支名> <仓库地址>
复制代码
克隆长途堆栈中特定的分支。
15. 创建并切换到新分支

  1. git checkout -b <分支名>
复制代码
创建并直接切换到新的分支。
16. 暂存更改(stash)

  1. git stash
复制代码
暂时保存当前未提交的更改。
17. 恢复暂存的更改

  1. git stash
  2. pop
复制代码
将暂存的更改恢复到工作目录。
18. 重置本地修改

  1. git reset --hard
复制代码
将所有本地修改的文件恢复到上次提交时的状态。
19. 查看长途堆栈

  1. git remote -v
复制代码
显示当前配置的长途堆栈地址。
20. 添加长途堆栈

  1. git remote add origin <仓库地址>
复制代码
将长途堆栈地址添加到本地堆栈。
三、进阶用法

1. 归并最近两次提交

方式一 rebase

Step1 启动交互式 rebase
运行以下命令进入交互式 rebase 界面:
  1. git rebase -i HEAD~2
  2. git rebase -i 要保留的前一个CommitID
  3. git rebase -i 要保留的CommitID^
复制代码
HEAD~2 体现要利用最近的两次提交。
Step2 修改 pick 为 squash(或 fixup)
在文本编辑器中,会显示类似如下的两行:
  1. pick <commit-hash-1> First commit message
  2. pick <commit-hash-2> Second commit message
复制代码
fixup 或 squash(两者都用于归并提交,但 squash 会保留归并提交的日志消息,而 fixup 会丢弃它,只保留第一个提交的日志消息)
将第二行的 pick 改为 squash(或简写 s),如下所示:
  1. pick <commit-hash-1> First commit message
  2. squash <commit-hash-2> Second commit message
复制代码
这会将第二次提交归并到第一次提交。
Step3 编辑提交信息
保存并退出编辑器后,Git 会要求你编辑归并后的提交信息。你可以保留或修改提交信息,然后保存并退出。
Step4 推送更改
如果你已经将这些提交推送到长途堆栈,而且想要同步这些更改,需要使用 --force(或简写 -f)推送:
  1. git push origin <分支名>
  2. --force
复制代码
方式二 reset

提交汗青如下:
  1. 提交5 CommitHash5
  2.       提交5信息
  3. 提交4 CommitHash4
  4.       提交4信息
  5. 提交3 CommitHash3
  6.       提交3信息
  7. 提交2 CommitHash2
  8.       提交2信息
  9. 提交1 CommitHash1
  10.       提交1信息
复制代码
需求是将提交3、提交4、提交5归并为一个提交
Step1 实验回退
先将版本回退到提交且在回退时保留工作区的变更
  1. git reset CommitHash2
复制代码
Step2 提交代码
  1. git add 需要提交的文件
  2. git commit "新的提交信息"
复制代码
四、指令详解

1. git reset

1.1 根本作用

git reset 是 Git 中非常强大的命令,用于将当前分支的提交汗青、暂存区(staging area)或工作目录(working directory)重置为指定的状态。它主要有以下几种作用:
①重置提交汗青(改变分支指向)
git reset 可以改变当前分支的 HEAD 指向到某个特定的提交。这意味着它可以取消某些提交,将分支指向之前的某个提交。
②修改暂存区
通过 git reset,你可以将某些文件从暂存区(staging area)中移除,但这些文件的内容不会被修改。这在你已经 git add 了文件,但想撤销这个利用时非常有用。
③修改工作目录
git reset 也可以更改工作目录中的文件状态,将文件恢复到之前的状态(即删除未提交的修改)。
1.2 利用模式

git reset 有三种常用模式,主要区别在于它们对 提交汗青暂存区工作目录 的影响:
  1.    git reset --soft HEAD~1  # 撤销最近的一次提交
复制代码
  1. git reset --mixed HEAD~1
复制代码
  1.    git reset --hard
  2. HEAD~1
复制代码
1.3 用法场景

1.4 注意事项


2. git rebase

git rebase 是 Git 中用于重写提交汗青的强大工具,主要用来将一个分支的更改“移动”到另一个分支的底子之上。它通常用于保持线性的提交汗青,制止频仍出现分支归并时的 “merge commit”。
2.1 根本原理

git rebase 的根本思想是:

假设有两个分支,feature 和 main,你想将 feature 的工作“重新定位”到 main 的最新提交之上,这时就可以使用 git rebase。
2.2 应用场景


2.3 根本的rebase

将分支变基到另一分支上
最常见的用法是将一个分支的更改移动到另一个分支的最新状态之上。例如,你正在 feature 分支开发,而 main 分支有了新的更新,你盼望将 feature 分支的工作基于最新的 main 分支。
  1. git checkout feature       # 切换到 feature 分支
  2. git rebase main            # 将 feature 分支变基到 main 分支
复制代码
发生的过程:

这种利用相称于“更新”了 feature 分支,基于 main 最新的代码,且不产生额外的归并提交。
2.4 交互式rebase

git rebase -i(交互式 rebase)允许你对一系列提交进行更复杂的利用,如修改、删除、归并提交等。这对整理提交汗青非常有用。
  1. git rebase -i <commit>
复制代码
交互式 Rebase 利用的常见步调:
交互式 rebase 常用于清理汗青,比如将多次小提交归并成一次,或者修正提交信息,确保汗青整齐。

2.4 冲突处置处罚

冲突发生
当 rebase 的过程中,Git 可能会遇到归并冲突。此时 Git 会停息并提示你解决冲突。
例如:
  1. Auto-merging file.txt
  2. CONFLICT (content): Merge conflict in file.txt
复制代码
解决冲突
当冲突发生时,你需要手动编辑冲突文件并解决冲突。然后使用以下命令继承 rebase:
  1. git add <conflicted-file>  # 标记冲突文件已解决
  2. git rebase --continue      # 继续 rebase
复制代码
如果你盼望放弃此次 rebase,可以使用:
  1. git rebase --abort         # 取消 rebase 并回到操作前的状态
复制代码
跳过冲突
如果你不想解决冲突,而且想跳过有冲突的提交,可以使用:
  1. git rebase --skip
复制代码

2.5 区别


选择场景:

2.6 总结


3. git revert

git revert 是 Git 中用于撤销已提交的更改的命令。与 git reset 不同,git revert 并不会直接修改提交汗青,而是创建一个新的提交,专门用于撤销之前的更改。以下是 git revert 的一些常见用法:
3.1 撤销单个提交

要撤销某个特定提交,可以使用以下命令:
  1. git revert <commit-hash>
复制代码
此中,<commit-hash> 是要撤销的提交的哈希值(通过 git log
可以查看提交汗青和哈希值)。
这将创建一个新的提交,内容与指定提交的更改相反,从而撤销该提交。
3.2 撤销多个提交

你可以通过指定一段提交汗青来撤销多个提交。格式如下:
  1. git revert <start-commit>^..<end-commit>
复制代码
这会逐个撤销范围内的每个提交,并为每次撤销天生一个新的提交。
3.3 撤销最近的一次提交

如果你想撤销最近的一次提交,可以轻巧地使用 HEAD 指针:
  1. git revert HEAD
复制代码
这会撤销你最新的提交。
3.4 使用 git revert 制止冲突

如果你想在撤销提交时跳过交互式的冲突解决(在一些环境下你可能并不关心),可以使用 --no-edit 或者 --no-commit 选项:

例如:
  1. git revert HEAD
  2. --no-edit
复制代码
3.5 撤销已推送的提交

如果你已经将提交推送到长途分支,而且需要撤销它,可以使用 git revert 来制止直接修改汗青,特殊是在公共堆栈时,这是推荐的方法。撤销后需要再次推送:
  1. git push origin <branch-name>
复制代码
3.6 处置处罚归并提交的撤销

归并提交的撤销比力复杂,需要指定要撤销的父提交。你可以使用 -m 选项来指定父提交。例如,要撤销归并提交并保留主分支的变更:
  1. git revert -m 1 <merge-commit-hash>
复制代码
这里的 -m 1 指的是保留第一个父提交的内容。
3.7 总结


你可以根据详细需求选择不同的用法来撤销提交。如果是未推送到长途的本地更改,git reset 可能会是更符合的工具。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4