最近在开发过程中,用到git提交代码,之前也用过github传过代码,但是实际工作中还用的不多,过程中遇到了一些坑,记录下来。
conflict冲突
冲突原因:
由于在自己提交之前,自己下载最新代码之后有人上传了,之前下载的不是最新的代码,所以有冲突,必须把代码冲突解决之后才能够上传。时间线问题。
展现形式:
1 | >>>>>>>>>> |
完成了一个功能模块,想要提交到代码库中;为了方便,现在用git gui工具了,先把更改的文件statechanged状态改变一下,然后提交commit,之后千万不要忘记看看远程库中有没有最近的更新,pull一下;
pull一次之后就要注意解决冲突,一般文件会红色显示,有错误则会显示红色波浪线,形式如上所示;
注意:每天可以多次commit,就像打标签,但是最好一天只push一次。多次提交造成不必要的浪费;
据老司机门的经验,开发时,应该多构建分支,在一个分支上做一个功能,功能做完之后再合并分支,这样可以减少冲突的概率。
撤销未提交的修改
还没有commit,但想撤回修改的情况下:
git diff:
保存了,如果是一两句还好,如果几百几千行呢?手动累死你。
神器:
1 | git checkout src/com/jay/example/testforgit/MainActivity.java |
duang一下就没了:
当然上述前提是没有add,才可以checkout。我们要先取消添加才可以撤回提交,使用下述指令:
1 | git reset HEAD src/com/jay/example/testforgit/MainActivity.java |
版本回退
上面提到的是撤销未提交的修改,但如果提交了,我们想回退到之前的某一个版本怎么办?
我们可以通过git log查看我们的提交记录,我们需要从这里获取一个版本号,
一般我们只需要前七位字符就够了;另外在Git中,用HEAD代表当前版本,上一个版本就是HEAD^,
再上一个版本就是HEAD^^依次类推!我们先Git Log看下版本历史先!
我们回到前一个提交的版本吧,依次键入下述指令:
1 | git reset --hard HEAD |
控制台:
可以看到我们已经回退到了前一个版本了,当然你可以直接这样写:
1 | git reset --hard ad2080c |
就是这么简单!回退后,你突然后悔了(第一次回退到前一旧版本了,现在又想回到新版本了,善变啊),想回退回新的那个版本,
可是遗憾的是,你键入git log却发现没有了最新的那个版本号,这怎么办呢…
没事,Git中给你提供了这颗“后悔药”,Git记录着你输入的每一条指令呢!键入:
1 | git reflog |
你会发现,版本号就在这里:
然后键入:
1 | git reset --hard ad2080c |
可以看到我们又回到了最新的那个版本了,就是这么溜!
- 本文作者: Linking
- 本文链接: https://linking.fun/2016/09/10/git学习之三-conflict冲突,reset版本控制,以及实践感悟/
- 版权声明: 版权所有,转载请注明出处!