💻 Git
参考
License
MIT
Massachusetts Institute of Technology License
我只想安安静静写代码,你干嘛都与我无关
-
版权申明
- 文档和软件中需保留原始版权信息
-
免责条款
- 原始作者对软件使用引发的任何损害不负责
-
使用
- 随便用
-
修改
- 随便改
-
再分发
- 随意
BSD
Berkeley Software Distribution License
打广告的时候,别说你是基于我的,丢脸
-
版权申明
- 文档和软件中需保留原始版权信息
-
免责条款
- 原始作者对软件使用引发的任何损害不负责
-
使用
- 随便用,但是宣传软件的时候,不要带上我
-
修改
- 随便改
-
再分发
- 随意
GPL
GNU General Public License
一日GPL,一生GPL
-
版权申明
- 文档和软件中需保留原始版权信息
-
免责条款
- 原始作者对软件使用引发的任何损害不负责
-
使用
- 随便用
-
修改
- 随便改,但是改了之后的代码不能闭源
-
再分发
- 依旧遵循 GPL
LGPL
GNU Lesser General Public License
更灵活的GPL
-
允许动态连接闭源库
-
虽然灵活,但这并不意味着你可以闭源
Apache
-
版权申明
- 文档和软件中需保留原始版权信息
-
免责条款
- 原始作者对软件使用引发的任何损害不负责
-
使用
- 随便用
-
修改
- 随便改
-
再分发
- 修改后的软件,分发时需要带上原始版权信息
安装
Linux
Bash | |
---|---|
1 2 |
|
Windows
首次使用
初始化仓库
在需要管理的目录(工作区)下,执行以下命令:
Bash | |
---|---|
1 |
|
-
将目标目录初始化成 git 可以管理的仓库,会生成一个
.git
目录 -
同时,会创建一个
master
分支,看不见,但是存在
设置名字和邮箱
此操作的目的,是为了追踪每次操作,究竟是谁做的,我们一般将其存储在 config
中
配置文件有三个级别,权重从高到底:
-
仓库
local
,此配置文件只对 当前仓库 有效 -
全局
global
,此配置文件对 当前用户 有效 -
系统
system
,此配置文件对 全局 有效
所在位置:
Windows:
-
local
:.git/config
-
global
:C:\Users\username\.gitconfig
-
system
:C:\Program Files\Git\etc\gitconfig
Linux:
-
local
:.git/config
-
global
:~/.gitconfig
-
system
:/etc/gitconfig
文件追踪 / 移动到暂存区
Bash | |
---|---|
1 |
|
追踪所有文件:
Bash | |
---|---|
1 |
|
将暂存区提交到本地仓库
目标文件提交到本地仓库的当前分支:
Bash | |
---|---|
1 |
|
将本地仓库推送到远程仓库
将本地仓库推送到远程仓库,需要使用 SSH key
进行身份验证
私钥存储在本地,公钥存储在远程仓库
当你推送的时候,远程仓库会验证你的身份,如果验证通过,就可以推送
-
生成
SSH key
Windows:
Bash 1
ssh-keygen -t rsa -C "email"
-t rsa
:指定加密算法为 RSA-C "email"
:指定注释,一般填邮箱Linux:
Bash 1
ssh-keygen -t rsa -C "email"
-
Windows:
C:\Users\username\.ssh\id_rsa.pub
Linux:
~/.ssh/id_rsa.pub
登录远程仓库,
setting
->SSH keys
->New SSH key
title
:填写公钥的名字key
:填写公钥的内容 -
在远程仓库中新建仓库
名称和本地仓库可以不一样,但建议一致
开源和私有暂且不论,但建议开源
复制仓库地址,使用
ssh
-
添加远程仓库
Bash 1
git remote add origin 远程仓库地址
origin
是远程仓库的别名,可以自定义 -
推送到远程仓库
Bash 1
git push origin master
注意,以上操作只是将本地仓库推送到远程仓库,但是远程仓库并不会自动创建分支
将远程仓库拉取到本地仓库
-
git fetch origin
-
拉取远程仓库的所有分支到本地仓库,但是不会自动合并
-
git merge origin/master
- 将远程仓库的
master
合并到本地仓库的当前分支
- 将远程仓库的
-
-
git pull origin
- 拉取远程仓库的所有分支到本地仓库,并自动合并
-
git clone 远程仓库地址
- 在本地创建一个远程仓库的克隆(副本)
创建分支
Bash | |
---|---|
1 |
|
设置默认编辑器
Bash | |
---|---|
1 |
|
查看状态
仓库
Bash | |
---|---|
1 |
|
-
显示位于哪个 分支
-
显示 暂存区 的信息
-
显示 未跟踪 的文件
设置
Bash | |
---|---|
1 |
|
--级别
可以省略,会显示最终三个配置文件计算后的配置信息
所有分支
Bash | |
---|---|
1 |
|
*
表示当前分支
远程仓库
Bash | |
---|---|
1 |
|
- 远程仓库的别名和地址
查看提交历史
Bash | |
---|---|
1 |
|
显示从最近到最远的提交日志
简化输出:
git log --pretty=oneline
查看命令历史
Bash | |
---|---|
1 |
|
显示从最近到最远的命令日志
可以看到每一次命令的
commit id
修改
更改名字和邮箱
Bash | |
---|---|
1 2 |
|
修改上一次提交的信息
Bash | |
---|---|
1 |
|
如果使用的是
nano
编辑器,按Ctrl + X
退出,然后输入Y
保存,最后按Enter
退出
从暂存区移除文件
Bash | |
---|---|
1 |
|
这个命令本质上是
Bash | |
---|---|
1 |
|
从暂存区移除文件,但是不会删除文件
commit_id
可以省略,默认是HEAD
意思是将暂存区的文件恢复到
commit_id
的状态
撤销本次提交
-
保留工作区的修改
> 撤销本次提交,但是保留工作区的修改Bash 1
git reset --soft HEAD^
HEAD^
表示上一次提交,HEAD^^
表示上上次提交,以此类推 -
删除工作区的修改
Bash 1
git reset --hard HEAD^
撤销本次提交,同时删除工作区的修改
删除远程仓库地址
Bash | |
---|---|
1 |
|
删除远程仓库的别名为
origin
的仓库(地址)仅仅是删除了别名,远程仓库并没有被删除
切换分支
Bash | |
---|---|
1 |
|
切换到指定分支
国区操作
代理
设置代理
Bash | |
---|---|
1 2 |
|
取消代理
Bash | |
---|---|
1 2 |
|
同时推送到多个远程仓库
-
再添加一个需要推送的远程仓库
Bash 1
git remote set-url --add origin 远程仓库地址
-
推送到远程仓库
Bash 1
git push origin
注意,此方案只适用于多个远程仓库的代码完全一致的情况
因为我们只是给
origin
添加了多个URL
虽然效果上看起来是推送到了多个仓库,但是实际上只是推送到了一个仓库
gitee 记住账号密码
Text Only | |
---|---|
1 |
|
.gitignore
忽略某些文件和目录
忽略文件或目录
Text Only | |
---|---|
1 2 |
|
忽略某类文件
Text Only | |
---|---|
1 |
|
例外规则
Text Only | |
---|---|
1 |
|