Git使用教程

Git 全局配置

git config --global user.name "用户名"	# 全局配置git用户名为Hong Xun

git config --global user.email 用户邮箱		# 全局配置git用户邮箱为

git config --global credential.helper store	# 存储用户和邮箱信息

git config --global --list		# 查看git全局配置

Git 命令

创建仓库

git init	# 在当前目录下创建仓库

# 创建的.git目录是隐藏的,ls显示不出来
ls -a # 显示

git init learn-git	# 在当前目录下创建lern-git目录并创建仓库

git ls-files 	# 查看仓库中存储的所有文件

添加和提交文件

git status		# 查看当前仓库状态

git add file.txt 	# 将file.txt存放到暂存区

git commit -m "第一次提交"		# 将暂存区中的文件提交到本地仓库,-m 为这次提交添加描述
# 可使用通配符添加多个文件

git log			# 可以查看提交记录
git log --oneline	# 查看简洁的提交记录

git commit -am "1"
# 相当于
git add <所有已被跟踪的文件>
git commit -m "1"
# 但注意,其不会提交为跟踪的文件

回退版本

git reset --soft 回退版本ID

--soft 	# 回退到某一版本并保留工作区、暂存区的工作内容
--hard 	# 回退到某一版本,丢弃工作区、暂存区的所有内容
--mixed # 回退到某一版本,只保留工作区的内容
# mixed是 git reset 的默认参数

git reflog 	# 查看历史命令

# 然后可以根据版本号进行回退

查看差异

git diff
# 默认比较工作区和暂存区之间的差异

HEAD	# 查看工作区和版本库之间的差异
# HEAD 指向分支的最新提交节点
--cached  # 查看暂存区和版本库之间的差异

git diff HEAD~ HEAD
git diff HEAD^ HEAD
# 查看上一个版本与当前版本的差异

git diff HEAD~2 HEAD
# 查看HEAD之前的两个版本与当前版本的差异

git diff HEAD~2 HEAD file3.txt
# 查看两个版本间某文件的版本差异

git diff brach_name branch_name
# 查看两个分支之间的版本差异

删除文件

git rm file2.txt
# 在工作区和暂存区中删除file2.txt

git rm --cached <file>
# 暂存区删除,工作区保留

git rm -r *
# 递归删除某个目录下的所有子目录和文件

.gitignore忽略文件

ignore是忽略的意思,该文件用来存放忽略的不应该放在版本库中的文件

应该忽略的文件

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

.gitignore中存储的文件会被git忽略掉不会再提交,但.gitignore本身在改变,需要提交

匹配规则

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

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

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

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

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

# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
".gitignore" 17L, 383B

远程仓库

远程连接仓库

# 远程连接github仓库
git clone git@github.com:(github用户名)/remote-repo.git

将本地仓库、远程仓库

# 将本地仓库内容推送给远程仓库
git push