Git? ? ?官网
分布式版本控制工具?可以团队协作合作开发 代码合并等?
?
github 和 (国产)码云gitee 都是代码托管工具就是远程仓库
下载可以去官网或者去腾讯软件中心下载? 官网有时候下载很慢??
腾讯软件中心 如果有腾讯电脑管家直接管家下载即可? 官网也是下载管家然后在进行安装
腾讯软件中心-海量软件高速下载
搜索框搜索 git即可
?傻瓜式安装一直next就行? 一直下一步安装即可
文中版本库 本地仓库 工作树指的都是本地仓库?
?
git config 查看语法
git config [ ]
git config -l/--list 列出所有配置信息
git config user.name 列出当前用户名
git config user.email 列出当前用户邮箱
?
设置/更改 用户 (这样才知道是谁提交的代码与用户关联起来) --global 全局
git config --global user.name '用户名'
git config --global user.email '邮箱'
git init 初始化一个仓库
git add 命令可将该文件添加到暂存区。
添加一个或多个文件到暂存区:
git add [file1] [file2] ...
添加指定目录到暂存区,包括子目录:
git add [dir]
添加当前目录下的所有文件到暂存区:
git add .
git commit 命令将暂存区内容添加到本地仓库中。
提交暂存区到本地仓库中:
git commit -m [message]
[message] 可以是一些备注信息。
提交暂存区的指定文件到仓库区:
$ git commit [file1] [file2] ... -m [message]
-a 参数设置修改文件后不需要执行 git add 命令,直接来提交
$ git commit -a
git status 查看状态
通常我们使用 -s 参数来获得简短的输出结果:
git status -s
?
git config core.autocrlf false 去掉warning警告
git config core.autocrlf true 不去掉改为true
?
git log - 查看历史提交记录。
下面是花式查看
git log --oneline 简短一行展示
git log --pretty=oneline 一行展示
git log --pretty=oneline --graph
git log参数详解_阿拉阿伯的博客-CSDN博客_git log 参数? ? ? ? ? 更详细的请参考别人地址查看
git log --pretty=oneline 从最近到最远的提交日志
版本回退 / 版本穿梭 要多练习
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]
git reset --soft HEAD^:温柔的回退。 回退版本库
git reset --mixed HEAD^:中等回退。 回退和缓存区
git reset --hard HEAD^:强硬的回退。 慎用 回退版本库与缓存区并且工作区也会回退
意思就是说如果你更改了代码没有提交到版本库里面 执行了强硬回退那么代码白写了
head 指针会指向当前版本
HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本
HEAD~100 回退前一百个
--hard 回退本地仓库(版本库) / 暂存区 / 工作区 全部回退 (之前修改的代码也没了,需要谨慎使用)
git reset --hard [id是指定ID回退 / head]
根据 id 回退到指定的版本;
我们已经根据 git log 命令看到了所有的提交的信息,本文中,我以回退到 个人模块修改包引入顺序 版本,即 commit id 为 7222c8f6be2d663982faa98dffe2647966b438b1;
回退到指定快照/版本 同时可以使用git reflog 查看回退日志 然后输入ID还能钱进回来
git reset --hard 7222c8f6be2d663982faa98dffe2647966b438b1;
本地仓库(版本库) / 暂存区 / 工作区 全部回退上一个版本
git reset --hard HEAD^
--mixed 是默认的 回退本地仓库(版本库) / 暂存区 (常用)
回退本地仓库(版本库) / 暂存区到上五个版本 回退5次
git reset head^5 相当于 git reset --mixed head^5
--soft 回退本地仓库(版本库)
git reset --soft head^ 回退本地仓库到上一个区域
git reflog 查看回退记录
?Git 版本穿梭 多学习
首先,Git必须知道当前版本是哪个版本,在git中,用HEAD 表示当前版本,也就是最新的提交3628164...882e1e0 (注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^ ,上上一个版本就是HEAD^^ ,当然往上100个版本写100个^ 比较容易数不过来,所以写成HEAD~100 。
-
HEAD 指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id 。 -
穿梭前,用git log 可以查看提交历史,以便确定要回退到哪个版本。 -
要重返未来,用git reflog 查看命令历史,以便确定要回到未来的哪个版本。
git diff 比较暂存区与工作区文件的不同
a代表暂存区 b代表工作区
在工作区新建文件不会比较 必须是已在暂存区文件才会与工作区文件比较那里不一样
当暂存区中没有文件时,git diff比较的是,工作区中的文件与上次提交到版本库中的文件。
当暂存区中有文件时,git diff则比较的是,当前工作区中的文件与暂存区中的文件。
?
git diff head 版本库 与 工作区
而 git diff HEAD -- file,比较的是工作区中的文件与版本库中文件的差异。HEAD指向的是版本库中的当前版本,而file指的是当前工作区中的文件
git diff --cached 版本库 与 暂存区比较
git diff --cached 版本号 比较 指定版本库与暂存区比较
git diff --cached 5289812
git diff 2ae7504f278002d7158925e77446b2093f54f67a 5289812c449ebb947e99e81e86b12b23236a9be9
指定比较两个版本
ls 查看本地文件
ls -a 查看本地文件以及隐藏文件
ll 查看本地文件外加详细信息
ll -a 查看本地文件以及隐藏文件
rm [file] 删除本地文件
rm -rf [dir / file]
rm命令通常用于删除Linux中的文件。可以添加参数用来删除目录。例如,递归地删除目录,使用递归选项-r或-R,如果目录是受写保护的,则会提示是否继续删除目录和目录中的文件作为一个整体。-f 强制删除而不被提示。
git ls-files 查看暂存区文件
?不小心删除文件
当没有把暂存区的内容提交到版本库中时
git checkout -- xx.txt 恢复工作区某个文件根据暂存区恢复的 如果暂存区没有则没有了
git checkout filename
可以把工作区的指定文件恢复到暂存区状态
git checkout .
将工作区的所有文件的内容恢复到暂存区的状态
git checkout <commit> filename 将工作区指定的版本 里面的文件恢复到工作区里面
当你提交了版本库时,表示将工作区和暂存区都恢复到版本库指定提交版本的指定文件的状态,此时HEAD指针不变,此时的状态相当于把工作区的内容修改到指定版本的文件内容后,再把修改的内容添加到暂存区。因此git checkout <commit> filename后,可以直接执行git commit而不需要先执行git add
如果这时候你不知道删除了那个文件 不小心提交了版本库可以使用下面方式
git show?9fa71b2637fceb1388cdd058ec1c043ec7b0f024
查看指定版本都干了些什么 能在里面看到删除 以及更改的内容
然后在git checkout <commit> filename 指定版本恢复指定的文件
将文件从暂存区和工作区中删除:
git rm <file>
git 删除之后 不会删除你提交到版本库的文件
git checkout <file> 就恢复不了了
可以使用 git checkout <commit> filename 指定版本库恢复文件
?
linux命令行更改重命名
mv a.txt aa.txt
会认为你删除了一个文件之后新建了一个文件
git mv b.txt bb.txt git重命名文件
?
忽略文件 不想让git管理
.gitignore 创建次文件 添加内容
识别某些格式文件,然后自主不跟踪他们
touch .gitignore
echo *.temp > .gitignore *.temp 只要是.temp的文件都忽略
ls -a 查看隐藏文件
?分支
git branch 会列出你的本地的分支。
master 主分支
带 * 绿色的是当前分支
git branch <名字> 创建分支
git branch ki-login
git checkout <分支名称> 切换分支
git checkout ki-login
git checkout -b iss53
Switched to a new branch "iss53"
它是下面两条命令的简写:
git branch iss53
git checkout iss53
git status 查看状态同时也能查看分支
On branch ( ki-login ) 这个就是现在分支
每个分支都有自己独立代码 互不干扰
HEAD 永远指向当前的分支
?
?
?HEAD永远指向当前分支
?分支合并
feature-xxx 分支命名
合并分支
分支合并 首先切换到主分支 要在主分支合并
git merge feature-xxx 把feature-xxx分支合并到主分支上
场景一?
?
?
?场景二? ?(两个分支修改同一个文件然后合并到主分支)
?
?
?
?解决冲突
?工作中避免冲突 第一件事是(即时)拉取最新代码 下班是提交代码
git branch -d ki-11 ki-22 删除分支
删除ki-11 和ki-22 分支
.gitignore 文件操作
/表示目录 /vendor 比如/A 就是忽略A目录下所有内容
* 表示匹配多个字符
忽略以iml结尾的文件就用*.iml
[] 表示匹配多个单个字符
[abc] 就是代表a,b,c中的任意一个字符就好
!表示跟踪某类文件 !就是不会在被忽略了
比如 /*,!*.c表示忽略所有文件,但是跟踪.c结尾的文件,这样.c结尾的文件就不会被忽略了
|