git命令学习
首先应该配置一下你的身份,这样在提交代码的时候 Git 就可以知道是谁提交的了,命令如下所示:
git config --global user.name "xxx"
git config --global user.email "[email protected]"
查看全局的用户名和用户提交邮箱直接输入下面命令回车
git config --global user.name
git config --global user.email
使用git init 完成创建代码仓库。
使用git add . 表示添加全部的代码,git add src添加src目录
git add Test.java添加单个文件
git commit -m “first commit” 将之前add进的代码提交。
忽略文件,在git init初始化的时候会生成一个.gitignore的文件,用记事本打开后可以对相关需要忽略的文件或文件夹进行忽略。可以使用*通配符,
如:*.apk
使用git查看修改内容;比较理想的情况是,没编写一个功能就提交一次,避免到时候出现代码冲突。那如何用git查看自己修改的状态呢?
在项目的根目录下输入git status 查看状态。
如果状态显示的是modified已修改状态,可以使用git diff 查看所有文件的更改内容。git diff src/com/example/providertest/MainActivity.java查看单个文件的修改内容。
显示+号为添加的内容,显示-号为删除的内容。
如果想撤销之前修改还未add的内容,可以使用git checkout <单个文件>
那对于那些已经add过了的文件如何撤销修改呢?
先使用git reset HEAD <单个文件>,然后你可以看用git status看下状态,是否处于还未add状态,然后又可以使用git checkout撤销修改了。
使用git log查看提交的记录,使用git log <提交的很长一串id号> -1 -p 查看具体提交的内容。
分支
*你也许会有疑惑,为什么需要建立分支呢,只在主干线上进行开发不是挺好的吗?没错, 通常情况下,只在主干线上进行开发是完全没有问题的,不过一旦涉及到出版本的情况,如 果不建立分支的话,你就会非常地头疼。举个简单的例子吧,比如说你们公司研发了一款不 错的软件,最近刚刚完成,并推出了 1.0 版本。但是领导是不会让你们闲着的,马上??出了 新的需求,让你们投入到了 1.1 版本的开发工作当中。过了几个星期,1.1 版本的功能已完成 了一半,但是这个时候有用户反馈,之前上线的 1.0 版本发现了几个重大的 bug,严重影响 软件的正常使用。领导也相当重视这个问题,要求你们立刻修复这些 bug,并重新发布 1.0 版本,但这个时候你就非常为难了,你会发现根据没法去修复这些 bug。因为现在 1.1 版本 已开发一半了,如果在现有代码的基础上修复这些 bug,那么更新的 1.0 版本将会带有一半 1.1 版本的功能!
进退两难了是不是?但是如果你使用了分支的话,就完全不会存在这个让人头疼的问 题。你只需要在发布 1.0 版本的时候建立一个分支,然后在主干线上继续开发 1.1 版本的功 能。当 1.0 版本上发现任何 bug 的时候,就在分支线上进行修改,然后发布新的 1.0 版本, 并记得将修改后的代码合并到主干线上。这样的话,不仅可以轻松解决掉 1.0 版本存在的 bug, 而且保证了主干线上的代码也已经修复了这些 bug,当 1.1 版本发布时就不会有同样的 bug 存在了。*
使用git branch -a查看总共多少分支
使用git branch version1.0创建分支版本。
使用git checkout version1.0可以切换到分支版本上。
在 version1.0 分支上修改并提交的代码将不会影响到 master 分支。同样 的道理,在 master 分支上修改并提交的代码也不会影响到 version1.0 分支。
可以试着在version1.0分支上修改个文件然后add commit提交完成后,然后git checkout master切换到主分支上去,你会发现之前在version1.0分支上修改的文件在主分支上没有修改过。这个就是分支的好处。
但是这时候需要在主分支上合并version1.0分支上的修改怎么办?
使用git merge version1.0 进行合并修改。这时候你去看master分支上的文件已经合并了version1.0里修改的文件了。
使用git branch -D version1.0 删除掉version1.0分支。
使用git clone https://github.com/fancychendong/DragExpandListView.git将远程版本库的git项目下载到本地。
使用git push origin master可以将修改提交到远处git版本库中,需要等待链接,然后会提示你输入用户名和密码。这里我为了测试就用自己github上的项目,输入的用户名和密码都是自己github的用户名和密码。
git fetch origin master
执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会 合并到任何分支上去,而是会存放在到一个 origin/master 分支上,这时我们可以通过 diff 命 令来查看远程版本库上到底修改了哪些东西:
git diff origin/master
之后再调用 merge 命令将 origin/master 分支上的修改合并到主分支上即可,如下所示:
git merge origin/master
而 pull 命令则是相当于将 fetch 和 merge 这两个命令放在一起执行了,它可以从远程版 本库上获取最新的代码并且合并到本地,用法如下所示:
git pull origin master
关于使用ssh keys认证账号,可以免去每次提交的时候都需要输入账号密码的步骤。具体方法见官方说明https://help.github.com/articles/generating-ssh-keys/