1. Git 版本回退命令
HEAD 代表当前版本
HEAD^ 上个版本
HEAD~100 往上100个版本
2. git reset --hard head^
git reset --hard 版本号
3.查询历史提交
git log 查询现在版本库的状态
git reflog 查询历史某个版本
4. 仓库内部结构如下图
新建的文档。用 git status 查询时显示untracked状态
add 文档前
changs not staged to commit
add文档后
changes to be committed
git 管理的是修改,即保存的是修改而不是文件
第一次修改-》add -> 第2次修改-》 add
第二次修改是保存在工作区中,并没有在暂存区中修改
git diff 查询的是工作区的和版本库中的最新版本的区别
5.撤销修改
git checkout -- readme.txt 把工作区的修改全部撤销
将文件回到最近一次commit 或者add的状态
如果修改已经加到暂存区中
用 git reset HEAD readme.txt 再用 git checkout -- readme.txt
## 版本回退仅能针对本地仓库的回退, 如果推送到远程服务器中, 那就无可挽回
6.删除文件
git rm 文件名
git commit
若在本地删错文件后(仓库还有) 用git checkout -- 文件名 恢复
7. 与远程库关联
git remote add origin git@github.com:michaelliao/learngit.git
origin 是远程仓库简称
域名@ 网址: 地址
把本地库内容推送到远程库上
git push -u origin master
8.创建并合并分支
git checkout -b dev = git branch dev && git checkout dev
checkout 命令代表切换到dev分支中
然后在dev上执行add commit 命令后
git checkout master 切换到master分支
合并分支
git merge dev 用于合并指定分支到当前分支
最后记得删除多余分支
git branch -d dev
9. 合并分支出现矛盾时, 切换到有问题分支中, 解决矛盾后commit 就自动merge了
10.git merge --no-ff -m " "
由于merge 过程中会丢失分支的信息,在git log 分支历史看不到, 所以加入--no-ff 可以强制关闭fast forward 模式
11.开发分支与用户分支
当出现BUG的时候 用户分支(master)必须快速修改,但是 开发分支中有大部分文件未提交 正在修改
处理策略
先保存现场
git stash
然后切换到master 分支
git checkout master
在master分支创建BUG 分支 修改BUG
git checkout -b issue-01
git add "readme.txt"
git commit -m ""
然后 合并master 和bug分支
git checkout master
git merge --no-ff -m " " bug
切换回dev分支后恢复现场
git checkout dev
git stash pop (代替方法 git stash list 查询 再用git stash apply stash@{0})
10 删除分支
git branch -d 分支名字
git branch -D 分支名字 强制删除
11.推送分支时 git push origin dev 会推送到对应远成仓库的dev 分支上
12. 多人协作的模式
A. 首先 一般clone 下来的都是master分支
B. 若想clone 下的是远程仓库的dev 分支的话
git checkout -b dev origin/dev
git commit
git push origin dev
但是当push 过程出现错误时,说明远程仓库的内容比你现在分支内容要新。
C. 使用 git pull 命令可以抓取origin/dev 中的最新提交,然后在本地合并
git pull 失败是没有指定本地dev 和远程dev 的链接 修改为
git branch --set-upstream dev origin/dev
git pull
解决冲突(直接修改矛盾的地方)
再提交 add commit ->> 自动merge形成新的dev
然后git push dev origin/dev
D.若合并过程中出现矛盾,解决冲突再推送