2017-12-27 Git的快速学习

1. Git 版本回退命令

HEAD 代表当前版本

HEAD^ 上个版本

HEAD~100  往上100个版本

2. git reset --hard head^

git reset --hard 版本号


3.查询历史提交

git log  查询现在版本库的状态

git reflog 查询历史某个版本

4. 仓库内部结构如下图


2017-12-27 Git的快速学习_第1张图片

新建的文档。用 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 [email protected]: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.若合并过程中出现矛盾,解决冲突再推送

你可能感兴趣的:(2017-12-27 Git的快速学习)