git相关

工作区:当前路径下ls或cat能够看到的目录及文件。

暂存区:工作区的历史快照的合集,每次add操作是此合集的一部分。对同一个文件多次add并不是冲突,因为这是同一个作者的修改,以时间为序,最终状态为结果。

如果是多个作者对同一个文件的相同位置(直观说是行数)进行修改,那么就产生了无法直接解决的冲突:时间先后顺序并不能反映出大家最终的目标。

添加upstream:

删除upstream的push:

设置用本地时间显示:

设置用vim做编辑器:

修改本地分支的远程关联:

其效果与直接编辑.git/config或者执行

相同。

查看文件的修改历史:

撤销修改,实际根据操作可能还未add到暂存区或者已add。

首先是取消add:

现在暂存区已没有修改了,撤销修改:

应用某个分支的某个文件修到当前分支:

可以看出这相当于针对文件的cherry-pick,但是pick的是文件的在某个分支最终状态。仔细看刚才的输出,“Updated 1 path from a76108b05”,因此可以大胆地用commit替代刚才的分支:

放弃本地分支的commit,更新到github.com的最新版,如更新master:

修改历史commit的信息/作者信息

有的时候回头发现之前写的message实在不堪入目,不改写就如坐针毡。有的时候在别的机器上保存的commit,作者信息未更新便已push:

实际上还是要通过rebase解决。选中最后两条进行rebase:

注意e选项:

保存后进行edit:

若需要修改message可以再编辑,保存后所有信息都修改了。注意需要git rebase –continue来完成rebase。完成后效果如下:

submodule更新:

submodule全部重置:

放弃没有添加到暂存区的新增文件(与放弃文件修改不一样):

单个文件用rm删除即可。所有文件:

请记住新东方。

push新的branch时不用确认,直接到同名branch:

 

This entry was posted in tittle tattle. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *