您的位置:首页 > 其它

GIT - 基本概念(分支, 差异, 合并)

2016-06-16 16:23 302 查看
分支的命名规则:

可以使用 / 创建一个分层的命名方案,但是分支名不能以 / 结尾。不能以 - 开头。不能写成类似 feature/.features1(含.)的分支名。不能用连续两个点..。不能包含空格和特殊含义的字符。

每个分支在一个特定的版本库中必须有唯一的名字,这个名字始终指向该分支上最近提交的版本。

创建一个分支:git branch [new_branch_name],如果没有starting-commit 参数跟在分支名后面,则默认是在你现在工作的分支上启动一个新的分支。如果加上starting-commit, 例如:git branch new_branch db7de5fee..
(db7de5fee..是一个提交ID),则说明该分支基于指定的提交版本之上。

列出本地分支名:git branch, 列出所有分支名:git branch-a(包括远程分支),-r:列出远程分支名。

查看分支:git show-branch 命令提供比git branch更详细的输出。

检出分支:git checkout [branch_name], 有未提交的更改时进行检出时,需要先add当前分支的更改文件或目录,然后commit(如果一个文件的本地修改不同于新分支上的变更,checkout的时候会报错。当然可以通过-f 强制checkout,但是这种做法会使得当前branch的更改内容丢失。)【这里如果是checkout到master上,或者是从master上checkout到别的branch上,那么不会报错,只会标记为M】

在工作分支上查看其它分支上的文件,可以通过git show [other_branch]:[file_name],例如:git show wayne_test_0606: hello.txt。

删除本地分支:git branch -d [branch_name], Git 不会让你删除当前分支,也不会让你删除一个 某个提交只包含在要被删除的分支,也就是说Git防止你在不合并到当前分支的分支被删除时,不小心丢失其内容。

删除远程分支:git push origin --delete [branch_name],或者git push origin :[branch_name]

差异(diff)

其实 git diff 和 UNIX diff差不多,diff -u [init_file] [final_file] //逐行比较两个文件内容的差异,-u选项表示产生一个合并格式的差异。---:原始文件,+++:最新文件;@@之间表示两个不同文件版本的上下文行号:-:第一个文件,1表示第一行,4表示连续四行,+:第二个文件;以(-)开头的行表示从原始文件删除该行以得到新文件,(+)开始的行表示从原始文件中添加该行以产生新文件。

git diff 命令

(1)git diff:显示工作目录和索引之间的差异

(2)git diff [commit]:显示工作目录和给定提交之间的差异

(3)git diff --cached [commit]:显示索引中的变更和给定提交之间的差异

(4)git diff [commit1] [commit2]:显示给定的两个提交之间的差异。

命令行选项:--M:查找重命名并且生成一个简化的输出。-w/--ignore-all-space:忽略空白字符。--stat:显示针对两个树状态之间差异的统计数据,报告用简洁的语法显示有多少行发生了变化,多少行添加了,多少行删除了。--color:输出结果以多种颜色显示。

合并 (merge)

合并两个分支流程:在master上合并一个分支

git checkout master

git merge [another_branch]

git log --graph --pretty=oneline --abbrev-commit // git log --graph可以图形化描述。

如果发生冲突,(1)使用git diff,可以看到冲突文件之间的差异,然后解决冲突。(2)使用 git log --merge --left-right -p,通过日志来查看冲突。// --merge: 只显示跟产生冲突的文件相关的提交, --left-right:左边显示<,自己的branch一边,右边显示>,要合并的branch一边。-p:显示提交信息和每个提交的相关补丁。

终止或重新启动合并:

在执行git merge 命令执行之前放弃,可以使用 git reset --hard HEAD//恢复到当前最新的提交。【注】HEAD相当于游标。

在执行git merge 命令之后放弃,可以使用 git reset --hard ORIG_HEAD //恢复到上一个提交。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git branch 合并 diff