Git工具的学习和使用
1.工作区和暂存区
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区。
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
第三步是用git push将本地仓库的代码提交至远程仓库。
2. fetch和pull区别
git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
如果设置了某个分支用于跟踪某个远端仓库的分支(参见下节及第三章的内容),可以使用 git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。在日常工作中我们经常这么用,既快且好。实际上,默认情况下 git clone 命令本质上就是自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有 master 分支)。所以一般我们运行 git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。
3.暂存区 stage的作用
一.git 历史,linux 命令行没有可视化工具,一下找到所有文件做git commit 比较困难,所以linus增加了git add的stage区域。
二.如果我们开发了新功能,没有充分经过自测,暂时还不能提交远程仓库,可以增加到git stage中。继续做部分测试开发,如果此时想重新回到之前的提交,这时候就可以从stage中还原回来。
4. 关于Git Fork的开发模式
1)从别的项目fork一下,使其变成自己的项目代码
2) 提交的时候先提交到自己的git地址上,然后通过git界面的 merge request到作者的项目中,不过真实的合并是作者来做的。
3)如何让自己的项目与作者的最新代码保持一致
git remote -v 查看自己的远程仓库
git remote add pb git://github.com/paulboone/ticgit.git 添加远程仓库
git remote -v 查看自己的远程仓库
git pull pb dev 合并远程仓库的最新代码,后面两个参数一个是仓库名 还有一个是分支的名称
或者先git fetch pb 到本地, git checkout dev , git merge pb/dev
5. git 提交到远程仓库,想回滚怎么办?
git revert 相应的提交(这一步只是回滚本地提交)
git commit and push
6. git 新建本地分支来跟踪远程分支
git checkout -b local_branch origin/remote_branch
7. git 项目迁移
比如你原来的是http://xxA.git master,要迁移到http://xxB.git dev怎么搞呢?
git clone http://xxB.git
git checkout -b dev origin/dev
git remote add arepo http://xxA.git master // 添加A仓库为远程仓库
git pull arepo master //合并A仓库的master分支代码
git push // 提交到B仓库
8. 关于git stash
git stash save "save message"
git stash list
git stash pop stash@{num}
git stash drop stash@{num}
git stash clear
9. 基于当前master分支的某个版本拉分支
当前在master
git checkout -b hotfix_xxx d814a27f557ce19da12eb93e2634c03c3c79f6de
git push origin hotfix_xxx