发现一个写得十分有意思的Git教程:廖雪峰的官方网站http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
于是乎,学习、整理、记录下来。
以下内容大部分摘录自以上所说的Git教程:
1.Git简介
分布式版本控制系统
1.1诞生
1.2集中式vs.分布式
集中式:版本库集中存放在中央服务器
分布式:每个人的电脑上都是一个完整的版本库
2.安装Git
3.创建版本库 Repository
.../Learn/LearningGit
git init (在LearningGit文件夹下多了.git文件夹,创建了LearningGit仓库)
git add readme.txt
git commit -m "wrote a readme file"(把文件提交到仓库)
4.时光穿梭机
git status(仓库的状态)
git diff readme.txt(查看修改的内容)
4.1版本回退
git log(显示从最近到最远的提交日志、版本号、内容等)
git log --pretty=oneline(一行显示出来)
git reset --hard HEAD^
HEAD: 当前版本
HEAD^: 上一版本
HEAD^^: 上上一个版本
HEAD~100: 往上100个版本
git reset --hard 4a4919(版本号)
git reflog(可以查看命令历史)
4.2工作区和暂存区
Working Directory
LearningGit文件夹就是一个工作区
.git文件夹时Git的版本库
add把文件添加到暂存区(stage)
commit把暂存区的文件提交到当前分支,暂存区就没有内容了
4.3管理修改
git diff HEAD -- readme,txt(查看工作区和最新版本的区别)
4.4撤销修改
git checkout -- readme.txt(直接丢弃工作区的修改,其实就是用版本库内容替换工作区版本内容)
git reset HEAD readme.txt(把stage的修改回退到工作区)
4.5删除文件
rm test.txt(工作区文件删除)
git rm test.txt(版本库中文件删除)
git commit -m "remove test.txt"
5.远程仓库
5.1添加远程仓库
/C/User/john/Desktop/Learn/GKA
git init(这时候GKA文件夹下会有.git文件夹)
git remote add origin git@github.com: sunyy5/GKA.git
git push -u origin master(本地内容推送到远程仓库,-u代表第一次推送时,把本地master分支和远程master分支关联,以后直接使用git push origin master就可以了)
git pull origin master
5.2从远程仓库克隆
git clone git@github.com:sunyy5/GKA.git
或者http://github.com/sunyy5/GKA.git
6.分支管理
6.1创建与合并分支
git checkout -b dev(创建并切换到dev分支)
相当于这两个指令: git branch dev和git checkout dev
git branch(查看当前分支)
如果要切换到bug分支前,你在dev分支,而你工作只进行到一半,还没法提交,无法切换到bug分支。
git stash(把当前工作现场储藏起来)
修复完bug之后
git stash list
git stash pop(相当于两个指令:git stash apply和git stash drop)
(5)feature分支
git checkout -b feature-vulcan
如果丢弃一个没有被合并过的分支,则用git branch -D <name>强行删除
(6)多人协作
查看远程仓库信息 git remote -v
本地新建的分支如果不推送到远程,对其他人就是不可见的。
从本地分支推送失败,使用git push origin branch-name
如果推送失败,先用git pull抓取远程的新提交
从本地创建和远程对应的分支,使用git checkout -b branch-name origin/branch-name(本地和远程分支最好一致)
(如果git pull提示“no tracking information”, 则说明本地和远程分支无关联)
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
多人协作的工作模式:
1.试图用git push origin branch-name推送自己的修改
2.推送失败则说明远程分支比本地新,git pull试图合并
3.合并有冲突则本地解决,本地提交
4.解决后再推送
学习完之后,对Git心生仰慕之情。我希望通过自己的努力,在以后的实践中对Git有更深刻的理解。
最后,记下最近对我影响甚深的一句话语:“别被表象迷惑了。”
其他相关资料:
Connecting to GitHub with SSH