IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Git 提交指定文件的部分修改 -> 正文阅读

[JavaScript知识库]Git 提交指定文件的部分修改

使用场景举例

  • 被分配了两个Bug,已经改好了A, 正在处理B, 但被要求先提交A, AB有修改在同一文件里,那么问题来了:Git 如何提交文件的部分修改?

命令

git add --patch | -p <filename>
  • 查看命令解释如下
lee@leedeMacBook-Pro git_learn % git add -p --help
usage: git add [<options>] [--] <pathspec>...

    -n, --dry-run         dry run
    -v, --verbose         be verbose

    -i, --interactive     interactive picking
    -p, --patch           select hunks interactively
    -e, --edit            edit current diff and apply
    -f, --force           allow adding otherwise ignored files
    -u, --update          update tracked files
    --renormalize         renormalize EOL of tracked files (implies -u)
    -N, --intent-to-add   record only the fact that the path will be added later
    -A, --all             add changes from all tracked and untracked files
    --ignore-removal      ignore paths removed in the working tree (same as --no-all)
    --refresh             don't add, only refresh the index
    --ignore-errors       just skip files which cannot be added because of errors
    --ignore-missing      check if - even missing - files are ignored in dry run
    --chmod (+|-)x        override the executable bit of the listed files

命令使用举例

  1. 修改工作区的a.txt文件
lee@leedeMacBook-Pro git_learn % git diff
diff --git a/a.txt b/a.txt
index ef67a1a..c0a0e05 100644
--- a/a.txt
+++ b/a.txt
@@ -1,5 +1,9 @@
 111
+1
 222
+2
 333
+3
 444
+4
 555
\ No newline at end of file
  • 即 a.txt 加了4行内容。
  1. 使用git add -p命令
lee@leedeMacBook-Pro git_learn % git add -p a.txt 
diff --git a/a.txt b/a.txt
index ef67a1a..c0a0e05 100644
--- a/a.txt
+++ b/a.txt
@@ -1,5 +1,9 @@
 111
+1
 222
+2
 333
+3
 444
+4
 555
\ No newline at end of file
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]?
  • 1/1 表示当前的修改仅当成了一个修改区块
  • 通过输入 查看 y,n,q,a,d,s,e,? 命令的含义如下
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]? ?
y - stage this hunk  
// 注:暂存该块
n - do not stage this hunk 
// 注:不暂存该块
q - quit; do not stage this hunk or any of the remaining ones 
// 注:放弃暂存该块及剩余所有修改块
a - stage this hunk and all later hunks in the file 
// 注:暂存该块及该文件中剩余所有修改块
d - do not stage this hunk or any of the later hunks in the file 
// 注:不暂存该块及该文件中剩余所有修改块
s - split the current hunk into smaller hunks
// 注:将当前块分为更小的块
e - manually edit the current hunk
// 注:手动编辑当前块
? - print help
// 注:打印帮助
@@ -1,5 +1,9 @@
 111
+1
 222
+2
 333
+3
 444
+4
 555
\ No newline at end of file
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]?
  1. 为了便于演示,先使用 s 拆分当前块
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]? s
Split into 4 hunks.
@@ -1,2 +1,3 @@
 111
+1
 222
(1/4) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]?
  • Split into 4 hunks. 即原当前块被分成了4小块,当前要求你处理第一小块
  1. 依次处理各小块
(1/4) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? y
@@ -2,2 +3,3 @@
 222
+2
 333
(2/4) Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]? n
@@ -3,2 +5,3 @@
 333
+3
 444
(3/4) Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]? y
@@ -4,2 +7,3 @@
 444
+4
 555
\ No newline at end of file
(4/4) Stage this hunk [y,n,q,a,d,K,g,/,e,?]? y
  1. 查看此时的状态
// a.txt部分内容已暂存,部分内容还在工作区
lee@leedeMacBook-Pro git_learn % git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   a.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   a.txt
// 查看未暂存的内容,即前面我们选择 n 的第二小块的内容
lee@leedeMacBook-Pro git_learn % git diff
diff --git a/a.txt b/a.txt
index 345bf0a..c0a0e05 100644
--- a/a.txt
+++ b/a.txt
@@ -1,6 +1,7 @@
 111
 1
 222
+2
 333
 3
 444
// 查看暂存的内容,即前面我们选择 y 的第一、三、四小块的内容
lee@leedeMacBook-Pro git_learn % git diff --staged
diff --git a/a.txt b/a.txt
index ef67a1a..345bf0a 100644
--- a/a.txt
+++ b/a.txt
@@ -1,5 +1,8 @@
 111
+1
 222
 333
+3
 444
+4
 555
\ No newline at end of file

友情提示

  • 命令记个大概,会查、理解了就行。“君子生非异也,善假于物也”,实际用还是找个Git GUI工具吧,例如mac下的Sourcetree,多快好省。
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 13:43:31  更:2021-12-08 13:45:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:52:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码