git基础
一、git基础
1.获取 Git 仓库
通常有两种获取 Git 项目仓库的方式:
- 将尚未进行版本控制的本地目录转换为 Git 仓库。
- 从其它服务器 克隆 一个已存在的 Git 仓库。
在已存在目录中初始化仓库
- 进入进入该项目目录中
cd my_project
- 初始化
git init
注:该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪
- 所需的文件来进行追踪
git add '指定文件'
// or
git add . // 目录下所有文件
git commit -m 'commit的内容'
克隆现有的仓库
git clone '仓库地址'
注:克隆后的库名和链接库名一致
git clone '仓库地址' mylibgit
注:这会执行与上一条命令相同的操作,但目标目录名变为了 mylibgit
2.记录每次更新到仓库
检查当前文件状态
git status
查看已暂存和未暂存的修改
git diff
stash
// 能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
git stash
// 查看当前stash中的内容
git stash list
// 存在堆栈中内容应用到当前目录 (栈: 先进后出), 移除的同时从堆栈中删除
git stash pop
// 将堆栈中的内容应用到当前目录 该命令不会将内容从堆栈中删除
git stash apply
// 从堆栈中移除某个指定的stash(如stash@{1})
git stash drop 名称
// 清除堆栈中的所有 内容
git stash clear
// 查看堆栈中最新保存的stash和当前目录的差异
git stash show
// 从最新的stash创建分支
git stash branch
忽略文件
和.git
目录同级创建.gitignore
.idea
*.iml
npm-debug.log
node_modules
.DS_Store
.tags
.tags1
__tmp
dist
dist-private
resource
static-cache
.vscode
.history
*.zip
文件 .gitignore 的格式规范如下
- 所有空行或者以 # 开头的行都会被 Git 忽略。
- 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
- 匹配模式可以以(/)开头防止递归。
- 匹配模式可以以(/)结尾指定目录。
- 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
更新
git add
git commit
移除文件
git rm
3.查看提交历史
git log
4.撤销操作
---->代码回退
git reset HEAD <file>...
5.远程仓库的使用
查看远程仓库
git remote
你也可以指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
添加远程仓库
git remote add <shortname> <url>
从远程仓库中抓取与拉取
git fetch <remote>
git pull <remote> <branch>
// or
git pull
推送到远程仓库
git push <remote> <branch>
远程仓库的移除
git remote remove 或 git remote rm
二、git分支
1.分支管理
创建分支
git branch branchName
注: 新建后,当前状态在当前分支上,不会在新建分支
分支切换
git checkout branchName
注:新建分支并切换到新分支的简写
git checkout -b branchName
新建分支branchName 并切换到分支branchName,相当于
git branch branchName
git checkout branch Name
查看分支列表
注: 带*表示当前所在分支
git branch
前所有分支的一个列表
git branch -v
查看每一个分支的最后一次提交
git branch -a
查看所以分支列表(包括远程)
注: 红色标注为远程分支
删除分支
git branch -D branchName
2.分支合并
merge
git merge branchName
将分支branchName的修改合并到当前分支,合并前需要commit
遇到冲突时的分支合并
冲突示例
git merge test Auto-merging public/index.html CONFLICT (content): Merge conflict in public/index.html Automatic merge failed; fix conflicts and then commit the result.
在 冲突文件中可看到
解决方式1: 按图中指示操作
解决方式2: 使用图形化工具来解决冲突,可以运行git mergetool
rebase
git rebase branchName
三、git打标签
列出标签
git tag
打标签
git tag v1.0.0
附注标签
git tag -a v1.0.1 -m "测试 1.0.1"
查看: git show v1.0.1
删除标签
git tag -d v1.0.1
Deleted tag 'v1.0.1' (was 436be34)