文章目录
1、安装
由于本人主要是在windows下开发,因此这里只讲windows下git的安装(Linux、Unix和Mac下的git安装这里不列举)。
1)官网下载:https://git-scm.com/downloads
根据需要进行下载,我这里选择Windows 64位的安装包
2)双击运行exe,一直默认安装即可(也可以修改安装路径);
安装完成之后,鼠标右键可以看见,多了两个选项:
Git GUI Here这个主要是git的图形窗口(一般不用,会安装TortoiseGit使用);Git Bash Here主要是命令行,如下
说明git安装成功
2、工作流程
1)从远程仓库 clone git资源作为本地仓库;
2)从本地仓库中 checkout 代码接着进行修改;
3)提交代码前将代码 add 提交到暂存区;
4)commit 提交修改(提交到本地仓库,保存修改的各个历史版本);
5)修改完成,需要共享代码时, push 到远程仓库。
如下图:
工作区:在本地能看到的目录就是一个工作区
暂存区:.git目录下的index文件(.git/index)中,也叫索引
3、git管理文件版本
3.1 创建版本库
版本库可以简单的理解为一个目录,这个目录里面的所有文件可以被Git管理,每个文件的修改、删除等git都可以跟踪其历史。
git仓库是存在一个.git的文件夹的,该文件夹是隐藏的,若没有设置显示隐藏文件夹,用户是看不见该文件夹的,用户可以通过命令行 git init创建.git文件夹,直接创建或者右键点击"TortoiseGit在这里创建版本库"(弹出窗口不要勾选"制作纯版本库(没有工作目录)",若选中的话,那创建的版本库是没有工作目录的,即不能把文件加到本地仓库),包含.git文件夹的目录称为工作目录。
git会自动创建一个master分支,以及执行master的一个指针HEAD。
4、命令
4.1 init
——初始化git仓库
git init //初始化git仓库
git init project //在project目下下初始化git仓库
4.2 add
——将文件加入版本控制
git add readme.txt //将readme.txt提交到仓库
4.3 clone
——从现有git仓库中拷贝项目
git clone https//test.git test //将test.git仓库的内容拷贝到test目录下
4.4 config
——设置命令
git config --list //显示当前git配置信息
git config -e //针对当前仓库设置
4.5 status
——查看仓库当前状态,显示由变更的文件
git status
git status -s //获取简短的内容
4.6 diff
——比较文件的不同,暂存区和工作区的不同
git diff [filename] //尚未缓存的改动
git diff --cached [filename] //查看已缓存的改动
git diff --staged [filename]
git diff HEAD //查看已缓存的与未缓存的所有改动
git diff --stat //显示摘要而非整个diff
git diff [first-branch] [second-branch] //显示2次提交之间的差异
4.7 commit
——提交暂存区到本地仓库
git commit -m [message] //提交
git commit [file1] ... [fileN] //提交指定文件到仓库区
git commit -a //无需执行git add,直接提交
4.8 reset
——回退版本,可指定退回某一次提交的版本
git reset [--soft | --mixed | --hard] [HEAD]
–mixed是默认的,可不带该参数,用于重置暂存区的文件与上次的提交保持一致,工作区文件内容保持不变。
git reset HEAD~1 //回退所有内容到上一个版本
git reset HEAD readme.txt //回退readme.txt文件的版本到上一个版本
git reset xxx //回退到指定版本
–soft参数用于回退到某个版本
git reset --soft HEAD~3 //回退到前3个版本
–hard参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:(注意:会删除回退点之前的所有信息)
git reset --hard HEAD~3 //回退到前3个版本
git reset --hard xxxx //回退到某个版本回退点之前的所有信息
git reset --hard origin/master //将本地的状态回退到和远程的一样
4.9 rm
——删除工作区文件
git rm [file] //将文件从暂存区和工作区中删除
git rm -f [file] //删除之前修改过且已放到暂存区,需使用强制删除选项 -f
git rm --cached [file] //将文件从暂存区移除,保留在当前工作目录
git rm -r * //递归删除,删除该目录下的所有文件和子目录
4.10 mv
——移动或重命名工作区文件
git mv [file] [newfile] //移动或重命名一个文件、目录或软链接
git mv -f [file] [newfile] //newfile存在,需强制执行
4.11 log
——查看历史提交记录
git log //查看历史提交记录
git log --online //查看历史记录的简洁版本
git log --graph //查看历史中出现分支、合并的时间
git log --reverse //逆向显示所有日志
git log --author //查看指定用户提交的日志
git log --before(--since)={3.week.ago} --after(--until)={2021-07-25} //查看3周前且在2021-07-25后的所有提交日志
git log --no-merges //隐藏合并提交
4.12 blame
——查看指定文件的修改记录,以列表形式显示
git blame [file]
4.13 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仓库和github之间的传输是通过SSH加密的,需要配置验证信息:
首先生成SSH Key;
在~/下生成.ssh文件夹,打开id_rsa.pub,拷贝其中的key值;
接着打开github,进入Account——Settings——SSH and GPG keys——New SSH key——Title随便,key是拷贝的key;
执行ssh -T git@github.com 验证是否连接github成功。
4.14 fetch
——从远程获取代码库,该命令执行完需执行git merge远程分支到所在的分支
git merge //从远端仓库提取数据并尝试合并到当前分支
git fetch [alias] //提取更新的数据
git merge [alias]/[branch] //将远程仓库的任何更新合并到当前分支
4.15 pull
——下载远程代码并合并,是git fetch和git merge FETCH_HEAD的简写。
git pull [远程主机名] [远程分支名]:[本地分支名] //将远程主机的分支拉取过来与本地的分支合并
若是本地当前分支可省略。
4.16 push
——上传远程代码并合并
git push [远程主机名] [本地分支名]:[远程分支名]
若本地分支名与远程分支名相同,可省略远程分支名。
git push --force [远程主机名] [本地分支名]:[远程分支名] //本地版本与远程版本有差异,强制推送
git push [远程主机名] --delete [远程分支名] //删除主机对应的分支
4.17 分支管理
git branch [branchname] //创建分支
git checkout [branchname] //切换分支
git branch //列出分支
git branch -d [branchname] //删除分支
git merge [branchname] //合并branchname到煮分支
4.18 tag
——标签,可以延后打标签
git tag -a xxx [xxxx] //创建带注解的标签
git tag -a [tagname] -m "xxx" //指定标签信息
git tag -s [tagname] -m "xxx" //PGP签名标签