目录
一、基本使用官方文档
http://www.bootcss.com/p/git-guide/
单机模式
工作流:
git status查看当前git的工作状态
0.干净 新增或修改-> 1.未记录 add-> 2.已提交 commit -> 3.干净
问题由浅入深:
处于已提交的状态(即状态2) 怎么返回?
只撤销一个文件的修改: $ git reset <文件名>
撤销所有文件的修改: $ git reset
修改HEAD指针! : $ git reset --soft HEAD~1 git reset --hard <commit_id>
处于干净的状态怎么返回? 可以修改提交的备注信息吗? 不小心commit 还push了怎么办 ?
编辑最近一次的提交信息,如果你对当前的代码库(working copy)做修改,这些修改也会随commit信息一起提交。
git commit --amend -m ”NEW-COMMIT-MESSAGE”
这将不执行最后一次提交,恢复你原来的内容,提交信息将默认为你下次提交的信息。
假如你已经将代码提交(git commit)推送(git push)到了远程分支,那还需要通过下面的命令强制推送这次的代码提交。
git push origin HEAD --force (不推荐使用)
如何回到过去的版本?
使用git log 查看 提交历史记录 http://blog.csdn.net/wh_19910525/article/details/7468549
使用git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能看已经删除了的commit记录
git reset --hard <commit_id>
协同模式:
分支:
创建分支: $ git branch mybranch
以远端master创建分支: $ git checkout -b mybranch o/master
切换分支: $ git checkout mybranch
列出所有分支: $ git branch
删除分支: $ git branch -d mybranch
强制删除分支: $ git branch -D mybranch
删除远程分支:$ git push origin --delete <branch_name>
合并与更新
更新master主线上的东西到该分支上:$git rebase master
更新mybranch分支上的东西到master上:$git rebase mybranch
如果有冲突 :
不要随意删除别人的代码 !
解决完合并冲突后要添加文件... ( 是的 我忘记过不止一次. )
好的建议:
1.提交前diff一下代码 确保没有提交测试和 有bug的代码.
2.下班回家前整理好自己的工作区 , 该提交的就提交 有备份也避免丢代码的风险.
3.并行的项目, 使用分支开发
4.产品发布后记得打tag, 方便以后拉分支修bug.
扩展阅读:
git push origin master 和 git push -u origin 有什么区别 ?
http://stackoverflow.com/questions/5561295/what-does-git-push-u-mean
简而言之: -u 影响 git fetch 与 git pull. -u将提交的 git server记录在git config文件中!
merge 和 rebase 的区别?
http://blog.csdn.net/wh_19910525/article/details/7554489