版本库原理
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
![图片描述][1]
创建版本库:
1 | #创建文件 |
查看
1 | #查看历史记录,git log命令显示从最近到最远的提交日志 |
版本回退:
1 | #Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当回退版本较早时可以写成HEAD~100。 |
撤销修改
命令git checkout ——file 把文件在工作区的修改全部撤销,这里有两种情况:
* 一种是file修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
* 一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
1 | #文件在工作区的修改全部撤销 |
删除文件
命令git rm用于从版本库删除一个文件。
如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
1 | #从版本库删除一个文件 |
提示:先手动删除文件,然后使用git rm
和git add 效果是一样的。
添加远程仓库
1 | #关联一个远程库 |
从远程库克隆
1 | # |
比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
1 | #这会在当前目录下创建一个名为grit的目录,其中包含一个.git的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的grit目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用。 |
如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
1 | #唯一的差别就是,现在新建的目录成了mygrit,其他的都和上边的一样。 |
分支管理
![图片描述][2]
创建+切换分支:
1 | $ git checkout -b <name> |
创建分支:
1 | $ git branch <name> |
切换分支
1 | $ git checkout <name> |
查看分支:
1 | #git branch命令会列出所有分支,当前分支前面会标一个*号。 |
切换分支
1 | #切换回master分支 |
合并某分支到当前分支
1 | $ git merge <name> |
删除分支
1 | $ git branch -d <name> |
Git分支十分强大,在团队开发中应该充分应用。
合并分支时,加上—no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
储藏
储藏可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。
现在你想切换分支,但是你还不想提交你正在进行中的工作;所以你储藏这些变更。为了往堆栈推送一个新的储藏,只要运行git stash。把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
1 | git stash |
需要说明一点,stash是本地的,不会通过git push命令上传到git server上。
查看现有的所有储藏,此命令显然暗示了git stash可以多次保存工作进度,并用在恢复时候选择。
1 | $ git stash list |
重新应用已经实施的储藏(不删除储藏)
1 | #如果你想应用更早的储藏,你可以通过名字指定它,像这样:git stash apply stash@{2}。如果你不指明,Git 默认使用最近的储藏并尝试应用它 |
重新应用已经实施的储藏(删除储藏)
1 | #如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作进度列表中清除。 |
删除一个存储的进度。(默认删除最新的进度)
1 | $ git stash drop [<stash>] |
清空当前所有的stash
1 | $ git stash clear |
基于储藏进度创建分支。
1 | $ git stash branch <branchname> <stash> |
多人协作
查看远程库的信息:
1 | #或者用git remote -v 可显示更详细的信息 |
推送分支,该分支上的所有本地提交推送到远程库
1 | $ git push origin <branch-name> |
从本地推送分支,如果推送失败,先抓取远程的新提交:
1 | $ git pull |
推荐阅读:
我是Cloudy,年轻的前端攻城狮一枚,爱专研,爱技术,爱分享。
个人笔记,整理不易,感谢阅读、点赞和收藏。
文章有任何问题欢迎大家指出,也欢迎大家一起交流前端各种问题!
评论加载中