GIT 命令学习: 分支与合并(1)
分支(branch)
用来列举、创建或者删除分支。
语法
git branch [--color[=<when>] | --no-color] [-r | -a]
[--list] [-v [--abbrev=<length> | --no-abbrev]]
[--column[=<options>] | --no-column] [--sort=<key>]
[(--merged | --no-merged) [<commit>]]
[--contains [<commit]] [--no-contains [<commit>]]
[--points-at <object>] [--format=<format>] [<pattern>…]
git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-c | -C) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>…
git branch --edit-description [<branchname>]
详解
命令选项
1)-d , - - delete
删除一个分支。 待删除的分支必须已经合并到上级分支。如果没有使用--track
或者--set-upstrealm-to
设置那么其必须在HEAD
中。2)-D
--delete --force
的简写形式。3)-l ,– create-reflog
创建分支的参考记录,这个操作会记录分支变化的所有记录。在非空的仓库中,参考记录通常是有文件core.logAllRefUpdates
的配置选项设置为默认的。其否定形式为-- no-create-reflog
只会重写早期的--create-reflog
,但是并不存在可以关闭配置文件的设置。
4)-f ,- -force
重新设置 为 , 即使 已经存在. 不使用-f,
git 分支会拒绝改变一个已经存在的分支 . 结合命令-d
(--delete
),允许在不考虑合并状态的情况下删除分支。结合命令-m
(--move
),可已在分支名称已经存在的情况下重命名分支。
5)-m,- -mov
删除/重命名分支和其对应的reflog。.
6)-M
--move --force
的简写。
7) -c,- -copy
复制一个分支及其对应的reflog。
8) -C
--copy --force
的简写.
9) –color[=]
以颜色高亮当前、本地和远程追踪的分支。其取值可以为:总是、从不和自动。
10) –no-color
关闭分支的颜色高亮,即使配置文件设置了默认的输出颜色。该命令等价于--color=never
.
11) -i,- -ignore-case
过滤并不敏感的分支。
12)–column[=],–no-column
以列的方式显示分支列表。
13)-r,–remotes
列出或者删除(结合-d
)远程跟踪的分支。
14)-a,–all
列出远程跟踪和本地分支。
14)–list
列出分支。
15)-v,-vv,–verbose
在列表模式下,显示每个head的sha1和提交说明。
16)-q,–quiet
创建和删除分支的简洁模式,不显示非报错信息。
17)–abbrev=
选择sha1在输出列表中的最小显示长度。
18)–no-abbrev
在输出列表中显示全部的sha1。
19)-t,–track
当生成一个新的分支时,设置一个 branch.<name>.remote
和branch.<name>.merge
的配置条目来标记分支的起始点。这个配置会通知git通过git status
和git branch -v
来显示两个分支之间的关系。
20)–no-track
不设置“upstream”的配置。
21)–set-upstream
(这个选择带有迷惑性,今后将不再支持)请使用--track
和--set-upstream-to
来替代。
22)-u ,–set-upstream-to=
设置<branchname>
的追踪信息,因此 <upstream>
将作为<branchname>
的 upstream 分支. 如果 <branchname>
没有指明, 则默认为当前分支.
23)–unset-upstream
为<branchname>
移除 upstream 信息 . 如果没有分支信息被知名,则默认为当前分支。
24)–edit-description
打开编辑器并编辑文本信息来解释当前分支,可以结合其他命令使用。
25)–contains []
只列举包含特定内容的分支。
26)–no-contains []
只列举不包含某些内容的分支。
37)–merged []
只列举从指定提交可达的分支。
38)–no-merged []
只列举从指定提交不可达的分支。
39)<branchname>
待创建或待删除的分支的名称。
40)<start-point>
新分支头将指向这个提交。
41)<oldbranch>
将要重命名的分支名称。
42)<newbranch>
待重命名分支的新名称。
43)–sort=
依据给定的关键字进行排序。
44)–points-at
只列出给定对象的分支。
45)–format
用法举例
1、从一个已知的标签处开始开发
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
$ cd my2.6
$ git branch my2.6.14 v2.6.14
$ git checkout my2.6.14
2、删除并不需要要的分支
$ git clone git://git.kernel.org/.../git.git my.git
$ cd my.git
$ git branch -d -r origin/todo origin/html origin/man
$ git branch -D test
(待续…)
检验(checkout)
切换分支或者重新存储工作树文件。
语法
git checkout [-q] [-f] [-m] [<branch>]
git checkout [-q] [-f] [-m] --detach [<branch>]
git checkout [-q] [-f] [-m] [--detach] <commit>
git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>]
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>…
git checkout [<tree-ish>] [--] <pathspec>…
git checkout (-p|--patch) [<tree-ish>] [--] [<paths>…]
//
1. 详解
2.参数选项
1)-q,- -quiet
简洁模式, 压缩返回的信息。.
2)- - [no-]progress
报告进程状态。
3)-f,- -force
当切换分支,即使索引或者工作树与HEAD不同也进行处理。可以使用此方法丢弃本地更改。
4)–ours,- -theirs
当在核验索引的路径时,对未合并的路径分两步(ours,theirs)核验。
5)-b
创建新的分支。
6)-B
创建新的分支。如果已经存在,则重新定位到<start_point>
,这与 git branch -f
等价。
7)-t,–track
当创建新的分支时,进行upstream配置。
8)–no-track
拒绝upstream设置。
9)-l
创建新分支的reflog 。
10)–detach
核验一个提交而不是即将分支。(?)
11)–orphan
创建一个孤立的分支并切换至它。
12)–ignore-skip-worktree-bits
In sparse checkout mode, git checkout – would update only entries matched by and sparse patterns in $GIT_DIR/info/sparse-checkout. This option ignores the sparse patterns and adds back any files in .
13)-m,–merge
当切换分支时,如果存在多个文件在当前分支与需要切换的分支之中不一样,该命令会拒绝切换分支以便保存你的修改。
14)–conflict=
用法举例
$ git checkout master #切换分支
$ git checkout master~2 Makefile #从一个提交中移除一个文件
$ rm -f hello.c
$ git checkout hello.c #重新保存hello.c