##git基本操作
常用的6个命令
git add、git commit、git push、git checkout、git clone、git pull
git 命令
| 命令 | 说明 | |
|---|---|---|
| 创建仓库 | git init | 初始化仓库 |
| git clone | 拷贝一份远程仓库,即下载一个项目 | |
| 提交与修改 | git add | 添加文件到仓库(不能添加空文件夹gi) |
| git status | 查看仓库当前的状态,显示有变更的文件 | |
| git diff | 比较文件的不同,即暂存区和工作区的差异 | |
| git commit | 提交暂存区到本地仓库 | |
| git reset | 回退版本 | |
| git rm | 删除工作区文件 | |
| git mv | 移动或重命名工作区文件 | |
| 提交日志 | git log | 查看历史提交记录 |
| git blame <file> | 以列表形式查看指定文件的历史修改记录 | |
| 远程操作 | git remote | 远程仓库操作 |
| git fetch | 从远程获取代码库 | |
| git pull | 下载远程代码并合并 | |
| git push | 上传远程代码并合并 |
-
git init
- git init:在当前目录创建 Git 仓库,并创建 master 分支
- git init demo:在 demo 目录下创建 Git 仓库
-
git clone
- git clone <repo>:在当前目录中克隆 repo 仓库
- git clone <repo> <directory>:在 directory 目录下克隆 repo 仓库
-
git status
- git status -s :以精简的方式显示文件状态,A——本地新增的文件,M——文件内容被修改了
-
git diff(以下命令可在末尾加 [file] 文件指定具体的文件)
- git diff:尚未缓存的改动
- git diff --cached 或 git diff --staged:查看已缓存的改动
- git diff HEAD:查看已缓存与未缓存的所有改动
- git diff --stat:显示摘要而非整个diff
- git diff [first-branch]...[second-branch]:显示两次提交之间的差异
-
git commit
- git commit -m [message]:提交暂存区到本地仓库区,message 为备注信息
- git commit [file1] [file2] ... -m [message]:提交暂存区的指定文件到本地仓库
- git commit -a:将修改过的文件(包括没有添加到缓存区的文件)提交到本地仓库
-
git config(去掉 global 参数则只对当前仓库有效)
- git config --global user.name "232323":设置提交的用户名
- git config --global user.email cyh@cyh.com:设置提交的用户邮箱
-
git reset(语法格式为:git reset [--soft | --mixed | --hard] [HEAD],mixed 为默认,可不带,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变;--soft 参数用于回退到某个版本;--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到某个版本,并删除之前的所有信息提交)
- git reset HEAD:取消已缓存的内容
- git reset HEAD^:回退所有内容到上一个版本
- git reser HEAD^ [file]:回退某个文件到上一个版本
- git reset 052e:回退到指定版本
- git reset --hard origin/master:将本地的状态回退到和远程一样
- 可以使用^表示版本
- HEAD 表示当前版本
- HEAD^ 上一个版本
- HEAD^^ 上上一个版本
- HEAD^^^ 上上上一个版本
- 可以使用 ~数字表示版本
- HEAD~0 表示当前版本
- HEAD~1 上一个版本
- HEAD^2 上上一个版本
- HEAD^3 上上上一个版本
- 可以使用^表示版本
- git rm
- git rm <file>:将文件从暂存区和工作区中删除
- git rm -f <file>:强行从暂存区和工作区中删除修改后的文件
- git rm --cached <file>:将文件从暂存区中删除,在工作区中保留
- git rm -r *:* 可以为某个目录,表示递归删除目录中的所有子目录和文件
- git mv
- git mv [file] [newfile]:移动或重命名一个文件、目录或软连接
- git mv -f [file] [newfile]:当重命名文件出现重复名称时,强制重命名,删除重名文件
- git log
- git log:查看历史提交记录(--oneline :查看简洁版的历史提交记录,--graph:查看历史中什么时候出现了分支、合并,--reverse:逆向显示所有日志,--no-merges:隐藏合并提交)
- git log --author=cyh:查看 cyh 用户的提交日志
- git log --before={3.weeks.ago} --after={2021-01-01}:查看指定日期的提交日志(也可以用 --since和 --after代替 --before 和 --after)
- git blame <file>:以列表形式查看指定文件的历史提交记录
- git remote
- git remote -v:显示所有远程仓库
- git remote show [remote]:显示某个远程仓库的信息
- git remote add [shortname] [url]:添加远程版本库
- git remote rm name:删除远程仓库
- git remote rename old_name new_name:修改仓库名
- git fetch
- git fetch [alias]:从远程仓库获取工作区中没有的数据
- git merge [alias]/[branch]:将服务器上的更新合并到当前分支
- git pull(相当于git fetch + git merge)
- git pull <远程主机名> <远程分支名>:<本地分支名>:将远程主机的分支拉取过来,与本地的分支合并
- git pull <远程主机名> <远程分支名>:远程分支与当前分支合并
- git push
- git push <远程主机名> <本地分支名>:<远程分支名>:将本地的分支版本上传到远程并合并
- git push <远程主机名> <本地分支名>:将本地分支版本上传到远程并合并(远程分支与本地分支同名)
Git分支管理
- git branch:列出分支
- git branch (branchname):创建分支
- git branch -d (branchname):删除分支(不能删除当前分支,要切换到其他分支才能删除当前分支)
- git checkout(branchname):切换分支
- git checkout -b (branchname):创建新分支并切换到该分支下
Git标签
Git标签可用于在某个重要阶段(如发布版本时)打上标签,保存提交快照,方便日后查看
- git tag -a v1.0:给最新一次提交打上 v1.0 标签(-a 表示创建一个带注解的标签)
- git tag -a v2.0 85fc7e7:给提交 85fc7e7 打上标签
- git tag:查看所有标签