这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战
# 系统中 git 的版本:
$ git version
git version 2.23.0.windows.1
安装
git-x64-for-windows 下载链结 github.com/git-for-win…
正常安装,一直走下一步就行,我们需要安装上 git 的 GUI 界面和 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 中的工作区和暂存区
工作区:任何新的操作,如添加文件,删除文件,修改文件内容,都会先出现在这里
暂存区:执行 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步
第2步
第3步,key 中输入 .ssh 目录下的 id_rsa.pub 中的文件内容
客户端工具
毕竟命令行的方式应该就大佬用的飞起,像我这种刚入门的,基本会很不习惯,而且,图形化的操作不香吗?
推荐几个大伙常用的图形化工具:
git GUI
安装软件时默认会有提供
Github Desktop
特点包括漂亮的分区方法,可以轻松地检查带有pull请求的分支,你可以检查图片和代码区块之间的差异,甚至可以使用拖拽的方式从应用程序中添加项目进行管理。
连接:central.github.com/deployments…
Fork
Fork是Mac和Windows的免费高级GUI git客户端,专注于速度,用户友好性和效率。它的功能包括带有快速操作按钮的主题布局,内置的合并冲突帮助器和解析器,仓库管理器,GitHub通知等。
不过,坏消息是要收费了?