0


git使用总结

概念

1.Git的四个组成部分

2.文件的几个状态

按大类划分,分为两种状态:Tracked(已跟踪)和Untracked(未跟踪),
依据是:该文件是否已加入版本控制

流程简述:

假设某个项目已加入版本控制系统

  1. 新建一个文件,该文件处于 Untracked 状态;
  2. 通过git add命令添加到缓存区,此时文件处于Tracked状态。又或者说 此时这个文件已经被版本控制系统所跟踪,而且他处于Staged(暂存)状态;
  3. 通过git commit命令把暂存区的文件提交提交到本地仓库,此时文件 处于Unmodified(未修改)状态;
  4. 此时如果去编辑这个文件,文件又会变成Modified(修改)状态;

本地操作命令

1.相关配置【git config】

区分global 和 local,前者代表 全局设置,就是设置了在整个系统中,所有的带Git版本管理的项目都是这样的配置;后者代表 本地设置即在某个项目中独立的设置,后者优先级高于前者。比如全局设置的用户名是"Coder-pig",本地设置的是"Jay",commit的时候author就是Jay而不是Coder-pig。除了通过命令行修改,还可以直接修改

全局配置文件:etc/gitconfig (Mac下是隐藏文件,用户/.gitconfig)
本地配置文件:当前仓库/.git/config

// 安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效):
git config --global user.name "用户名"          // 设置用户名
git config --global user.email "用户邮箱"       // 设置邮箱
git config --global user.name                  //  查看用户名是否配置成功
git config --global user.email                 //  查看邮箱是否配置

//  其他查看配置相关
git config --global --list                     // 查看全局设置相关参数列表
git config --local --list                      // 查看本地设置相关参数列表
git config --system --list                     // 查看系统配置参数列表
git config --list                              // 查看所有Git的配置(全局+本地+系统)

2.添加文件到暂存区/文件跟踪标记【git add】

可以使用git add 文件名,将工作空间的文件添加到暂存区,或批量添加文件

git add 文件名      // 将工作区的某个文件添加到暂存区   
git add .          // 将当前工作区的所有文件都加入暂存区
git add -u         // 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件
git add -A         // 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件
git add -i         // 进入交互界面模式,按需添加文件到缓存区

3.将暂存区内容提交到本地仓库【git commit】

git commit -m "提交说明"       // 将暂存区内容提交到本地仓库
git commit -a -m "提交说明"    // 跳过缓存区操作,直接把工作区内容提交到本地仓库

4.查看工作区与缓存区的状态【git status】

git status         // 查看工作区与暂存区的当前情况
git status -s      // 让结果以更简短的形式输出

5.差异对比(内容变化)【git diff】

git diff                 // 工作区与缓存区的差异
git diff 分支名           // 工作区与某分支的差异,远程分支这样写:remotes/origin/分支名
git diff HEAD            // 工作区与HEAD指针指向的内容差异
git diff 提交id 文件路径  // 工作区某文件当前版本与历史版本的差异
git diff --stage         // 工作区文件与上次提交的差异(1.6 版本前用 --cached)
git diff 版本TAG         // 查看从某个版本后都改动内容
git diff 分支A 分支B      // 比较从分支A和分支B的差异(也支持比较两个TAG)
git diff 分支A...分支B    // 比较两分支在分开后各自的改动
 // 另外:如果只想统计哪些文件被改动,多少行被改动,可以添加 --stat 参数

6.查看历史提交记录【git log】

git log                   # 查看所有commit记录(SHA-A校验和,作者名称,邮箱,提交时间,提交说明)
git log -p -次数           # 查看最近多少次的提交记录
git log --stat            # 简略显示每次提交的内容更改
git log --name-only        # 仅显示已修改的文件清单
git log --name-status      # 显示新增,修改,删除的文件清单
git log --oneline          # 让提交记录以精简的一行输出
git log –graph –all --online  # 图形展示分支的合并历史
git log --author=作者        # 查询作者的提交记录(和grep同时使用要加一个--all--match参数)
git log --grep=过滤信息      # 列出提交信息中包含过滤信息的提交记录
git log -S查询内容          # 和--grep类似,S和查询内容间没有空格
git log fileName           # 查看某文件的修改记录,找背锅专用

文件恢复/版本回退

1.Tracked文件从暂存区恢复至工作区【git checkout】

如果在工作区直接删除被Git Tracked的文件,但是还未通过git add添加到暂存区,暂存区中还会存在原来的文件,此时键入:git status,会是这样:

Git告诉你工作区的文件被删除了,你可以 删掉暂存区里的文件恢复被删文件

// 删除暂存区中的文件:
git rm 文件名
git commit -m "提交说明"

// 误删恢复文件
git checkout -- 文件名
// 另外注意:git checkout会抛弃当前工作区的更改!!!不可恢复!!!务必小心!!!

// 或者使用git restore <文件名>可实现同样的恢复文件功能
git restore <文件名>

2.修改的文件已提交至暂存区【git reset HEAD】

如果更改后add到了暂存区,想恢复原状,下述指令可以让文件恢复原状:

git reset HEAD 文件名   
git checkout 文件名

3.版本回退(已commit)【git reset --hard】

文件已经commit了,想恢复成上次commit的版本或者上上次,有如下3种方法:

  1. git reset HEAD^ git reset HEAD^ // 恢复成上次提交的版本git reset HEAD^^ // 恢复成上上次提交的版本,^的数量就是后退的步数
  2. git reset HEADn ```git reset HEAD1 //恢复成上次提交的版本git reset HEAD~2 // 恢复成上上次提交的版本,n就是后退的步数```
  3. git reset --hard 版本号 git reset --hard 版本号 // git reflog查看到的SHA1值,取前七位即可,根据版本号回退reset命令其实就是:重置HEAD指针,让其指向另一个commit 而这个动作可能会对工作区与缓存区造成影响,举个例子> > - 本来的分支线:- A - B - C (HEAD, master)> - git reset B后:- A - B (HEAD, master) 解释:看不到C了,但是他还是存在的,可以通过git reset C版本号找回,前提是 C没有被Git当做垃圾处理掉(一般是30天)。reset三个可选参数解析:> > - –soft:只是改变HEAD指针指向,缓存区和工作区不变;> - –mixed:修改HEAD指针指向,重置暂存区,工作区不变;> - –hard:修改HEAD指针指向,重置暂存区和工作区;4.查看输入指令记录【git reflog】Git会记住你输入的每个Git指令,比如上面的git reset 切换成一个旧的commit,然后git log后发现新提交的记录没了,想切换回新的那次commit,可以先调git reflog 获取新commit的SHA1码,然后git reset 回去。git reflog 注意:这个指令记录不会永久保存!Git会定时清理用不到的对象!!5.撤销某次提交【git revert】有时可能我们想撤销某次提交所做的更改,可以使用revert命令git revert HEAD // 撤销最近的一个提交git revert 版本号 // 撤销某次commit不是真的把提交给撤销了,而是生成一个新的提交来覆盖旧的提交,被撤销的提交和新的提交记录都会保存!!!不信你再调一次revert HEAD 会发现被撤销的更改又变回来了,另外,每次revert后,都需要发起新的commit!简单点说,撤销的只是文件变化,提交记录依旧是存在的!6.查看某次提交修改内容【git show】git show 提交id // 查看某次commit的修改内容7.查看某个分支的版本号【git rev-parse】git rev-parse 分支名 // 查看分支commit的版本号,可以写HEAD8.找回丢失对象的最后一点希望【git fsck】因为你的某次误操作导致commit丢失,如果git reflog都找不到,你可以考虑使用git fsck,找到丢失的对象的版本id,然后恢复即可。
标签: git

本文转载自: https://blog.csdn.net/bukaixinjiu_/article/details/125372530
版权归原作者 不开心就喝水_ 所有, 如有侵权,请联系我们删除。

“git使用总结”的评论:

还没有评论