一. git 和 svn 比对
-
git 是分布式的版本管理工具,没有中央版本库
-
git能很方便的离线进行代码版本管理,而不需要与服务器交互
-
git是三级结构,工作区/暂存区/版本库,中间多了一层暂存区stage,该结构保证git管理的是修改的内容,而不是文件
-
git版本回退非常方便和快捷 (git 版本跳转是指针的移动)
-
git提交的ID采用hash值表示,因为分布式
-
git切换分支修改BUG非常的方便,可以保存现场
二. git 常见使用问题
设置git 不输入密码
git config --global credential.helper store
获取远程分支到本地
git branch -a
git fetch origin branch_name
冲突合并方法
- 提交本地修改 git add . && git commit -m "xxx"
- 拉取远程分支 git pull
- 合并 git mergetool
- 提交合并 git commit -m "merge conflict"
- 提交远程分支 git push
多人同步开发减少merge记录
- git add .
- git pull
- 处理merge
- git commit -m "XXX"
- git push
切换分支修改bug
- 保存现场 git stash
- 切换分支 git checkout master && git branch -b issue-01
- 修改提交 git add . && git commit -m "xx"
- 切回开发分支 git checkout dev
- 回到现场 git stash pop
回退某次commit
- git log 找到 commit id
- git reset --hard commit_id
三. 常见命令
版本状态查看:
git status
版本提交
git add app.js | git add . | git add * --
提交文件到缓冲库
git commit -- 从缓冲库提交到版本库
文件比较
git diff app.js
查看log
git log | git log --pretty=oneline
版本库回滚
git reset --hard HEAD^ | git reset --hard HEAD^^ | git reset --hard HEAD~10
跳转某个版本
git reset --hard 9fecab****
查看历史命令 (查找某个版本的commit id)
git reflog
版本修改回退
回退没有提交到stage的修改
git checkout --app.js
回退已经提交到stage的修改
git reset HEAD app.js
回退版本库中的修改
git reset --hard HEAD^
版本库删除文件
git rm app.js git commit
暂存库删除文件
git checkout --app.js
添加远程库
git remote add origin git@github.com:hucaihua/test
首次推送文件
git push -u origin master
推送修改文件到远程库
git push origin master
推送分支
git push origin dev
clone 远程库
git clone GIT_URL
git 创建分支 并且切换分支
git checkout -b dev
切换分支
git checkout dev|master
查看分支
git branch
创建分支
git branch dev
删除分支
git branch -d dev
删除远程分支
git push origin --delete baoxi
强制删除分支
git branch -D dev
合并分支
git merge --no-ff -m "merge no ff" dev
打tag
git tag v1.0