跟廖雪峰老师学Git

2019-03-29  本文已影响0人  LaputCat

前提已安装git


git完整提交步骤--点击这里
1. [交互编程-15分钟学会github](http://try.github.io/levels/1/challenges/1)  
2. [书籍-重量级教程progit](https://github.com/numbbbbb/progit-zh-pdf-epub-mobi)  
3. [书籍-git magic](https://github.com/blynn/gitmagic/tree/master/zh_cn)  
4. [教程-如何高效利用GitHub](http://www.yangzhiping.com/tech/github.html)  
5. [教程-git immersion](http://gitimmersion.com/)  
[中文版](http://igit.linuxtoy.org/contents.html)  
6. [Pro Git](http://link.zhihu.com/?target=http%3A//git-scm.com/book/zh/v2)

## Git学习资源
[Githug](https://github.com/Gazler/githug): 墙裂推荐!!!
[「Githug」Git 游戏通关流程](http://www.jianshu.com/p/482b32716bbe)  
[Githug通关全攻略](http://fancyoung.com/blog/githug-cheat-sheet/)  
[Try Git](https://try.github.io/levels/1/challenges/1)  
[Learn Git Branching](http://pcottle.github.io/learnGitBranching/)  


## 参考资料
[必须要会的Git基本使用及常用命令操作](http://www.jianshu.com/p/555e7a188312)  
[全面理解Git](https://zhuanlan.zhihu.com/p/24081900)  
[Git常用命令总结](http://www.cnblogs.com/mengdd/p/4153773.html)  
[【开源必备】常用git命令](https://zhuanlan.zhihu.com/p/25868120)  
记住一句话:GIT是管理和跟踪是修改,而非是文件
1.创建版本库(仓库)
桌面创建文件夹
3098875-a6af82f24c2585b9.png
2.让成为Git可以管理的仓库
初始化 git init
查看初始化目录:ls -ah
3098875-b93d8981073c10b0.png
3.添加文件到仓库
git add <file> 从工作区移到版本库中的stage(暂存区)
///可反复多次使用,添加多个文件;
git commit -m <message> 提交到把暂存区的所有内容提交到当前分支(特指是当前分支)
//注释
image.png
4.修改提交的文件

查看修改的状态

git status
查看仓库当前的状态,readme.txt被修改过了,但还没有准备提交的修改
image.png
4..查看对比文件修改
image.png
4.2提交修改后的文件
git add <file>
git commit -m <message>
image.png

结果:Git告诉我们当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的

5回滚历史版本,回到某个时间的修改前的文件

在这之前看下我们提交和修改那几次哪些内容

git log 
//显示从最近到最远的提交日志
image.png
5.1了解主要日志信息
  git log --pretty=oneline
image.png

前面的一长串的字符是:一个SHA1计算出来的一个非常大的数字,用十六进制表示
commit id(版本号)相当于是提交历史的时间线

5.3回滚版本
5.3.1.先确定当前是那个版本号----那长串16进制 ,HEAD表示当前版本
image.png

小知识点:

5.3.2.正式回滚
git reset --hard HEAD^
image.png
5.3.3.查看文件是否完成回滚
cat  文件名.后缀
image.png image.png image.png

关于日志信息问题

5.3.4.Git Bash Here窗口没有关闭
image.png
通过版本号回滚
git reset --hard 版本号
image.png
5.3.5.已关闭git bash here 窗口

当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL时候,可是我TM已经找不到版本号了

git reflog 用来记录你的每一次命令
image.png
6工作区,暂存区
6.1工作区:
image.png
6.2暂存区:

.git隐藏目录
Git的版本库

image.png

版本库东西存N多
主要是
暂存区
默认分支master

image.png

执行操作如下:
git add 文件名
git commit -m "信息"

6.3考试要考的:
image.png
7.管理修改
7.1.过程:
image.png image.png image.png image.png image.png image.png image.png image.png
8.撤销修改
8.1过程:
image.png
8.1.1结果:

git撤销修改可以使用 git checkout -- 文件名
使用这个命令可以让工作区的修改全部撤销
但是分为以下两种

image.png
8.1.2情况是:

回到git commit 和git add 之前的文件内容

我这边是第一种情况----回到git add 之前的状态
就是如下图:

image.png
8.2撤销操作:
image.png image.png

所以我们git diff 就没有显示的内容

演示第二种情况----回到git commit 之前的状态

image.png image.png image.png image.png
8.2删除文件内容操作
image.png
8.1.1创建分支
image.png
git checkout命令加上-b参数表示创建并切换
相当以下两个命令:
git branch dev
git checkout dev
当前分支前面会标一个*号
image.png image.png

M:修改过
D:删除了

git merge dev 合并到主分支上去

image.png

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常

image.png

git branch -d dev 删除已合并的分支

image.png

小结:

image.png
9.解决冲突

过程:
创建新分支 feature1
修改其中一条内容

image.png

master主分支:

image.png

合并出现冲突

image.png

解决冲突:

image.png
<<<<<<
当前主分支(已提交至版本库中的内容)
======
其他分支(已做修改准备提交版本库内容)
>>>>>>
image.png

之后参看日志分支

image.png

删除分支(可选)

image.png

分支管理策略
过程:
创建分支Dev 修改内容
切换至master分支

image.png image.png image.png

推荐使用:git merge --no-ff -m"注释" 分支名

git stash用法

引用老师的场景:
比如与你接到一个修复一个代号001的bug的任务时,很自然地,你想创建一个分支issue-001来修复它,但是,等等,当前正在dev上进行的工作还没有提交,但是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?

stash相当于 把手上的工作在“藏起来”,解决问题后再继续完成手上的工作

实操:

image.png

假设dev正在工作的代码
BUG出现在master上面
操作1. 保存dev分内容

image.png

操作2.
切换分支
修复bug
将"学习分支管理策略"改成"学习解决BUG分支",并提交

image.png

切换至master分支

image.png

接着回去dev分支进行开发

查看stash内容
git stash list

恢复stash内容
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
二用git stash pop,恢复的同时把stash内容也删了

image.png

Feature分支学习

image.png

多人协作开发

1.--------查看远程连接
git remode -v
2.--------删除远程连接
$ git remote rm github
以上github 是远程仓库在本地Git中的名称
3.---------修改远程连接
git remte set-url origin URL
4.--------删除本地分支
git branch -d 本地分支名称
5.-------删除远程分支
git push --delete 链接别名  远程分支名
6.--------拉取远程分支(基于master分支,远程新建分支)
git pull 拉取全部分支
 git fetch origin(连接别名) master(分支)
 //从远程的origin仓库的master分支下载代码到本地的origin master
git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp
切换分支temp
1.git add .  2.git commit 注释  3.git push origin temp

还有一种git 本地给远程仓库创建分支

本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
上一篇 下一篇

猜你喜欢

热点阅读