整理下最近对git的使用心得和经验,大概用了三个月的时间,但是已经能感觉到git的方便,神马vss,snv都弱爆了!
git是一个分布式版本库的工具,用它的时候,首先要有一个自己的代码仓库,将远程的代码仓库复制到本地一份,然后怎么煎炸烹制都是反手之间
常用命令
git checkout -b new_branch_name 以当前分支为基础,新建一个分支
git checkout branch_name 切换到 branch_name 分支上
git checkout -- abc.java 恢复对当前abc.java的修改
git diff 查看本地修改和之前commit的区别
git status 查看文件状态
git add 增加修改内容,用过 svn的同学应该不陌生
git commit 提交文件
git commit --amend 修改已经提交但是没有push的备注
git rebase -i HEAD~2 将之前的两次提交合并
git rebase mainbranch 更新当前branch代码,以rebase为基准,一般push前都需要此操作,以解决代码冲突
git log 查看本地日志
gitk 查看git 树
git branch -d branch_name //删除branch_name 分支
下面举出两个例子,列出不同情况下命令的组合
1.下载代码仓库到本地,有一个 bug需要解决,那么需要建立一个新的分支’bug_branch‘,然后修改,最后push到主干上,我会写出完整的过程,当然之后再有什么review神马的就不在本文讨论范围了
--->git checkout -b bug_branch // 新建分支
--->//然后就可以对你的代码进行修修改改了,ok,1,2,3,改好了吧,下一步
--->git diff //查看修改的内容,主要看看是否还需要修改
--->git status//查看修改了哪些文件
--->git add . //最后有一个点,意思为 增加所有修改内容
--->git status //查看所有文件是否已经成功改变状态
--->git commit -m "this is comment of this commit" //为本次提交写备注
--->//ok,到这里已经成功的提交到本地了,如果想查看本地当前分支的历史commit记录,可以执行git log命令查看,从打印出的log信息中,可以用git diff 查看两个版本之间差 异
--->这时,最好做一个 rebase操作,以免代码冲突,当然,如果你今天更新了代码,然后建立分支并commit,不rebase也行
---->repo sync ./ //请求最新代码到本git仓库
--->git checkout -b new_branch //新建的new_branch分支即为最新代码分支
--->git checkout bug_branch//切换到bug_branch
--->git rebase new_branch //以 new_branch为基础,rabase
--->//如果一切顺利,那么你的bug_branch就更新到了最新,就可以放心大胆的push了
--->push,,,,,如果push失败,我们公司会返回一个gerritid
2.比如之前的bug已经顺利push 了,结果没有通过代码review,有格式或者其他的问题,我们用的是 gerrit,修改后 push到第一次push返回的gerritid相关的路径中,这里只说git部分(注释 不加了,看第一部分)
--->git checkout bug_branch //
--->//
--->git add .
--->git commit -m 'add commit comments"//
--->git rebase -i HEAD~2 // 将之前的两个commit 合并
--->改bug吧少年
--->第二个pick修改为squash
--->:wq 保存即可,当然也可以修改
--->至此,commit成功,rebase后可以push,push需要注意,不是一个新的push,而是和之前那个push有关的,具体的问你们老大
3.代码冲突了咋办?
做rebase冲突了咋办?ok,rebase的时候冲突了,相关的提示,哪些文件冲突了,打开文件后,会看到冲突部分(不截图了,真的很明显的表明了那几行冲突,不会看不到的,),修改完冲突后,push即可
--->git rebase new_branch
--->发现冲突提示,修改冲突文件,你可能想,,,
--->git rebase --continue //修改好了,想提交,如果命令执行成功就可以提交了,否则还需要继续修改
--->git rebase --abort //不想修改了,返回执行rebase命令之前
--->ok,如果选择了上面的continue操作,并且成功了后,
--->git status //查看文件状态发现了有的文件状态不对,这时,你需要add命令
--->git add . //add命令后,不需要commiit了,因为,没有什么需要commit 的,即使commit,也会提示 nothing to commit
--->push吧少年
4.