Git学习笔记记录
1.Git是目前世界上最先进的分布式版本控制系统。
2.Git是由创建了Linux系统的大佬Linus创建的。
3.CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。
那分布式版本控制系统与集中式版本控制系统有何不同呢?
首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
4.Git在各操作系统中的安装与配置-安装Git
Git操作 | 对应含义 |
---|---|
git init | 初始化Git仓库 |
git add | 添加文件 |
git commit -m | 提交并注释 |
git status | 查看工作区状态 |
git diff | 查看修改的内容 |
5.HEAD指向的版本是当前版本。
Git操作 | 对应含义 |
---|---|
git log | 查看提交历史 |
git reflog | 查看命令历史 |
git reset –hard | 重置为commit_id版本 |
6.工作区和暂存区,git add命令实际上就是把要提交的所有修改放到暂存区(Stage)。
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改
7.Git跟踪并管理的是修改,而非文件。
Git操作 | 对应含义 |
---|---|
git checkout – file | 丢弃工作区中的修改 |
git reset HEAD | 丢弃暂存区中的修改 |
git rm | 删除一个文件 |
8.远程仓库、配置SSH-远程仓库
Git操作 | 对应含义 |
---|---|
git remote add origin git@server-name:path/repo-name.git | 关联一个远程库 |
git push origin master | 推送master分支内容 |
git push -u origin master | 推送并建立关联 |
git clone git@server-name:path/repo-name.git | 克隆一个本地库 |
git branch | 查看分支 |
git branch | 创建分支 |
git checkout | 切换分支 |
git checkout -b | 创建+切换分支 |
git merge | 合并某分支到当前分支 |
git branch -d | 删除分支 |
git branch -D | 强行删除分支 |
git push origin master | 推送master分支内容 |
git push origin master | 推送master分支内容 |
9.合并存在冲突时,手动解决冲突后再提交。
Git操作 | 对应含义 |
---|---|
git stash | “储藏”当前工作现场 |
git stash list | 查看stash列表 |
git stash apply | 恢复stash |
git stash drop | 删除stash |
git stash pop | 弹出栈顶的stash(恢复+删除) |
10.多人协作的工作模式-多人协作
Git操作 | 对应含义 |
---|---|
git remote -v | 查看远程库信息 |
git checkout -b branch-name origin/branch-name | 在本地创建和远程分支对应的分支 |
git branch –set-upstream-to=origin/branch-name branch-name | 建立本地分支和远程分支的关联 |
11.rebase操作可以把本地未push的分叉提交历史整理成直线,使得我们在查看历史提交的变化时更容易。
Git操作 | 对应含义 |
---|---|
git tag | 查看所有标签 |
git tag | 新建一个标签(默认为HEAD) |
git tag commit_id | 新建一个制定commit_id的标签 |
git tag -a -m “blablabla…” | 指定标签信息 |
git push origin | 可以推送一个本地标签 |
git push origin –tags | 推送全部未推送过的本地标签 |
git tag -d | 删除一个本地标签 |
git push origin :refs/tags/ | 删除一个远程标签 |
12.忽略某些文件时,需要编写.gitignore。
13.配置别名、配置文件、搭建Git服务器-配置别名 / 搭建Git服务器
IDEA中使用git对应的操作
以下均为个人理解,如有不当之处,有劳您指出,感谢!
图标1:Commit Directory = git add + git commit
图标2:Add = git add
图标3:与其他分支作比较
图标4:Show History = git log
图标5: Revert = git reset HEAD / git checkout – file
这块操作名称与Git上的指令相同,就不继续叙述了
这里可以提一下 Fetch 与 Pull 的区别是什么?
公式: Pull = Fetch + Merge
Fetch 只拉取下来,不自动合并,Pull拉取下并自动合并。
IDEA界面中,右下角处也可以操作Git:
选择需要操作的项目
图标1:创建新分支
图标2:本地的分支列表
图标3:远程仓库中的分支列表
例如操作:如何拉取这个项目中其他人分支的代码?
1.在远程仓库分支列表(Remote Branches)中,找到别人的分支名。
2.Checkout as new local branch - 在本地创建并关联
3.叉会腰,休息一会….. 完成~