Keep Learning

伪程序员记录点滴

Git基本使用

git log branch_a..branch_b
显示branch_b有而branch_a没有的历史。
git log branch_b..branch_a
显示branch_a有而branch_b没有的历史。

git log origin/master..HEAD
查看将会把什么推送到远端的master分支

git show HEAD
git show HEAD^
git show HEAD~
^符号显示的是祖先,2显示的是第二父提交

~显示的是父提交,~2显示的是父提交的父提交

git log reA..reB
git log ^reA reB
git log reB --not reA
上述三个命令等价,均是指包含reB而不包含reA

git log refA refB ^refC
git log refA refB --not refC
...三点描述符,显示的是并集减去交集
git log --left-right master...experiment

交互式暂存

git add -i进入交互界面,输入数字进行选择

存储

git statsh 当想切换分支,但是又不想将当前的工作提交到暂存区时,可以使用该指令。该指令将会把当前的工作状态暂存起来,采用堆栈的形式存储起来。当需要恢复暂存区的工作内容时,可以使用git stash list查看当前堆栈里面的暂存态。使用git stash apply stash@{2}将会恢复git stash list显示的第二个暂存。如果没有指明名字,直接使用git stash apply将会默认恢复最近的那次暂存。
git stash apply只是会应用存储,而不会将存储删除,如果需要删除存储,需要使用git stash drop stash@{2}来将相应的存储进行删除。
注意,git stash apply这个命令的使用不需要工作分支与当时使用git stash存储的分支在一个目录下,也就是说可以在分支a上存储,然后在分支b上使用git stash apply将在分支a上存储的内容应用到分支b上。git将会采用自动融合的机制,如果出现冲突,会要求解决冲突之后才能应用存储。

重写历史

改变最近一次提交

修改最后一次的声明,输入下面的命令即可

1
$git commit --amend

如果在依次提交之后,发现还有文件没有增加进来,可以使用git add。发现文件需要删除,使用git rm。在完成这些操作之后,使用git commit --amend操作来进行修正。这样,便会将这次更新合并到上次的更新上去。注意不要在推送之后再使用这个方法。

修改多次提交说明

自定义GIT

git config --global core.autocrlf true

根据不同平台,将换行符进行替换。 开启该选项后,git可以在代码提交时,自动将行结束符CRLF替换为LF,而在签出代码时将LF替换为CRLF。该选项在windows平台和Linux平台的共同使用时使用。

git config --global core.autocrlf input

该选项将把git设置为在输入时将crlf转换为lf,而在输出时不转换。

如果都在windows下开发,且仅仅在windows下运行,可以设置为false取消此功能,把回车符记录在库中。

git config --global core.autocrlf false