一些概念
- 工作区:就是你在电脑里能看到的目录;
- 暂存区: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