一些概念
- 工作区:就是你在电脑里能看到的目录;
- 暂存区:stage区 或 index区。存放在 :工作区 / .git / index 文件中;
- 版本库:本地仓库,存放在 :工作区 / .git 中
  
- 关于 HEAD 
  - 是所有本地分支的游标(指针);
- HEAD既可以指向某个分支,还可以指向某个分支的某个(次)提交;
- HEAD指向谁,谁就是和当前工作区、暂存区、相关联的分支,即:对于add、checkout、commit命令去操作的分支对象!
- HEAD的存在非常重要,因为它提供了对当前工作区状态的快速访问和管理;
- 相关命令:
 git checkout branch_name命令切换分支,HEAD会指向所切换到的分支。
 git checkout commit_hash命令切换到某个具体的提交,HEAD会指向该提交。
 
- master和origin的关系 
  - master 表示本地仓库主分支(名称);
- origin 是远程仓库的代指;origin 是远程Git仓库的默认名称;
- origin 是远程仓库的主分支?
- 例如在使用:git clone https://github.com/ArduPilot/ardupilot.git 下载远程仓库代码时,在后续的操作中,默认会将 https://github.com/ArduPilot/ardupilot.git 指向的远程仓用origin来表示!
 
- 本地仓库
 远程仓库的拷贝(这个说法不太准确)
- 远程仓库 
  - 用于多个本地仓库的协调开发;
- 用于备份本地仓库;
 
- 分支 
  - 分支也称为“快照”
- 一个分支代表一条独立的开发线;
 使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作,最后还可以合并到主分支:
  
- 只有仓库才存在所谓分支,工作区和暂存区不存在分支的说法;本地仓库有分支,本地分支;远程仓库有分支,远程分支;
- 相关命令: 
    - 参考文献:http://rogerdudler.github.io/git-guide/index.zh.html
- 在远程开好分支,本地直接拉下来;
 git checkout -b feature-branch origin/feature-branch //检出远程的feature-branch分支到本地
- 本地开好分支,推送到远程;
 git checkout -b developer_gen3_new_branch_name //在本地创建分支
 git push --set-upstream origin developer_gen3_new_branch_name //推送到远程
- git branch + 分支名字:创建本地分支
- git checkout -b <分支名> :创建并切换到新的本地分支
- git checkout<分支名>: 切换到本地分支
- git branch 查看当前分支
- git branch -a:查看全部分支(包含本地和远程)
- git branch -v:查看每一个(本地)分支的最后一次提交
- git branch --merged:查看哪些(本地)分支已经合并到当前(本地)分支
- git branch --no-merged : 查看哪些(本地)分支还没有合并到当前(本地)分支
- git branch --no-merged master:查看当前未合并到master分支的有哪些?
- git branch --merged master:查看当前已合并到master分支的有哪些?
- git merge :将当前分支合并到主分支
- git branch -d [branchname]:删除本地分支
- git push origin --delete [branchname]:删除远程分支
 
 
Git 基本操作
- 参考文献:https://www.runoob.com/git/git-basic-operations.html
- 关于工作区、暂存区、本地仓库 的操作:
  
| 命令 | 说明 | 
|---|---|
| git remote -v | 查看远程仓库的地址 | 
| git add | 添加文件到暂存区 | 
| git status | 查看仓库当前的状态,显示有变更的文件。 | 
| git diff | 比较文件的不同,即暂存区和工作区的差异。 | 
| git commit | 提交暂存区到本地仓库。 | 
| git reset | 回退版本。 | 
| git rm | 将文件从暂存区和工作区中删除。 | 
| git mv | 移动或重命名工作区文件。 | 
| git checkout | 分支切换。 | 
| git switch | 更清晰地切换分支(Git 2.23 版本引入)。 | 
| git restore | 恢复或撤销文件的更改(Git 2.23 版本引入)。 | 
- 关于远程仓库、本地仓库相关的操作:
  
| 命令 | 说明 | 
|---|---|
| git remote | 远程仓库操作 | 
| git clone | 从远程获取代码库 | 
| git pull | 下载远程代码并合并 | 
| git push | 上传远程代码并合并 | 
| git submodule update --init | 初始化子模块 | 
| git submodule update --init --recursive | 下载子模块代码 | 
- 日志
| 命令 | 说明 | 
|---|---|
| git log | 查看历史提交记录 | 
| git blame | 以列表形式查看指定文件的历史修改记录 | 
- Git 标签
 https://www.runoob.com/git/git-tag.html
Git 服务器
- 自己搭建服务器
- 使用 github
参考:https://www.runoob.com/git/git-server.html



















