1.git am xxxx.patch
git diff > 1.patch
git format-patch HEAD^
1、执行命令 git am xxxx.patch 尝试直接打入补丁。因为我们使用的 patch 已经过时了,所以这一步肯定会报错并中断(注意,虽然命令停止执行了,但我们依然处于git am命令的运行环境中,可以通过git status命令查看到当前的状态)。
2、执行命令 git apply --reject xxxx.patch 自动合入 patch 中不冲突的代码改动,同时保留冲突的部分。这些存在冲突的改动内容会被单独存储到目标源文件的相应目录下,以后缀为 .rej 的文件进行保存。比如对 ./test/someDeviceDriver.c 文件中的某些行合入代码改动失败,则会将这些发生冲突的行数及内容都保存在 ./test/someDeviceDriver.c.rej 文件中。我们可以在执行 git am 命令的目录下执行 find -name *.rej 命令以查看所有存在冲突的源文件位置。
3、依据 步骤2 中生成的 *.rej 文件内容逐个手动解决冲突,然后删除这些 *.rej 文件。完成这一步骤的操作后,我们就可以继续执行 git am 的过程了。
4、执行命令 git status 查看当前改动过的以及新增的文件,确保没有多添加或少添加文件。
5、执行命令 git add . 将所有改动都添加到暂存区(注意,关键字add后有一个小数点 . 作为参数,表示当前路径)。
6、执行命令 git am --resolved 继续 步骤1 中被中断的 patch 合入操作。合入完成后,会有提示信息输出。
7、执行命令 git log 确认合入状态。
2、常用命令
git clone url
git add .
git status
git commit -m ''
git push <远程主机名origin> <本地分支>:<远程分支>
git pull
#1.创建分支
git checkout -b name
git checkout -b name origin/name
#2.和远程分支关联
# git branch -u origin/master
git branch -u remotes/origin/master
git remote remove origin
git remote add origin
3 回滚
1、本地commit 但是没有push
git log
git reset --hard <commit_id> 放弃本地的所有改变,即去掉所有add到暂存区的文件和工作区的文件
–hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
–soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
–mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。
2. 本地commit 已经push
git revert <commit_id> git push
暂存当前工作目录 去修bug
git stash
git stsh pop
0. WIP: Work in progress, do not merge yet. | ||
// 开发中,传说中提 PR 的最佳实践是,如果你有个改动很大的 PR,可以在写了一部分的情况下先提交,但是在标题里写上 WIP, | ||
//以告诉项目维护者这个功能还未完成,方便维护者提前 review 部分提交的代码。 | ||
1. LGTM: Looks good to me. // Riview 完别人的 PR ,没有问题(朕知道了 代码已经过 review,可以合并) | ||
2. SGTM: Sounds Good To Me. //和上面那句意思差不多,也是已经通过了 review 的意思 | ||
3. PTAL: Please take a look. // 帮我看下,一般都是请别人 review 自己的 PR | ||
4. CC: Carbon copy // 一般代表抄送别人的意思 | ||
5. RFC: request for comments. // 我觉得这个想法很好, 我们来一起讨论下 | ||
6. IIRC: if I recall correctly. // 如果我没记错 | ||
7. ACK: acknowledgement. // 我确认了或者我接受了,我承认了 | ||
8. NACK/NAK: negative acknowledgement. // 我不同意 | ||
9. PR: Pull Request. 拉取请求,给其他项目提交代码 | ||
10. TBR: To Be Reviewed. 提示维护者进行 review | ||
11. TL,DR: Too Long,Didn't Read. 太长懒得看。也有很多文档在做简略描述之前会写这么一句 | ||
12. TBD: To Be Done(or Defined/Discussed/Decided/Determined). 根据语境不同意义有所区别,但一般都是还没搞定的意思 | ||
13. PRD: Product Requirement Document. 产品需求文档 |
git 命令
场景一、 使用 git add . 添加了当前目录所有文件,导致提交了不应该的文件
- 首先使用 git status 看一下当前已经 add 了的文件
- 根据自身情况使用以下面命令
命令 | 描述 |
---|---|
git reset HEAD | 上一次add 里面的全部撤销了 |
git reset HEAD fileName | 对某个文件进行撤销了 |
场景二、 使用 git add 后,又使用了 git commit
- 首先使用 git log 查看节点
- 最后根据不同情况进行如下处理
- 还没有 push 的情况,可以使用 git reset 命令
命令 | 描述 |
---|---|
git reset commit_id | 回退到上一个 提交的节点 代码还是原来自己修改的 |
git reset –hard commit_id | 回退到上一个commit节点, 代码也发生了改变,变成上一次的,本次的修改也丢了 |
- 已经 push 的情况,可以使用 git revert 命令(还原已经提交的修改 ,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交)
命令 | 描述 |
---|---|
git revert HEAD | 撤销前一次 commit |
git revert HEAD^ | 撤销前前一次 commit |
git revert commit-id | 撤销指定的版本,撤销也会作为一次提交进行保存 |
git revert | 提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容 |