1. Git 与 SVN 的区别
- 最大的区别:Git是分布式的,不需要服务器统一管理,而SVN是集成中式的,需要服务器统 一管理;
- 分支管理不同,Git有很强大的分支管理功能,而SVN中的分支就是另外一个包含完整代码的目录;
- Git内容是按元数据的方式进行存储,而SVN是按文件存储,所有内容都是按文件形式存储在 .svn这个隐藏文件夹中;
- Git没有SVN中全局版本号的概念;
2. Git 和 GitHub 以及 Gitlab 的区别
- Git 是一个开源的分布式版本控制工具。
- GitHub 和 Gitlab 都是基于 Git 的在线的代码托管平台,提供 web 端支持,支持私库,除了代码托管,他们还可以实现开源项目分享、代码Review、共同协作、工作流等一系列功能。
3. Git .gitignore 文件的作用
- .gitignore 文件由来:
因为我们都需要排除一些与程序无关的代码的文件,如 eclipse、idea 等工具留下来得 .settings、.classpath、.project、.iml、.idea 等各种配置文件,还有 Maven、gradle 在项目构建后的target、class 目录下得编译文件等。
所以我们不能把这些本地化的无用的配置文件提交到远程仓库上面去,这样会造成别人每次都有更新的要求,也会污染别人的开发环境。 - .gitignore 文件作用:
.gitignore 是 Git 的忽略配置文件,放在项目根目录下就行,这样在提交代码时就不会跟踪在 .gitignore 配置文件列举的文件。
别外,.gitignore 文件本身需要被 Git 跟踪管理,不能被忽略。所以,如果你有时候发现不能跟踪文件了,可以使用一下命令检查是否被忽略:git check-ignore .git
.git - 特殊情况:
如果你想强制提交一个在忽略列表中到的文件,可以使用一下命令:git add -f javastack.cn
4. Git 配置个人提交信息
git config --global user.name “your name”
git config --global user.email “your_email@youremail.com”
-golbal:表示全局配置,配置文件用户主目录。
5. Git 常用仓库管理命令
-
创建仓库
git init
在当前目录执行,会生成 .git 目录文件,这个和 SVN 一致。
-
提交到仓库
git commit -m “first commit”:-m
-m:表示提交描述。必须要填
-
添加到远端仓库
git remote add origin https://github.com/javastacks/javastack
-
推送到远端仓库
git push -u origin master
-
克隆仓库
git clone https://github.com/javastacks/javastack
-
仓库状态
git status
-
仓库更新
git pull
git fetch
git mergegit fetch 和 git pull 命令的区别:git pull = git fetch(拉取) + git merge(合并)
6. Git 常用的分支管理命令
- 添加分支
git branch name
- 切换分支
git checkout
- 添加并切换分支
git checkout b
- 查看所有分支
git branch
- 删除分支
git branch -d
- 合并分支
git merge(合并到主干)
- 提交分支
git push origin
- 查看分支差异
git diff <source_branch> <target_branch>
7. Git常用的文件管理命令
- 添加文件
git add
git add test.java(添加指定文件)
git add . (添加所有文件) - 取消添加文件
git reset HEAD - filename
- 删除文件
git rm [–cached] filename (默认会取消并删除文件,–cached 表示不删除文件)
- 移动、重命名文件
git mv filename1 filename2(该文件必须被 add 到仓库才能操作)
- 查看文件提交记录
git log
8.Git 的文件流转
Git 分三个区域:工作区、暂存区、版本区。
- 在工作区中添加和修改文件;
- 将需要进行版本管理的文件提交到暂存区;
- 将暂存区域的文件提交到版本区;