同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代

Linux 内核开源项目有着许多的参与者,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码.

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力

这迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)开发出自己的版本系统

Git诞生趣闻

安装Git

命令行或终端输入以下命令查看系统有没有安装Git

git

在Linux上安装Git

Centos

 sudo yum install -y git 0

Debian&Ubuntu

sudo apt-get install git 

在Windows上安装Git

从Git官网直接下载安装程序,按默认选项安装

创建仓库

版本库简单来说就是一个本地的工作目录,这个目录里面所有的文件都能被Git所管理,方便进行版本的回溯

两种场景:

1.把已有的项目代码纳入Git管理

cd 项目所在的文件夹
git init

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

cd 某个文件夹
git init your_project
cd your_project

创建一个learngit目录并进入

mkdir learngit && cd learngit

初始化目录,将其变成Git可以管理的仓库

git init

初始化配置信息

#配置用户名
git config --local user.name 'suran'
#配置邮箱
git config --local user.email 'suran95277@gmail.com'
#查看配置列表
git config --local --list

手动创建一个README

touch README

添加到暂存区并提交

git add README
git commit -m'Add README'

认识暂存区

往仓库里添加文件

  1. 修改index.html和style.css
#加入 index.html 和git-logo 并加入暂存区并提交
touch git-logo index.html
git add git-logo index.html
git commit -m'Add index logo'
#加入style.css并加入暂存区并提交
mkdir styles
touch styles/style.css
git add styles/style.css
git commit -m'Add styles/style.css'
#加入script.js并加入暂存区并提交
mkdir js
touch js/script.js
git add js/script.js
git commit -m'Add js/script.js'
#修改index.html和style.css并加入暂存区并提交
vim index.html
vim styles/style.css
git add -u 

文件重命名

mv README readme.md
git status
git add readme.md
git rm README
git status
#恢复到上次的状态
git reset --hard
#使用git的命令来重命名
git mv README readme.md

版本历史

命令行

git log
git log --oneline
git log -n4 --oneline
git log -n2 --oneline
git help --web log

图形界面

gitk

删除分支

git branch -d 分支名

修改commit的message

修改最新的commit的message

git commit --amend

修改旧的commit的message

git rebase -i  commit父编号
修改pick为r
保存退出自动跳转

把连续的commit合并

git rebase -i  commit父编号
留下需要合并的commit 其他修改pick为s
保存退出自动跳转

比较差异

如何比较暂存区和HEAD所含文件的差异?


git diff --cached

如何比较暂存区和工作区所含文件的差异?

git diff  
git diff --  具体文件名

其他

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

git reset HEAD

如何让工作区恢复成暂存区一样?

git checkout -- 文件名

如何取消暂存区部分文件的更改?

git reset  HEAD -- 文件名

消除最近的几次提交

git reset --hard  commit编号

正确删除文件的方法

git rm 文件名

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

git stash   
git stash  apply --把之前存放的内容放到工作区 git stash堆栈区还在
git stash  pop--把之前存放的内容放到工作区 git stash堆栈区无了

如何指定不需要git管理的文件?

vi .gitignore

配置Github公私钥

  1. 打开 Git Bash。
  2. Paste the text below, substituting in your GitHub email address.
ssh-keygen -t rsa -b 4096 -C "suran95277@gmail.com"
cat id_rsa.pub

然后在Github个人资料的SSH设置项中增加密钥

Github创建个人仓库

右上角新建仓库

填写仓库名字,按需选择后点击创建

绑定GitHub远程仓库

绑定远程仓库

git remote add origin https://github.com/yeyufan1996/git_learing.git
git branch -M 'main'
git push -u origin 'main'

=

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。