Git总结

1.安装Git

git-scm.com/book/zh/v2 安装地址

通过 git --version 来查看版本(是否安装成功)

/*
 *命令行的简单命令
 */
pwd // 当前工作的路径(linux上的命令dir是window)
tree // 查看树状结构图
rd //删除文件夹
type nul>文件名称  //创建文件
echo 内容 > 写入文件路径
del //删除文件

2.使用Git之前需要做的最小配置

配置 user 信息
配置 user.name 和 user.email
git config --global user.name '用户名'
git config --global user.name '邮箱'

/*
 *config 的三个作用域
 * ----------省略等同于local-----------
 * $ git config --local  // local 只对某个仓库有效
 * $ git config --global // global 对当前用户所有仓库有效
 * $ git config --system // system 对系统所有登录的用户有效
 *.......................
 *--------显示 config 的配置,加上--list --------
 * $ git config --list --local
 * $ git config --list --global
 * $ git config --list --system
 */

3.建Git仓库

两种场景:
1.把已有的项目代码纳入Git管理

cd 项目代码所在的文件夹
git init

2.新建的项目直接用Git管理

cd 某个文件夹
git init your_project //会在当前目录下创建和项目名称同名的文件夹作为仓库

cd your_project
通过实践得出local的优先级要比global高(限于他俩之间)

4.工作区和暂存区

$ git add //后面可以跟多个文件
$ git commit -m '版本描述'  //添加到版本库
$ git add -u //把git已经管理的文件一起提交到暂存区
$ git status // 查看git当前状态
$ git log  // 查看git的日志

建议把写好的文件(git add)放到暂存区,把为一个目的的所有文件生成一个commit提交到版本库

5.给文件重命名的简便方法

$ mv readme readme.md  //检查状态会给你提示
$ git add readme.md
$ git rm readme  // git很智能会认为我们在重命名

///////////简便写法/////////
$ git mv readme readme.md  //git提供的重命名
-------
$ git reset --hard //此项命令比较危险会清空暂存区所有的操作(进行复原)

6.通过git log查看版本演变历史

$ git log --oneline //简洁的查看commit的列表
$ git log -n4   // -n[val]代表查看最近的几次历史可以和--oneline 配合使用
$ git branch -v //查看本地有多少的分支
$ git log --all //查看所有分支的版本(默认是查看当前分支的)
$ git log --all --graph // 图形化的查看

7.通过图形界面工具来查看版本历史

$ gitk //查看版本历史图形化

8.探秘.git目录

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2020/1/31     23:49                hooks
d-----        2020/1/31     23:49                info
d-----         2020/2/1     15:36                logs
d-----         2020/2/1     16:12                objects
d-----        2020/1/31     23:49                refs
-a----         2020/2/1     16:12             22 COMMIT_EDITMSG
-a----        2020/1/31     23:49            130 config
-a----        2020/1/31     23:49             73 description
-a----         2020/2/1     20:13            216 gitk.cache
-a----        2020/1/31     23:49             23 HEAD
-a----         2020/2/2      0:51            466 index

HEAD //文件告诉我们现在工作在哪个分支上(这是个引用指向refs)
config //里面放的是配置信息(用户名和邮箱)
refs // 它里面包含heads  tags
----------
refs => heads 里面放的是你创建的分支(多人协作开发会创建很多分支)
refs => tags //里面放的是你标记的tags,指向commit。
objects //里面有很多松散的文件,git会自我梳理,把过多的文件打包放在pack里。
// **git 中有tree的概念**
// 在git眼里只要内容相同就是唯一的一个blob
/*
 *d-----         2020/2/1     16:12                ca
 *d-----         2020/2/1     15:36                ee
 *d-----         2020/2/1     15:36                ef
 *d-----        2020/1/31     23:49                info
 *d-----        2020/1/31     23:49                pack
 * // 根据git cat-file -t ca(两位文件名和里面的编码信息可以检测出来类型)
 */
===============
$ git cat-file -t 跟编码  //检查类型
$ git cat-file -p         //根据对象的类型显示其内容

9.commit、tree、blob三个对象之间的关系

一个commit对应着一个tree。一个tree下面包含着tree和blob。

10.分离头指针情况下的注意事项

detached HEAD // 分离头指针

分离头指针是指你目前正在工作于没有分支的情况下,你可以继续做开发,但是如果偶尔有一天你切换分支工作,没有和分支挂钩的文件会被git清理掉。(好处是你想做尝试开发时可以使用,如果感觉不好直接切换分支不用理会)

  • 如果变更的很重要一定要和分支绑定在一起

进一步理解 HEAD 和 branch

// 查看两个commit的区别
$ git diff 编号  编号
$ git diff HEAD HEAD^1  // 每次加^1代表他的父级~1一样^^

11.删除不需要的的分支

使用 git branch -d (branch-name) // 如果删除不掉用户在有风险把控的情况下可以使用 -D删除。

12.怎么修改最新commit的message?

$ git commit --amend //windows打开commit进行修改 esc退出 大写 ZZ 保存


13.怎么把间隔的几个commit整理成一个

通过git rebase -i 编号最好从他父级 git rebase --root 从跟开始

  • 进入后pick为保留的,s为合并的。后面一个页面第一行描述一下

14.怎么比较暂存区和HEAD所含文件的差异

git diff --cached // 把暂存区的文件和HEAD指向的作比较

15.怎么比较工作区和暂存区所含文件的差异?

git diff //默认就是工作区和暂存区比较

git diff -- 文件名

不加文件名是吧工作区所有的文件和暂存区作比较

$ git diff [head] [head] -- 文件名
/*
 *比较两个commit的文件区别
 */

16.如何让暂存区恢复成和HEAD一样?

git reset HEAD //恢复暂存区和HEAD一样

17.如何让工作区的文件恢复成和暂存区的一样

  • 如果想变工作区的内容用checkout暂存区用reset
$ git checkout -- 文件名  //把工作区文件恢复成暂存区一样

18.怎么取消暂存区部分文件的更改

$ git reset HEAD -- 文件名  //把暂存区指定文件更改成原来

19.消除最近的几次提交

$ git reset --hard 指针 // 恢复到指针的指向

20.正确删除文件的方法

$ git rm 文件名

21.开发中临时加塞了紧急任务怎么处理?

$ git stash  // 先把当前未完成任务放到一块区域藏起来,处理紧急任务
$ git stash list  //查看区域列表
//////取出来有两种办法//////
$ git stash apply //取出暂时放的文件,不删除可复用
$ git stash pop // 取出暂时放的文件,并删除

22.如何指定不需要Git管理的文件

.gitignore 文件来配置不受git管理的文件

doc  //指定doc文件和文件夹里面的文件不受管理
doc/  //指定doc文件夹以下的文件不受管理
//如果doc和doc/同时存在,但要git管doc文件夹,不管doc文件,要怎么设置呢?
doc
!doc/*

23.如何将Git仓库备份到本地

哑协议与智能协议


直观区别: 哑协议传输进度不可见;只能协议传输可见

传输速度: 智能协议比哑协议传输速度要快。

git命令之git remote的基本用法

1.git remote 不带参数,列出已经存在的远程分支

2.git remote -v | --verbose 列出详细信息,在每一个名字后面列出其远程url,此时, -v 选项(译注:此为 –verbose 的简写,取首字母),显示对应的克隆地址。

3.git remote add url 添加一个远程仓库

修改远程仓库在本地名称 git remote rename 已有 变更

24.配置公私钥

ls -al ~/.ssh 查看是否存在现有的SSH秘钥
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 生成新SSH秘钥 。

drwxr-xr-x 1 dell 197121 0 2月 3 16:02 .
drwxr-xr-x 1 dell 197121 0 2月 3 01:24 ..
-rw-r--r-- 1 dell 197121 3381 2月 3 16:02 id_rsa (私钥)
-rw-r--r-- 1 dell 197121 742 2月 3 16:02 id_rsa.pub (公钥)
-rw-r--r-- 1 dell 197121 802 5月 1 2019 known_hosts
私钥留在本地,公钥配置到公网上

25.把本地仓库同步到GitHub

git push github --all //全都上传到远端
git fetch github 分支 //拉具体分支
git merge -h // 来处理
git merge --allow-unrelated-histories github/master //允许两个不相关的分支进行merge

26.不同人修改了不同文件如何处理

先把分支fetch 下来,然后merge 。再push。

27.不同人修改了同文件的不同区域如何处理

每次做开发时和远端同步一下是个好习惯 git pull (这个命令执行了git fetch ,git merge)
思路:1.把远端代码拉下来进行merge可以执行 git pull 。这时git会给你报冲突的问题,需要我们手动解决。可以利用图形化,和命令行多种解决方式。然后 git status 查看一下当前的状态,会告诉你确不确定merge 。如果确定git commit -am 最后push。

28.同时变更了文件名了文件内容如何处理(别人还不知道)

遇见这种情况直接git pull git会非常智能的帮我们merge。

29.把同一文件改成了不同的文件名如何处理

这种情况依旧用 git pull 看git会不会帮助我们自动merge。现实是git对于这种情况并不会。他会给我们报文件冲突,让我们自己协商解决。依次删除不需要的,添加更改的。

30.Git集成使用的禁忌

  • 禁止向集成分支执行 push -f 操作

$ git push -f的危害 会强制干掉一些commit

  • 禁止向集成分支执行变更历史的操作

公共的分支是禁止执行 git rebase -i 命令的,这样会破坏历史。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 常用Git命令总结 git config --global user.name "你的名字" 让你全部的Git仓库...
    繁星追逐阅读 285评论 0 0
  • 说明:本次总结来自廖雪峰的官方网站,仅供学习,如有侵权请联系管理员删除。 git命令 安装git 安装完成后需要配...
    test小星星阅读 479评论 0 0
  • Git 在上家公司时使用git管理代码,当时使用的稀里糊涂,有些地方不是太明白。现在这家公司把代码移到git上管理...
    圆土豆阅读 660评论 0 50
  • 关于git,之前总是遇到什么问题然后做了一个简单总结。今天决定来一个系统的总结,加深一下自己对git的理解。 1、...
    丶灰太狼他叔阅读 714评论 2 0
  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 5,155评论 0 9

友情链接更多精彩内容