竟然是命令操作,当然少不了要使用Shell.
这里推荐使用babun用来执行shell命令,下载地址:http://babun.github.io/
1:拉取项目
git clone https://github.com/angcyo/PaintDemo.git
2:查看状态
git status //可以查看所有文件的修改状态,在进行commit操作,push操作,pull操作之前,请确保所有文件的状态都是干净的,否则会出现意想不到的错误
git add build.gradle //追踪build.gradle文件
git add . //追踪所有文件,注意垃圾文件要checkout哦~
git checkout build.gradle //放弃追踪build.gradle文件
git checkout . //放弃追踪所有文件
3:提交修改
git commit -m "基本修改" //提交本次修改
git status //在执行操作之前,都请先查询状态,这个习惯很好
提交之后,可以使用:
git log //查看提交日记
但是,本次提交,只是提交到了本地仓库,远程仓库并没有修改.
所以接下来,我们需要把修改提交到远程仓库.
4:推送到远程仓库
git push origin master //推送到远程仓库,我这里用的Github,所以会提示输入用户和密码.(输入不可见哦)
很显然,推送已经生效了.
上述,都是基本的操作,但是实际过程当中往往没有那么顺利.
接下来,针对问题,描述使用方法.
1:取消上一次的commit
当执行
git commit -m “提交信息”
之后,发现不对,有问题,需要回退本次提交.
我们可以通过git log命令,查看commit id信息,然后通过以下命令,就可以轻松愉快的回退到先前的状态了
git reset --soft 47e39134a0eb6b1698cccf950621c6c631ea5879
这种方法,不仅可以回退,而且可以恢复状态.
如果你仅仅想回退,不想要状态,可以这样:
git reset --hard 47e39134a0eb6b1698cccf950621c6c631ea5879
2:合并其他分支的代码
当其他同事,在同一分支修改代码之后,此时要更新自己的分支.
git rebase 31a55ce
我们可以先通过git fetch命令,查看最新的代码版本,最重要的就是要拿到最新代码的commit id.
再通过git rebase ‘commit id’,就可以用最新的代码合并本地的代码.
当然,更简单粗暴的方法是:
git pull //这种方法,很粗暴,通常会遇到很多问题,推荐使用git rebase命令
3:创建分支,备份代码
很多时候,我们并不需要立即提交代码,或者各种原因.总之目的就是备份代码;
git checkout -b "angcyo" origin/d8 //用远程的d8分支,创建一个新的分支angcyo,相当于备份了远程的d8分支,为angcyo分支
git checkout -b "angcyo" //用当前分支,创建一个新的分支angcyo
分支多了之后,肯定需要切换分支的:
git checkout "分支名" //切换分支
4:合并多个提交
如果我已经执行了一次git commit 操作, 此时我又新增了文件,或者修改了文件.
这个时候,我怎么把这次修改,合并到上一次的commit中呢?
git add . //需要先追踪修改过的文件
git commit --amend //然后执行 此命令,就行了
这样的话,本次修改就会和上一次的修改,合并了.
5:绝招都是留在最后的
什么是commit id
git log //使用此命令,可以查看所有的commit信息,信息里面就包含了commit id,如下图.
Git的强大,就是把你每次commit提交到的操作,都记录在这个id里面,
所以你上一次的提交,和你上上一次的提交,是没有任何关系的.
比如:
commit id :d5264131 记录了新增2个文件,a.java和b.java
commit id :d8911234 记录了修改2个文件,c.java和d.java
那么你可以在任何分支,引用这个commit id,就会执行相对应的操作.
git cherry-pick [commit-id] //本篇的主角.
git cherry-pick d5264131 //会在当前分支: 新增2个文件,a.java和b.java
git cherry-pick d8911234 //会在当前分支: 修改2个文件,c.java和d.java
这个神奇的命令,告诉你,你只要知道commit id,就可以将你的修改,用在任何地方.
妈妈再也不用担心,修改了文件却不知道怎么应用到其他分支了.
文章中的很多命令,并没有做过多的详细解释.
读者可以百度一下命令,会比我复制粘贴过来更有效.
至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.