Git学习笔记
学习资料:廖雪峰的博客,https://www.cnblogs.com/sdcs/p/8270029.html
按ESC键 跳到命令模式(记得打:)
- :w 保存文件但不退出vi
- :w file 将修改另外保存到file中,不退出vi
- :w! 强制保存,不推出vi
- :wq 保存文件并退出vi
- :wq! 强制保存文件,并退出vi
- q: 不保存文件,退出vi
- :q! 不保存文件,强制退出vi
- :e! 放弃所有修改,从上次保存文件开始再编辑
问题:
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
问题分析:格式化与多余的空白字符
解决方案:
$ rm -rf .git // 删除.git
$ git config --global core.autocrlf false //禁用自动转换
$ git init
$ git add 文件名
$ git commit -m "wrote a readme file" // -m后面代表注释
版本回退小结
查询修改
- git log 查询近期修改
- git log -- pretty=oneline
回到过去 回到未来
- git reset --hard HEAD~CNT //CNT代表返回多少次
- git reset --hard 版本号 // 可以直接确定到达某一个版本,并且版本号要4位以上
- HEAD指针, 回到过去和回到未来的原理
暂存区、工作区小结
- 使用git status显示工作区文件的改变
管理修改小结
- git diff HEAD -- readme.txt
撤销修改小结
- git checkout -- readme.txt // 当文件还没被放到暂存区,丢弃工作区的修改
- git status //显示工作区和缓存区的信息
- git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区
小结:
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
- 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件小结
- git rm test.txt
- git commit -m "delete test.txt"
关联GitHub仓库小结
- git remote add origin git@github.com:Haipai1998/learngit.git
- git push -u origin master
- git push -origin master。第二步骤做过之后,不需要-u了。
远程克隆库小结
- git clone git@github.com:Haipai1998/gitskills.git
- 也可以使用http协议
Git分支管理小结
- 创建与合并分支
- 查看分支:git branch
- 创建分支:git branch <name>
- 切换分支:git checkout <name>
- 创建+切换分支:git checkout -b <name>
- 合并某分支到当前分支:git merge <name>
- 删除分支:git branch -d <name
- 强行推送:git push origin dev --force //再推送到远程仓库
- 解决冲突
- 若合并后想reset : git reset --merge
- git log --graph --pretty=oneline --abbrev-commit 显示分支合并图
- 总结:
- 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成
- 解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交
- 用git log --graph命令可以看到分支合并图
- 禁用ff
- git merge --no-ff -m "merge with no-ff" 分支名称
- 禁用与否区别在于会产生一个新的commit节点???? 不是很清晰
- 一般开发以master来发布最新版本,在dev上干活
- 总结:
- ·合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
退回到上一个comiit ID上去,但是又想把你更改的代码保留
- git reset --soft commit-id ; git status看哈希值ID
- 清空本地缓存 git rm -r --cached .
- git push origin master