隔了很久没有记录目前的工作,因为忙以及懒。作为正处于并将长期处于“初级”思想阶段的程序员,我觉得还是有必要进行工作的总结和技术的记录,一方面是为了提醒自己新东西容易忘记,一方面是告诉以后的自己曾经做过一些什么小东西。IT和现实生活中一样,新事物的出现和衰弱都极其常见,只是周期似乎短一些。
git
git是一个版本控制的工具,网上的教程多如牛毛,我其实都看不太明白,只有用了以后 才能够慢慢体会。因此做一下几个程序开发中一定会用到的示例,作为必要git技能:
(fork / 提交 / 合并 / 冲突解决 / log / 分支)
开发一般从项目主仓库fork一个仓库到自己的名下,然后操作自己的仓库,做修改、提交。如果想要对主仓库进行代码提交 需要提一个merge request 然后主仓库拥有者review你提交的代码后决定合不合并。
git remote -v
查看目录的远程仓库地址 项目开发中一般有两个,一个是主仓库upstream 一个从主仓库fork到自己仓库的origin
git remote add upstream http://github.com/abc/abc
添加一个别名为upstream的远程分支
git add .
git commit -m "代码修改注释"
git push origin master
//push代码到origin的master分支
git remote update -p
相当于git fetch 所有的远程分支
git merge upstream master
提交之前最好合并一下主仓库,获取最新代码,以免出现冲突
如果遇到冲突conflict提示
直接vim操作提示有冲突的文件
文件中会出现类似
<<<<<<<head
aaaaa
======
bbbbb
>>>>>>upstream
等等这类符号 代表了主仓库上是bbbb,但是你这一行代码是aaaa
所以中间有冲突,选择你需要的内容 比如bbbbb直到变成:
bbbbb
然后再进行一次add,commit,push,接下来再merge或者pull代码会显示
already uptodate
git pull
下拉代码和本地合并,推荐使用git fetch和merge取代git pull
git checkout -b newcode
新建newcode分支并切换到newcode
git checkout master
切换到master分支
git reset --hard
退回到上一个提交的状态
git log
查看日志 (例:最近三个提交分别为2,1,0)
git reset --hard 0
退回到三个提交之前
git cherry-pick 2
把commit 2修改单独应用到当前分支
如有冲突 解决
然后 add commit
git reflog
查看因reset而消失的log
git reset --hard xxxx
git revert xxxx
翻转某一次提交,(作为撤销某一个commit的手段)