工作区:就是你在电脑里能看到的目录。
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
远程仓库:本地仓库修改完毕,需要提交到GitHub等代码管理网站上的远程仓库上。
最基本的用户名和邮箱。邮箱作为git账号,需要和远程github或者gitee等网站账号相同。
git config --global user.name <name>
git config --global user.email <email>
git init
# git init
git init # 初始化当前目录为git本地仓库
git init <git_dir> # 指定git_dir目录为仓库目录
git clone 拷贝远程仓库到本地
# git clone
git clone <git地址> # 拷贝指定git项目到当前目录
git clone <git地址> <local_dir> # 拷贝指定git仓库项目到指定目录下
git add <file> # 提交工作区指定修改文件到暂存区
git add . # 提交当前目录下所有修改到暂存区
git commit -m '描述信息,提交记录' # 提交暂存区中所有修改到版本库
git status # 查看仓库状态
git diff # 比较工作区和暂存区文件差异
git reset
git reset [--soft | --mixed | --hard] [HEAD]
HEAD 说明:
- HEAD 表示当前版本
- HEAD^ 上一个版本
- HEAD^^ 上上一个版本
- HEAD^^^ 上上上一个版本
- 以此类推…
可以使用 ~数字表示:
- HEAD~0 表示当前版本
- HEAD~1 上一个版本
- HEAD^2 上上一个版本
- HEAD^3 上上上一个版本
- 以此类推…
从工作区和暂存区删除某个文件:
git rm <file>
只从暂存区删除,继续保留在工作区:
git rm --cached <file>
递归删除:
gir rm -r <dir>
移动或者重命名
git mv <file> <newfile>
如果新文件名已存在,可以加
-f
进行强制重命名
git log 查看历史提交记录
git log # 查看历史提交记录,默认为 新---> 旧,即最新的在最上面
git log --oneline # 一行的形式查看提交记录
git log --graph # 开启拓扑图选项
git log --reverse # 由旧到新查看提交记录
git log --author <authorName> # 查看指定提交人的提交记录
git log [ --since | --before | --until | --after ] <time> # 查看指定时间段的提交记录
git blame
查看指定文件的历史提交记录
提交本地代码仓库的修改到远程仓库、拉取远程仓库的代码到本地等操作
git remote -v # 查看当前git本地目录对应的远程仓库信息
git remote show [remote-url] # 查看指定远程仓库信息
git remote add [remote-name] [remote-url] # 添加远程版本库
git remote rm [remote-name] # 删除本地仓库对远程仓库的管理,并非删除远程代码仓
git remote rename old_name new_name # 修改仓库名
在已有远程仓库的前提下,通过该命令查看远程仓库的指定分支是否有对应修改,然后可以通过git merge进行合并
git fetch [remote-name] # 查看远程仓库是否有更新
git merge [remote-name]/[branch] # 合并远程修改到本地
git pull 命令用来从远端仓库获取代码并合并到本地。其实就是git fetch 和 git merge HEAD 的简写形式。
git pull <远程主机名> <远程分支名>:<本地分支名>
注意:假设远程分支名和本地分支名相同,则本地分支名可以不写。
合并本地修改到远程仓库
git push <remote-name> <本地分支名>:<远程分支名>
注意:假设远程分支名和本地分支名相同,则本地分支名可以不写。
如果本地版本和远程仓库的版本有差异,但是有想要强制推送可以加上--force
:
git push --force <remote-name> <本地分支名>:<远程分支名>
git branch <分支名> # 创建分支
git checkout <分支名> # 切换到指定分支
git checkout -b <分支名> # 创建并切换到新分支
git branch -d <分支名> # 删除指定分支
将指定的分支合并到主分支
# 将指定分支合并到当前分支
git merge <合并的分支>
# 删除已合并的分支
git branch -d <合并的分支>
当多个分支中同时修改了同一处地方,此时就需要进行冲突解决。
git merge <合并的分支> # 合并分支
# 出现了冲突
# 在当前分支进行冲突处理,使用编辑器打开冲突文件,进行冲突处理
# 当冲突解决,使用git add 告诉git冲突已解决
git add <冲突文件>
# 重新提交修改到本地仓库
git commit <冲突文件>
菜鸟教程:https://www.runoob.com/git/git-tutorial.html
细读 Git | 弄懂 origin、HEAD、FETCH_HEAD 相关内容:https://www.jianshu.com/p/b494ee197ea8