Git 初级入门

306 阅读5分钟

这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战

# 系统中 git 的版本: 
$ git version
git version 2.23.0.windows.1

安装

git-x64-for-windows 下载链结 github.com/git-for-win…

正常安装,一直走下一步就行,我们需要安装上 gitGUI 界面和 bash 命令行操作

git 的 bash 命令行,可以当成 linux 的 shell 命令行使用,比如我这里用的最多的就是在 bash 里 ssh 到另一台 linux 电脑,然后将本地的 jar 用 scp 的命令复制过去

git 安装后,指定全局配置

git config --global user.name "your name"
git config --global user.email "your email"

初始化git仓库

创建仓库目录,并初始化

cd D:/git
mkdir git-repository
git init

进入仓库,创建文件

vim readme.md
// 输入文本信息,保存

把文件添加到仓库

git add readme.md
// 可以一次添加多个文件
git add file1.md file2.md file3.md

提交文件

git commit -m 'input your commit message'

查看仓库当前状态

git status

// 结果输出
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   readme.md

no changes added to commit (use "git add" and/or "git commit -a")

查看文件修改

git diff

// 结果
diff --git a/readme.md b/readme.md
index 488642a..1d72fa6 100644
--- a/readme.md
+++ b/readme.md
@@ -1,2 +1,2 @@
-git is a version control system.
+git is a distributed version control system.
 git is free software

查看git 每次提交的信息

git log
​
// back info
commit 99187208f290f1cdf749e0302c47ea22161ef30e (HEAD -> master)
Author: 641031 <31053685+641031@users.noreply.github.com>
Date:   Wed Jun 3 17:19:29 2020 +0800
​
    append GPL
​
commit ae77e40ccf7928bfc64096675fecc403b15516a9
Author: 641031 <31053685+641031@users.noreply.github.com>
Date:   Wed Jun 3 17:11:13 2020 +0800
​
    modify readme
​
commit 0e8418795c7e5022096f3b6e6ff8e0db33910146
Author: 641031 <31053685+641031@users.noreply.github.com>
Date:   Wed Jun 3 16:53:28 2020 +0800
​
    write a readme file
​

添加参数简化信息输出 --pretty=oneline

git log --pretty=oneline
​
// back info
99187208f290f1cdf749e0302c47ea22161ef30e (HEAD -> master) append GPL
ae77e40ccf7928bfc64096675fecc403b15516a9 modify readme
0e8418795c7e5022096f3b6e6ff8e0db33910146 write a readme file
​

回滚版本

// 回滚到上个版本
git reset --hard head^
​
// 回滚到上两个版本
git reset --hard head^^
​
// 回滚到上 n 个版本
git reset --hard head~n
​
// 回滚到指定版本
git reset --hard commit_id (版本号可以从 git log 中查询到,git commit 时也会显示当前提交产生的 commit_id)

查询 git 自动记录的我们的每次命令

git reflog
​
// back info
c9f731a (HEAD -> master) HEAD@{0}: reset: moving to c9f731a
9918720 HEAD@{1}: reset: moving to head^
c9f731a (HEAD -> master) HEAD@{2}: commit: add new line
9918720 HEAD@{3}: commit: append GPL
ae77e40 HEAD@{4}: commit: modify readme
0e84187 HEAD@{5}: commit (initial): write a readme file

git 中的工作区和暂存区

0.jpg

image-20200608174259768.png

工作区:任何新的操作,如添加文件,删除文件,修改文件内容,都会先出现在这里

暂存区:执行 git add file1 file2... 命令后,指定的、添加了的文件,会出现在这里

流程:文件修改后,执行 git add命令,将文件添加到暂存区,最后执行 git commit 命令,将文件提交到git库

Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

每次修改,如果不用git add到暂存区,那就不会加入到commit中。

丢弃修改

  • file 自修改后还没有被放到暂存区,现在,撤销修改就会到和版本库一模一样的状态
  • file 已经添加到暂存区后,又做了修改,现在,撤销修改就回到添加到暂存区后的状态

总结,就是让文件回到最近一次 git commit 或者是 git add 时的状态

git checkout -- file  // 检出最新的文件
git checkout branch   // 切换分支

如果,修改已经被放到了暂存区,可以使用 git reset head <file> 将指定的文件的修改,从暂存区,回滚到工作区

删除文件

// 从git 仓库中删除文件
git rm file

如果,只是简单的使用 rm file 命令,在本地删除文件,我们可以使用 git checkout -- file 从git 库中检出指定文件

如果,在git 仓库中删除了文件,就只能通过回滚版本库来还原文件了

git rm test.md
git reset --hard head

远程仓库

创建本机的 ssh key
ssh-keygen -t rsa -C "youremail@example.com"

一路按 enter 使用默认配置

最后,会在当前使用的用户目录下,生成一个 .ssh 文件夹,如 c:/user/wangbin1/.ssh

将 ssh 添加到 github

登录 github,在 settings 中,找到 ssh 选项

第1步 image-20200611180822304.png

第2步

image-20200611180843348.png

第3步,key 中输入 .ssh 目录下的 id_rsa.pub 中的文件内容

客户端工具

毕竟命令行的方式应该就大佬用的飞起,像我这种刚入门的,基本会很不习惯,而且,图形化的操作不香吗?

推荐几个大伙常用的图形化工具:

git GUI

安装软件时默认会有提供

Github Desktop

特点包括漂亮的分区方法,可以轻松地检查带有pull请求的分支,你可以检查图片和代码区块之间的差异,甚至可以使用拖拽的方式从应用程序中添加项目进行管理。

连接:central.github.com/deployments…

Fork

Fork是Mac和Windows的免费高级GUI git客户端,专注于速度,用户友好性和效率。它的功能包括带有快速操作按钮的主题布局,内置的合并冲突帮助器和解析器,仓库管理器,GitHub通知等。

不过,坏消息是要收费了?

链结:git-fork.com/update/win/…