1. 简介
开源的分布式版本控制系统,也是个内容管理系统(CMS),工作管理系统
2. 安装
2.1 Installation under Ubuntu
$ sudo apt update
$ sudo apt-get install git
$ git --version
2.2 windows下
- 安装git
- 在本地仓库文件夹中右键菜单git bash here
2.3 Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
- /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
- ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
- 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
$ git config --list //查看配置文件
$ git config user.name //查看对应的配置变量
$ git config --global user.name "wenyu" //用户名
$ git config --global user.email 445722658@qq.com //邮箱
$ git config --global core.editor vim //设置默认编辑器
如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息
2.4 工作流程
克隆到本地作为副本--编辑、添加、删除文件--提交及推送--修改错误或者回退
2.5 SSH设置
$ ssh-keygen -t rsa -C "445722658@qq.com" //生成ssh密匙
$ cd ~/.ssh
$ cat id_rsa.pub // id_rsa是私钥 id_rsa.pub是公钥
github主页--settings--ssh and GPG keys--New SSH key--粘贴到key--Add
$ ssh git@github.com //测试是否成功 输入yes
3. 使用
工作区:电脑中看到的目录
暂存区:索引(.git/index)中
版本库:工作区的.git
$ git init newrepo //创建仓库 初始化
$ git clone <repo> <directory> //克隆库到指定的目录
// Linux 系统中,commit 信息使用单引号 ',Windows 系统使用双引号 "
$ git add //添加文件到暂存区
$ git status //查看当前仓库状态,显示有变更的文件
$ git diff //比较暂存区和工作区的差异
$ git commit //提交暂存区到本地仓库
$ git reset //回退版本
$ git rm //将文件从暂存区和缓存区删除
$ git mv //移动或重命名工作区文件
$ git log //提交记录 --oneline 简洁版本 --reverse 逆向显示
--author 指定用户 --before={3.weeks.ago} --after={2010-04-18} --since --until 指定日期
//git push 上传远程代码并合并
$ git push origin master //将本地的 master 分支推送到 origin 主机的 master 分支
$ git push --force origin master //强制
$ git push origin --delete master //删除 origin 主机的 master 分支
//tag标签
$ git tag -a v1.0 //-a 选项意为"创建一个带注解的标签"
4.提交与修改
$ git add . #添加当前目录下的所有文件到暂存区
$ git add [dir] #添加目录
$ git add [file1] [file2] #添加文件
$ git status -s #查看当前状态 -s 简短输出结果
$ git diff #查看尚未缓存的改动
$ git diff --cached [file] #显示暂存区和上一次提交(commit)的差异
$ git diff --staged [file]
$ git commit -m [message] #将暂存区内容添加到本地仓库中
$ git commit [file1] -m [message] #指定文件
$ git commit -am "备注" #-a 参数设置修改文件后不需要执行 git add 命令,直接来提交
#默认--mixed 可以不用带该参数
$ git reset HEAD^ # 回退所有内容到上一个版本
$ git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本
$ git reset 052e # 回退到指定版本
$ git reset --soft HEAD~3 # 回退上上上一个版本
--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
$ git reset --hard HEAD~3 # 回退上上上一个版本
$ git reset –hard bae128 # 回退到某个版本回退点之前的所有信息。
$ git reset --hard origin/master # 将本地的状态回退到和远程的一样
#HEAD 表示当前版本,HEAD^或者HEAD~1 上一个版本
$ git reset HEAD hello.php #取消之前 git add 添加
$ git rm <file> #从暂存区和工作区中删除 -f强制
$ git rm --cached <file> #只从暂存区中删除
$ git rm -r * #递归删除
$ git mv [file] [newfile] #移动或重命名 -f强制
5. git log 提交日志
$ git log #查看历史提交记录
$ git blame <file> #以列表形式查看指定文件的历史修改记录
$ git log --oneline #简洁版本
--graph 查看历史中什么时候出现了分支、合并
--reverse 逆向显示所有日志
--no-merges 隐藏合并提交
$ git log --author=wenyu #指定用户log
--since --before --until --after #指定日期
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18}
6. 远程操作
6.1 remote 远程库
$ git remote rm <repo> //删除远程仓库
$ git remote rm oldname newname //重命名仓库名
$ git remote -v //显示所有远程仓库
$ git remote show <repo> //显示某个远程库信息
git remote add 本地版本库 <repo> #添加远程版本库
6.2 git fetch 从远程获取代码库
该命令执行完后需要执行 git merge 远程分支到你所在的分支
$ git fetch #拉取更新
$ git merge #从远端仓库提取数据并尝试合并到当前分支
6.3 pull
从远程获取代码并合并本地的版本,其实就是 git fetch 和 git merge FETCH_HEAD 的简写
$ git pull <远程主机名> <远程分支名>:<本地分支名>
$ git pull origin #更新
$ git pull origin master
6.4 push
第一次push需要使用 -u 参数,建立本地的分支和远端某个分支之间的关联,下次push会自动关联
git push <远程主机名> <本地分支名>:<远程分支名>
git push <远程主机名> <本地分支名> #本地分支名与远程分支名相同可以省略
$ git push origin master #将本地的 master 分支推送到 origin 主机的 master 分支
$ git push --force origin master #版本有差异时强制推送
$ git push origin --delete master #删除 origin 主机的 master 分支
$ git push origin main #常用
7. branch 分支管理
$ git branch #列出所有本地分支 -r列出所有远程分支 -a列出所有本地分支和远程分支
$ git branch -b [branch-name] #新建一个分支并切换到该分支
$ git branch -d (branchname) #删除分支
$ git checkout (branchname) #切换分支
$ git merge #合并分支
示例
$ mkdir test # 创建测试目录
$ cd test/ # 进入测试目录
$ echo "Git测试" >> README.md # 创建 README.md 文件并写入内容
$ ls # 查看目录下的文件
README
$ git init # 初始化
$ git add README.md # 添加文件
$ git commit -m "添加 README.md 文件" # 提交并备注信息
# 提交到 Github
$ git remote add origin git@github.com:tianqixin/runoob-git-test.git
$ git push -u origin main