Untitled

git配置(git config)

1
2
3
4
5
6
git --version	# git版本

git config --global user.name "zishuQ" # 设置提交用户名
git config --global user.email "zishuq77@foxmail.com" # 设置提交邮箱
git config --global credential.helper store # 保存用户名信息,避免每次都要输入
git config --global --list # 查看git config中的信息

省略(Local):本地配置,只对本地仓库有效

  • -global:全局配置,所有仓库生效(用的最多)
  • -system:系统配置,对所有用户生效(一般不会用到)

创建仓库(git init/clone)

可以通过两种方法建立仓库

1
2
git init [repo name]
git clone
1
2
3
git init    # 对当前目录进行git初始化
git init my-repo # 在当前目录下新建my-repo目录并进行初始化
git clone https://github.com/geekhall-laoyang/remote-repo.git # 在当前目录下建一个目录

工作区域

Untitled

1
git ls-files	# 查看暂存区中的文件

文件状态(git status)

Untitled

1
2
3
4
5
6
7
8
9
10
git status  # 查看仓库的状态
 
git add # 添加到暂存区
git add [filename] # 添加选中的文件到暂存区
git add *.txt # 可以使用通配符
git add . # 也可以使用目录
 
git commit # 提交 只提交暂存区中的内容,不会提交工作区中的内容
git commit # 会打开vim编辑器编辑提交信息
git commit -m "message" # 加上-m参数说明提交信息

回退版本(git reset)

Untitled

1
2
3
git reset --soft	# 回退到某一个版本,保存工作区和暂存区内容
git reset --hard # 回退到某一个版本,不保存工作区和暂存区内容
git reset --mixed # 回退到某一个版本,只保存工作区内容(reset的默认参数)

谨慎使用 –hard 参数,如果不小心删除了内容,也可以进行回退操作,如下

1
2
git reflog  # 显示当前仓库所有git命令的更改id
git reset --hard [想要回退的id]

查看差异(git diff)

Untitled

Untitled

1
2
3
4
5
6
7
git diff	# 工作区和暂存区(默认情况)
git diff HEAD # 工作区和版本库
git diff --cached # 暂存区和版本库
git diff [id_1] [id_2] # 比较id_1的版本和id_2的版本
git diff HEAD HEAD~ # 比较当前版本和前一个版本
git diff HEAD HEAD~2 # 比较当前版本和前第二个版本
git diff HEAD HEAD~ [filename] # 只查看选中文件的差异

Untitled

删除文件(git rm)

Untitled

忽略文件(.gitignore)

应该忽略哪些文件

  • 系统或者软件自动生成的文件
  • 编译产生的中间文件和结果文件
  • 运行时生成日志文件、缓存文件、临时文件
  • 设计身份、密码、口令、密钥等敏感信息文件

匹配规则

  • 从上到下逐行匹配,每一行表示一个忽略模式
  • 空行或者以**#开头的行会被Git忽略。一般空行可用于可读性的分割,#**一般用作注释
  • 使用标准的Blob模式匹配,例如:
    • 星号 ***** 通配任意个字符
    • 问号 ? 匹配单个字符
    • 中括号 [] 表示匹配列表中的单个字符,比如:[abc]表示a/b/c
  • 两个星号 ****** 表示匹配任意的中间目录
  • 中括号可以使用短中线连接,比如:
    • [0-9]表示任意一位数字,[a-z]表示任意一位小写字母
  • 感叹号 ! 表示取反

示例

编写 .gitignore 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 忽略所有的 .a 文件
*.a

# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a

# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODE

# 忽略任何目录下名为 build 的文件夹
build/

# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

可以在 github 中搜索 gitignore 里面找自己需要的模板

SSH配置和克隆仓库

1
2
3
ssh-keygen -t rsa -b 4096
私钥文件:id_rsa
公钥文件:id_rsa.pub

Untitled

  • 将公钥添加到github
    • Settings
    • SSH and GPG keys
    • New SSH key

关联本地仓库和远程仓库

Untitled

VSCode里面的使用

Untitled

分支简介和基本操作

Untitled

Untitled

解决冲突

Untitled

回退和rebase

Untitled

针对无法上传的问题

我明白了。如果这是你自己的仓库,那么你可能需要检查你的SSH密钥是否正确配置。你可以参考这篇文章来设置和测试你的SSH密钥。如果你已经设置好了SSH密钥,那么你可能需要检查你的远程URL是否正确。你可以使用以下命令来查看你的远程URL:**$ git remote -v。如果你的URL是以https开头的,那么你可能需要改成以ssh开头的,这样才能使用SSH密钥来认证。你可以使用以下命令来改变你的远程URL:$ git remote set-url origin git@github.com:zishuQ/VPS.git**。希望这些方法能够解决你的问题。

1
git remote set-url origin git@github.com:zishuQ/VPS.git