其他小技巧

2018-09-05  本文已影响0人  尛尛大尹

1.忽略临时性的本地修改

(1)忽略一些已经版本化的文件
这时候,被Git管理的文件会被暂时性忽略,所以我们对这些文件的修改就会被忽略

# git update-index --assume-unchanged <文件名>

(2)回到工作目录

现在回到工作目录,status和add命令都不会先是被添加的文件中所发生的修改了

(3)停止忽略

我们可以用--no-assume-unchanged选项来取消--assume-unchanged选项对各单一文件的影响。或者可以用--really-refresh命令来重置一下所有文件的状态

2.查看对文本文件的修改

一般来说,Git中的diff算法会逐行比较两个文件。但是如果我们将某些单词从一行移动到另一行,就很难看出一个文件究竟做了哪些修改。
对于连续性文本,--word-diff选项会有用,它可以按单词显示我们所做的修改。

# git diff --word-diff

此外,我们还可以设置--word-diff=color,以便用不同的颜色来显示文中的不同。

3.Git创建别名

# git config --global alias.ci commit
# git config --global alias.st status

4.防止某些本地提交不会被传送给中央版本库

用git pull加上--ff-only

# git pull --ff-only
--ff-only参数是通过在pull命令中允许快进式合并来防止合并出现提交。换句话来说,就是本地如果存在了一些修改没有提交,该合并操作就会被取消。

5.push指定分支

如果工作中使用特性分支,本地版本库会存在多个分支,在没有参数的情况下,push命令只会将当前活动分支中的内容传送到远程仓库。但是我们也可以设置push.defult选项来改变这一行为。

# git config push.defult upstream
该选项默认匹配所有与远程版本库中有相同分值的本地分支。因此,我们每次在执行push命令时都必须明确指明分支,以限定传送的内容。

6.本地分支和远程相关联

当我们在本地创建了一个分支,比如branchtest,我们希望与远程某个分支相关联,假设远程那个分支也叫做branchtest,当我们直接pull代码,会出现错误。
语法:

# git branch --set-upstream <本地分支名> <远程分支名>
新版本git用的参数是--set-upstream-to,并且后面两个参数要调换一下
# git branch --set-upstream-to <远程分支名> <本地分支名>

7.合并时放止快速合并

# git merge feature --no-ff  --no-commit
--no-ff参数就是防止快速合并。--no-commit参数用于指示Git不要因为接下来可能失败的测试而停止任何提交。

8.ReReRe——解决冲突的自动化方案

我们在文件中手动解决冲突的过程中可以被当预案记录下来,如果同样的冲突一再发生,改元就可以自动被应用。这就是所谓的“重预案记录”。这就是使用ReReRe。

(1)启用ReReRe
这个用于记录冲突预案的特性必须针对各个版本库单独开启

# git config rerere.enabled 1
由于ReReRe是将冲突预案存储在本地,所以该工具在该版本库的每个克隆体重也必须要被单独开启。

(2)记录冲突预案
一旦ReReRe被启用,我们所有解决冲突的方案都会在执行commit命令时被自动保存下来。但如果没有被执行(例如,试图执行reset命令时可能被拒绝了),这时候我们就显示调用rerere命令了:

# git rerere
Recorded resolution for 'foo.txt' 

(3)应用冲突预案
一旦ReReRe被启用,Git就会去试图自动的反复解决没一个合并中的冲突。例如,在下面的情况中,尽管该文件在解决冲突的过程中被修改过了,但我们还没有add命令确认该冲突得到了解决。

# git merge featureE
Auto-merging foo.txt
CONFLICT (content):Merge conflict in foo.txt
Resolved 'foo.txt' using previous resolution.
Automatic merge failed;fix conflicts and then commit the result.
在我们解决了相关冲突之后,就必须要通过add命令将受影响的文件添加到下一次提交中
# git add foo.txt

9.显示某个被合并特性中的所有修改

(1)定位某特定分支中的提交

# git log --first-parent --oneline --grep='featureC'
这里,--grep选项会负责在日志中搜索某段给定的文本
上一篇 下一篇

猜你喜欢

热点阅读