企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# git详细用法 [TOC] ## 一、初始化目录 ### 1.创建目录 ```sh mkdir git_data cd git_data/ ``` ### 2.初始化 ```sh git init Initialized empty Git repository in /root/git_date/.git/ ``` ### 3.查看状态 ```sh git status # On branch master # Initial commit nothing to commit (create/copy files and use "git add" to track) ``` 状态解释: 当前master上,初始化完成,目录中的内容没有任何改变 ## 二、提交数据 ### 1.创建数据造成改变 ```sh touch README git status ``` ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200308/173423128.png) ### 2.提交数据至暂存区 ```sh git add README git status ``` ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200308/173431474.png) ### 3.提交文件至本地仓库 ```sh git commit -m 'firter commit' ``` ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200308/173441853.png) ```sh git status ``` ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200308/173450051.png) ## 三、git用法整理 ### 1.添加新文件 1) 常规办法 添加到暂存区域 ```sh git add */./abc.txt *和.和具体的文件名都可以 ``` 提交git仓库 ```sh git commit -m "注释信息" -m 后面接上注释信息,内容关于本次提交的说明,方便自己或他人查看 ``` 2) 简便方法 ```sh git commit -a -m "注释信息" -a 表示直接提交,但只能针对已经存在的文件,如果是新建的文件,则需要先add在commit ``` ### 2.删除暂存区数据 没有添加到暂存区的数据直接rm删除即可,已经添加到暂存区数据需用git rm命令删除 ```sh git rm --cached def.txt ``` 将文件def从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件) ```sh git rm -f def.txt ``` 将文件数据从git暂存区和工作目录一起删除 ### 3.重命名暂存区数据 没有添加到暂存区的数据直接mv/rename改名即可,已经添加到暂存区数据用git mv命令删除 ```sh git mv abc.txt def.txt ``` ### 4.查看历史记录 查看提交历史记录 ```sh git log ``` 查看最近几条记录 ```sh git log -2 ``` 显示每次提交的内容差异,例如仅查看最近一次差异 ```sh git log -p -1 ``` stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息 ```sh git log --stat -2 ``` retty根据不同的格式展示提交的历史信息 ```sh git log --pretty=oneline ``` 以更详细的模式输出提交的历史记录 ```sh git log --pretty=fuller -2 ``` 查看当前所有提交记录的简短SHA-1哈希字串与提交者的姓名,其他格式见备注。 ```sh git log --pretty=fomat:"%h %cn" ``` ### 5.还原历史记录 Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD^,上上一个版本则会叫做HEAD^^,当然一般会用HEAD~5来表示往上数第五个提交版本。 还原历史提交版本上一次 ```sh git reset --hard HEAD^ ``` 通过哈希值还原 ```sh git reset --hard 3de15d4 ``` 找到历史还原点的SHA-1值后,就可以还原(值不写全,系统会自动匹配) ### 6.还原未来数据 什么是未来数据?就是你还原到历史数据了,但是你后悔了,想撤销更改,但是git log已经找不到这个版本了。 查看未来历史更新点 ```sh git reflog ``` ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200308/173500740.png) 还原到第二次的修改 ```sh git reset --hard 197c823 HEAD is now at 197c823 scrond modiry ``` ### 7.数据对比 git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改后,再把它提交到仓库就放心多了。 ```sh git diff README ``` ## 四、标签和分支 ### 1.标签使用 前面回滚使用的是一串字符串,又长又难记。可以使用打标签的方式,每次提交时对当前版本打一个标签,然后根据标签进行回滚 1) 给当前内容打标签 ```sh #普通标签 git tag v1.0 #带说明的标签 git tag v1.2 -m "version 1.2 release is test" ``` 2) 查看标签 ```sh git tag ``` 查看当前所有的标签 3) 根据标签看信息 查看当前1.0版本的详细信息 ```sh git show v1.0 ``` 4) 删除标签 ```sh git tag -d v1.0 ``` 5) 根据标签回滚数据 ```sh git reset --hard 0bdf2e7 HEAD is now at 0bdf2e7 modified README file git reset --hard V1.0 HEAD is now at a66370a add oldboy dir ``` ### 2.分支结构 在实际的项目开发中,尽量保证master分支稳定,仅用于发布新版本,平时不要随便直接修改里面的数据文件。干活都在dev分支上。每个人从dev分支创建自己个人分支,开发完合并到dev分支,最后dev分支合并到master分支。 所以团队的合作分支看起来会像下图那样。 ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200308/173509553.png) 1) 创建和切换分支 ```sh #创建分支 git branch dev #切换分支 git checkout dev #查看当前分支情况, git branch ``` 2) 合并分支 合并分支的操作需要在主分支上进行操作,假如想把dev分支合并到master分支上,先切换到master分支 ```sh git merge dev ``` 合并dev分支至master 3) 删除分支 ```sh git branch -d dev ``` 确认合并完成后,可以放心地删除dev分支 ### 3.分支冲突解决 如果同时master和dev分支都对同一个文件修改了并进行了提交,最后merge的时候会提示冲突,针对冲突文件,git会将两个分支的修改内容都写入该文件中,并写明哪段内容来自哪个分支,需要根据提示找到该文件,将冲突的内容修改掉才可以