Git教程
Git教程
Git介绍
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git下载安装
根据需要去Git官网下载对应版本即可
打开安装包,出现如下的对话框,这一步点Next。
选择一些配置方式,按照需求选择,一般默认就可以,完成后Next。
选择默认编辑器,根据需要自行选择,不知怎么选默认也可以,点击Next。
在新的存储库中调整初始分支的名称,需要更改的话选择下面,点击Next。
调整环境变量,根据需求选择,点击Next。
Use Git from Git Bash only:这是最安全的选择,因为你的PATH根本不会被修改,你只能使用Git Bash的Git命令行工具。
Use Git from the Windows Command Prompt:这个选项被认为是安全的,它只向PATH添加一些最小的Git包,以避免使用可选的Unix工具混淆环境。你将能够从Git Bash和Windows命令提示符中使用Git。建议选择此项。
Use Git and optional Unix tools from the Windows Command Prompt:Git和可选的Unix工具都将添加到计算机的PATH中。警告:这将覆盖Windows工具,如“find”和“sort”,只有在了解其含义后才使用此选项。
选择HTTPS传输后端,默认即可,点击Next。
配置结束换行符,默认即可,点击Next。
配置与Git Bash一起使用的模拟终端,保持默认即可,点击Next。
设置git pull的默认行为,根据需要选择,点击Next。
选择凭证管理器,默认即可,点击Next。
配置额外的选项,根据需要选择,点击Next。
实验功能,默认选择即可,完成后安装即可。
Git初始配置
安装成功后,可以在鼠标右键菜单栏中看到Git GUI Here和Git Bash Here选项,
完成安装后,还需添加自己的账号信息,先去Github或者GitTree注册个自己的账号,之后在Git环境中添加个人信息。
打开命令行或者Git Bash,替换成自己的信息输入以下命令设置即可。
1 | git config --global user.name “Your Name” |
至此Git的安装设置就基本完成了,可以在本机正常使用了。
Git Bash指令
可以参考廖雪峰Git教程,这里简但叙述下。
创建版本库
指令 | 功能 |
---|---|
git clone https://gitee.com/xxx.git |
克隆远程仓库到本地 |
git init | 初始化本地 git 仓库(新建仓库) |
本地更改
指令 | 功能 |
---|---|
git status | 查看当前版本状态(是否修改) |
git add <path> | 将该文件添加到暂存 |
git add . | 将所有修改过的工作文件提交暂存区(新版本包括被删除的文件) |
git add -u | 提交被修改和被删除文件,不包括新文件 |
git add -A | 提交所有变化 |
git rm --cached <path> | 将该文件从暂存中删除 |
git commit -m “<message>” | 提交 |
git commit --amend -m “<message>” | 合并上一次提交(用于反复修改) |
git commit -am “<message>” | 将 add 和 commit 合为一步 |
git diff | 显示工作区与仓库之间的区别 |
git diff HEAD | 显示工作区与指定仓库之间的区别 |
git diff --cached | 显示缓存区与仓库之间的区别 |
git restore <path> | 丢弃工作区的修改 如果没有提交到缓存区,则恢复到和版本库一样的状态 如果已经提交到了缓存区后,又进行了修改,则恢复到缓存区的状态 |
git restore --staged <file> | 可以把暂存区的修改撤销掉,重新放回工作区 |
git stash | 保存当前工作区,可以保存多个 |
git stash list | 查看当前保存的工作区 |
git stash apply | 恢复工作区,但不清除缓存区 |
git stash drop | 恢复工作区的同时清除缓存区 |
git stash apply stash@{0} | 使用标号恢复指定的工作区 |
git cherry -pick <commit> | 复制一个特定的提交到当前分支 |
查看信息及记录
指令 | 功能 |
---|---|
git log | 显示所有提交过的版本信息 |
git log --pretty=oneline | 简化显示,只显示版本号和提交时的备注信息 |
git log --graph | 可视化分支路径 |
git reflog | 查看所有分支的所有操作记录 |
git show <commit> | 显示某个提交的详细内容 |
git show <tag-name> | 显示某个标签的详细内容 |
git blame <file> | 在每一行显示[commit号,提交者,最早提交日期] |
分支及标签
指令 | 功能 |
---|---|
git branch | 显示本地分支 |
git branch <new-branch> | 新建分支 |
git branch --track <new> <remote> | 创建新分支跟踪远程分支 |
git branch -d <branch> | 删除本地分支 |
git tag <tag-name> | 给当前分支打标签 |
git tag <commit> | 给指定的提交打标签 |
git tag -a <tag-name> -m “<message>”<commit> | 给指定的提交打标签,并加入说明信息 |
git tag -d <tag-name> | 删除指定标签 |
git checkout -b <branch> | 创建并切换到新建的分支 |
git checkout <branch> | 切换分支 |
git switch -c <branch> | 创建并切换到新建的分支 |
git switch <branch> | 切换分支 |
更新与发布
指令 | 功能 |
---|---|
git remote | 查看远程库的信息 |
git remote -v | 列出远程分支详细信息 |
git remote show <remote> | 显示某个分支信息 |
git remote add <remote> <url> | 添加一个新的远程仓库 |
git fetch <remote> | 获取远程分支,但不更新本地分支,另需 merge |
git pull <remote> <branch> | 获取远程分支,并更新本地分支 |
git push <remote> <branch> | 推送本地更新到远程分支 |
git push <remote> --delete <branch> | 删除一个远程分支 |
git push <remote> <tagname> | 推送本地标签 |
git push <remote> --tags | 推送本地的所有标签 |
git push <remote> :refs/tags/<tagname> | 删除一个远程标签 |
git rebase | 变基操作,整理分支合并历史 |
合并与冲突
指令 | 功能 |
---|---|
git merge <branch> | 合并分支到当前分支,存在两个 |
git merge --no-ff <branch> | 禁用Fast forward 合并分支 |
git rebase <branch> | 合并分支到当前分支,存在一个 |
git rebase --abort | 回到执行 rebase 之前 |
git rebase --continue | 解决矛盾后继续执行 rebase |
git mergetool | 使用 mergetool 解决冲突 |
git add <resolve-file> | 使用冲突文件解决冲突 |
git rm <resolved-file> |
版本回溯
指令 | 功能 |
---|---|
git reset --hard HEAD | 将当前版本重置为 HEAD(用于 merge 失败) |
git reset --hard HEAD^ | 将当前版本重置为 HEAD的上一个版本 |
git reset --hard HEAD~100 | 将当前版本重置为 HEAD的前100个版本 |
git reset --hard <commit> | 将当前版本重置至某一个提交状态(慎用!) |
git reset <commit> | 将当前版本重置至某一个提交状态,代码不变 |
git reset --merge <commit> | 重置至某一状态,保留版本库中不同的文件 |
git reset --keep <commit> | 重置至某一状态,重置变化的文件,代码改变 |
git checkout HEAD <file> | 丢弃本地更改信息并将其存入特定文件 |
git revert <commit> | 撤消提交 |
其他
指令 | 功能 |
---|---|
git help <command> | 获取命令行上的帮助 |