所有软件都是要先配置的

Git 是什么 ?

  • Git 就是一个命令而已,Bash 命令里有很多命令。

    Git 解决了什么问题 ?

  • 版本控制 :一个只有程序员会遇到的问题。

  • Git 可以让代码有版本,随时可以回退到某个版本

    配置 Git

    Git 的6行配置

    1. git config --global user.name # 你的英文名
    2. git config --global user.email # 你的邮箱
    3. git config --global push.default simple # 只能推送到本地分支
    4. git config --global core.quotepath false
    5. git config --global core.editor "code --wait"
    6. git config --global core.autocrlf input

    运行完这六行才能开始用 Git
    【注意】:

  • 上面的英文名和邮箱和 GitHub 没有关系

  • 可以跟 GitHub 的用户名和邮箱保持一致,也可以不一致。

  • 需要保证 code 是可以直接在命令行执行的

  • 如果不能执行,需要安装 VSCode 并配置 PATH
  • PATH 添加内容参考:C:\Users\TK\AppData\Local\Programs\Microsoft VS Code\bin

Git 基础操作

git init「创建 .git 目录」

  • git init :在当前目录新建一个 Git 代码库,用于容纳代码快照
    1. $ mkdir demo-1
    2. $ cd demo-1
    3. $ touch index.html
    4. $ code . # 用 VSCode 打开当前目录
    5. $ git init # 在 demo-1 里初始化了一个空的 git 仓库
    6. $ ls -a # 列出所有文件,包含隐藏文件

git add 路径「将文件添加到暂存区」

  • 意思是告诉 git 系统需要提交哪些文件
  • 路径可以是绝对路径、相对路径、.*
  • VSCode 文件右侧如果显示 A 表示已添加,显示 U 为还未跟踪
  1. git add .
    不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除
  2. git add -u .
    -u表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
  3. git add -A .
    -A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。

.gitignore「不需要提交的文件」

  • 在 vscode 新建 .gitignore 文件,在文件里加入不需要提交的文件名
  • 常见的有 :
    • node_modules
    • .DS_Store
    • .idea
    • .vscode
    • . 为开头的文件大多数时候是不能提交的

如何把 **.gitignore** 里的文件提交到 git 仓库?

  • $ git add .gitignore

git status 「显示有变更的文件状态」

  • git status 命令用于显示工作目录和暂存区的状态。(gst
    • 使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被 Git tracked 到。
    • git status 不显示已经 commit 到项目历史中去的信息。
  • git status -sb:简洁版 status(gsb

image.png

git commit「提交」

将暂存区内容添加到本地仓库中 除了 commit 提交 ,其他操作都不会影响 .git 本地仓库

  • git commit -m 字符串:提交暂存区到 git 仓库gcmsg

    • 提交,并说明提交理由
    • 字符串里如果有空格,就要用引号包起来
      1. git commit -m [message] # [message] 可以是一些备注信息
  • git commit -v:提交显示所有 diff 信息(后添加字符串) (gc

    • 更推荐新人用 --verbose 选项的理由:
      • 可以帮助回顾刚刚改了什么东西
      • 会迫使自己把提交理由写的更详细一些
      • git commit -v 可以让 [message] 看起来非常正规、专业

git log 「查看提交历史」

git loggit reflog 的区别:

  • git log:是上传给别人看日志,永远是很整齐的
  • git reflog:是一个私有日志
  • git log:查看历史提交记录。
  • git log --stat:显示 commit 历史,以及每次 commit 发生变更的文件
  • git blame <file>:以列表的形式查看指定文件的历史修改记录。

git reflog 「显示当前分支提交」

  • 显示所有历史(提交历史和版本切换历史)
  • 可以在版本间跳来跳去

git reset —hard xxxxxx「用于回退版本」

  • xxxxxx 是要提交号的前 6 位
  • 一定要确保已经把所有代码 commit 了
  • 因为这个操作会使没有 commit 过的变动消失
  • git reset --hard 版本号1:回退到版本号1
  • git reflog:显示所有历史(提交历史和版本切换历史)
    • 通过使用以上两个操作,可以在不同版本间来回跳转

git add 和 git commit 的区别?

  • git add:指要提交还未提交,只是记录要提交哪些内容
  • git commit:才是提交

    注意事项

  • git add .

  • git commit -v
  • 不要少些 .
  • 不要少些空格

总结:

git 可以实现多版本切换

  • git add :选择要提交的内容
  • .gitignore:文件描述不提交的内容
  • git commit -v:用来提交
  • git log:用来查看历史
  • git reset --hard xxxxxx:用来切换历史版本
  • git reflog:用来查看所有历史

Git 分支管理

git branch「新建分支」

  • 基于当前 commit 创建一个新的时间线(分支)
  • 在哪个分支提交,代码就出现在哪个分支
  • git branch (branchname)新建一个分支,但依然停留在当前分支(gb
  • git branch列出分支,后面加上分支名就是新建分支

    • 列出的分支里,哪个分支上有 * 就当前在哪个分支

      git checkoout 「切换分支」

  • git checkoout (branchname)切换到指定分支,并更新工作区 (gco

  • gir checkout -b (branch):新建一个分支,并切换到该分支(gcb
  • 切分支的时候是不影响当前硬盘上的文件的,但是 git reset 是影响的
    • 当前目录有未提交的代码,只要跟另一个分支不冲突,就不需要理会
    • 如果冲突了呢?可以使用 git stash,也可以合并冲突
示意图 image.png

git merge 「合并分支」

  • git merge (branchname):合并分支到当前分支(gm

解决冲突的办法

  • 发现冲突

    • 在合并分支的时候,会得到 conflict 提示
    • 使用 git status -sbsb 表示简化分支) 查看哪些文件冲突了 | 截图里的两个 UU 表示两个都改了 | image.png | | —- | —- |
  • 解决冲突

    • 依次打开每个文件
    • 搜索 ==== 四个等于号
    • 在上下两个部分中选择要保留的代码
    • 可以只选上面,也可以只选下面,甚至可以都选
    • 删除不用的代码,删除 ==== >>>> <<<< 这些标记
    • git add 对应文件
    • 再次 git status -sb,解决下一个文件的冲突
    • 直到没有冲突,运行 git commit(无参数)提交

总结:

分支可以合并

  • 进入要保留的分支
  • 运行 git merge branchname
  • git branch -d branchname:合并完后删除无用的分支

合并时冲突怎么办

  • 解决冲突即可
  • 然后 git commit,使用默认的 commit message

大总结

主要用到的命令

  • git config:用来配置 git
  • git add 路径:告诉 git 要添加哪些文件
  • git status -sb:查看哪些文件冲突了
  • git commit -v:弹出 vscode 来提交信息
  • git branch x:新建分支 x
  • git checkout x:进入分支 x
  • git merge:合并分支
  • git commit:在合并的时候不需要加参数 -v 或 -m,会自动有一个 message
  • git branch -d x:删除分支 x
  • git log:查看提交历史
  • git reflog:显示所有历史(提交历史和版本切换历史)
  • git reset --hard xxxxxx:可以跳转到任意一个提交历史版本

.git 目录就是本地仓库

  • 它不会重复复制相同的文件(优化)
  • 可以支持多个分支

细节

  • **git add .****git commit -v** 用的多,其他命令很少用到
  • 学会命令行操作,就不再需要用 CUI 操作了
  • git add 处理的是文件变化,而不是文件
    • 比如删除一个文件后,依然要用 git add 来添加到待提交区

image.png

部分资料来源 :饥人谷 - 方方老师