VSC
(version control system):版本控制系统
集中式——客户端必须时刻和服务器相连
SVM
分布式——服务端和客户端都有完整的版本库
- GitHub——全球最大
git官方文档地址
git下载安装地址
问题:这两天在公式开发中开始用git进行开发了,但是一打开IDEA的客户端。却看到了复杂的git图谱。各种颜色的分支、各种颜色的线。看到了这些纵横交错的线,只感觉蒙蒙的。
- 简书:带你一步一步看懂Git图谱
好在在这个开源的时代,很容易能看到答案:
1. 新的分支`commit`的差异,产生了新的支线
2. 同一分支,不同仓库`commit`的差异,产生了新的分支
3. 同一分支,不同仓库的`merge`,合并了支线
4. 不同分支的`merge`合并了支线
## 添加name和email配置
git config [--local | --global | --system] user.name 'Your name'
git config [--local | --global | --system] user.email 'Your email'
## 查看现有配置
git config --list [--local | --global | --system]
## 区别
## --local:本仓库
## --global: 当前用户的所有仓库
## --system: 本系统的所有用户
git cat-file
-t 看类型
-p 看内容
## 在已有项目文件夹里创建git仓库
git init
## 新建一个名为[Project Name]的git仓库
git init [Project Name]
## 添加文件到该git项目中
## 添加要commit的文件到
git add [File Name]
### PS:添加当前路径下的所有文件—— git add .
## 附带信息进行commit操作
git commit -m'Some Message'
### 查看git状态,如:哪些文件待commit,哪些未被跟踪
git status
### 查看git记录,如:commit的记录
git log
## 重命名
mv readme readme.md
## 添加新文件readme.md
git add readme.md
## 删除被跟踪的旧文件readme
git rm readme
## 一条命令顶上面三条
git mv readme readme.md
## 提交
git commit -m"rename"
git commit -am'msg'
git rm <FILENAME>
## 查看简洁的单行历史
git log --oneline
## 查看最近的4条历史
git log -n4
git log -4
## 查看所有分支的历史
git log --all
## 查看指定分支(名为BRANCH_NAME)的历史
git log BRANCH_NAME
## 查看图形化的版本历史
git log --graph
## 组合使用:查看所有分支最近4条图形化的单行历史
git log --all -n4 --graph --oneline
## 跳转到网页版的git log帮助文档
git help --web log
## 回退到最新的一次提交,即清空暂存区
git reset --hard
## 暂存区恢复成HEAD
git reset HEAD
## 恢复所有文件,加参数后只恢复某个文件
git checkout
git checkout <FILENAME>
## 把工作区的某个 file 替换为暂存区
git checkout -- file
## 把工作区变更的所有文件都恢复成和暂存区的一样
git checkout *
git reset HEAD [FILENAME]
### 从某个分支创建新的分支
git checkout -b <NEW_BRANCH_NAME> <BASE_BRANCH_NAME/HASH_OF_COMMIT>
git branch -d <BRANCH_NAME>
## 强制删除分支
git branch -D <BRANCH_NAME>
## 删除远程分支
git push <REMOTE> --delete <BRANCH_NAME>
## 同时查看本地和远程的分支
git branch -a
## 创建名为new_branch的新分支
git checkout -b <new_branch> []
## detached HEAD
git checkout <HASH_OF_COMMIT>
## 1. 如果不想保留,直接切换分支
## 2. 如果想保留,需要创建新分支与其对应
git branch <new_branch> <HASH_OF_COMMIT>
## 比较两个commit之间的文件差异
git diff <A> <B>
git diff 34976f8 a60a3d5
git diff HEAD HEAD~
git diff HEAD 'HEAD^'
## 比较暂存区和HEAD的区别
git diff --cached
## 比较工作区和暂存区所含文件的差异
git diff
git diff --filename
## 看看不同提交的指定文件的差异
git diff <HASH_OF_COMMIT> <HASH_OF_COMMIT> [-- FILENAME]
## 修改最新的commit的message
git commit --amend
## 怎么修改老旧commit的message,变基操作要基于父commit
## 要修改最开始的commit hashcommit 为 --root
git rebase -i <HASH_OF_COMMIT>
## 交互式
r,reword [修改message]
s,squash [合并连续的commit],[将不连续的commit调整顺序后也可合并]
## 中断后
git rebase --continue
## 当前工作区和暂存区的内容迁移到一个额外的栈
git stash
## 先查看stash了哪些内容
git stash list
## 恢复栈顶的保存记录,且记录列表里还保留该记录
git stash apply
## 恢复栈顶的保存记录,并把记录列表里的该记录删除
git stash pop
git reset --hard <HASH_OF_COMMIT>
git clone 、 git push
## 本地添加一个远程服务地址
git remote add intel file:///Users/double/Desktop/test_remote/intel.git
## 查看信息
git remote -v
git fetch github
git merge
git pull
## 通过merge的方式进行拉取
git pull --no-rebase