Git 常用命令

2018-08-02  本文已影响0人  yudianer

1. diff 与 patch

两个文件:source.txt target.txt
hello world
4
1
diff 来比较两个文件的差异:


2、git reset :

重置文件:git reset [-q] [<commit>] -- paths

不影响工作区、暂存区、版本库。
用commit中的文件覆盖相当于将文件从暂存区中拿出来,恢复到没有add

3、 git checkout

4、忽略文件

5、文件归档

6、清除未跟踪文件

git clean -n -fd :

7、保存恢复工作进度

8、git cherry-pick

3 步走:挑选提交 --- 切换到当前分支 --- 覆盖工作区和暂存区

挑选指定提交放入到当前的HEAD;
假设有 A B C D E F 这6个提交记录, 现要挑选 E F 并放到C上,即删除D,如下:

C 和 D 的提交说明合并为一个提交说明,这里合并为C的提交说明。
因为只是合并提交说明,所以,
应该将版本库 git reset --softB
工作区和暂存区git checkout D, 然后commit 产生一条新的记录,
并将 E F 放到当前HEAD

9、git rebase

git rebase --onto base since_commit till_commit

3 步走:切到新的 HEAD(一个 commit)--- 拣选区间 --- 更新工作区和暂存区

变基操作:git cherry-pick 一个一个挑选,git rebase 挑选 (since_commit, till_commit] 区间段的提交

删除提交D:

合并提交C 和 D

10、git rebase -i commit^

commit 作为HEAD 进行交互式 git rebase,通过编辑 编辑操作文件来完成相应的工作。

11、删除提交历史说明

这里删除的是提交说明,而不是提交!

2 步:构造一个新的根提交 --- 将想要保存的提交历史说明变基到该新的提交
只保留 B 之后的提交说明,如下:

12、 git revert

git revert commit-id : 撤销 commit-id 对应的提交,但是不会删除commit-id 的提交记录,这是需要手动删除的.

13、 git push

快进式操作:git push 提交的时候,如果当前的commit是远程版本库当前分支现有的基础上,即远程版本库的最新commit是本地当前分支最新提交的祖先提交,那么直接提交。 一般情况下只允许 快进式提交

git push -f: 如果提交不通过 快进式操作 检验,则会出现 非快进式 错误,那么可以使用 git push -f 来强制推送更新远程版本库。

通过git rev-list HEAD --max-count=5git ls-remote origin 可以对比是否会产生非快进式操作问题。

14、 git log


* commit e40d1be (HEAD -> dev, origin/dev)
| Author: jack <yudianer1991@hotmail.com>
| Commit: jack <yudianer1991@hotmail.com>
|
|     g
|
|  new.file | 2 ++
|  rebase   | 1 +
|  2 files changed, 3 insertions(+)
|
* commit 61ce462 (tag: F)
| Author: jack <yudianer1991@hotmail.com>
| Commit: jack <yudianer1991@hotmail.com>
|
|     F
|
|  rebase | 1 +
|  1 file changed, 1 insertion(+)
|
* commit cce0039 (tag: E)
| Author: jack <yudianer1991@hotmail.com>
| Commit: jack <yudianer1991@hotmail.com>
|
|     E
|
|  rebase | 1 +
|  1 file changed, 1 insertion(+)

14、 git tag

tag 创建之后默认不会推送到远程版本库,必须显示地 git push origin tagname 提交tagname, 或者 git push origin refs/tags/* 来推送所有的tag。

git pull 时默认会拉取所有的 tag,但是在tag有更新时,不会拉取更新后的tag内容。
git pull refs/tags/mytag:refs/tags/mytag : 将会强制用远程的 mytag 来更新本地的mytag

1、创建 tag

2、查看 tag

3、删除 tag

15、分支

1、创建分支

2、删除分支

3、查看分支

4、跟踪分支

16、远程版本库

上一篇 下一篇

猜你喜欢

热点阅读