Git 命令、关联github仓库,为开源项目提交pr

一、git 命令

  1. 初始化新仓库init
# 当前所在目录为仓库
git init  
# 当前目录下新建 repo 的仓库
git init repo
  1. 克隆仓库clone
git clone <仓库地址>
  1. 查看仓库状态status
git status
# 简略信息:s 是 short
git status -s
  1. 分支的最新提交节点HEAD
最新:HEAD
上个:HEAD^, HEAD~
# 也可以加上数字,表示 HEAD 之前的第 i 个
HEAD~i
  1. 添加修改到暂存区(新文件跟踪状态)add
# 添加指定
git add <file>
# 全部文件
git add .
# 也可以使用通配符
git add *.py
  1. 删除暂存区的文件(跟踪状态)rm
git rm --cached <file>
# 删除文件(工作区+暂存区)
git rm <file>
  1. 提交本地仓库commit
git commit -m "提交信息“
  1. 也可以同时执行(前提是已经是已跟踪的文件)
git commit -am "提交信息"
git commit -a -m "提交信息"
  1. 查看loglog
# 完整 log
git log
# 简洁 log
git log --oneline
  1. 回退版本reset
# mixed 模式(默认模式,只删除暂存区的,保留工作区)
git reset <版本号>
git reset --mixed HEAD^ 
# soft 模式(相当于撤销commit操作,保留工作区的+保留暂存区
git reset --soft <版本号>
# hard 模式(工作区和暂存区的都不保留)
git reset --hard <版本号>
  1. 查看操作历史记录,返回误操作版本 reflog
# 查询操作历史
git reflog
# 返回就用回退版本
  1. 查看差异diff
# 查看工作区、暂存区之间的差异
git diff
# 查看工作区和本地仓库之间的差异
git diff HEAD
# 查看暂存区和本地仓库之间的差异
git diff --cached
# 查看不同版本之间的差异
git diff <提交id1> <提交id2>
git diff <提交id1> HEAD 
git diff <提交id1> <提交id2> <file>  # 仅查看某个文件差异
# 查看不同分支之间的差异
git diff <分支名> <分支名>
  1. 应该忽略的文件.gitignore
    常用gitignore大全
  • 系统或者软件自动生成的文件
  • 编译产生的中间文件和结果文件
  • 运行时生成的日志、缓存、临时文件
  • 涉及身份、密码、口令、密钥等敏感信息文件
.gitignore 里面添加上要忽略的文件/夹
	<file>
	<dir>/  # 文件
	"#" 开头是注释
	Blob 模式匹配
		"*" 匹配多个字符
		"?" 匹配单个字符
		"[]" 匹配列表中的但个字符([abc]表示匹配 a 或者 b 或者 c
			"[0-9]\[a-z]" 表示连续的
	“**” 匹配任意中间目录
例子:
	# 忽略所有的 .log 文件
	*.log
	# 但跟踪所有的 show.log文件(即便是前面忽略了)
	!show.log
	# 只忽略当前目录下 TODO(不忽略 subdir/TODO)
	/TODO
	# 忽略任何目录下名为 build 的文件夹
	build/
	# 忽略 doc/所有txt (不忽略doc/sub/*.txt)
	doc/*.txt
	# 忽略 doc/ 目录及其所有子目录下的 .pdf
	doc/**/*.pdf

二、远程仓库关联(github为例)

创建一个新的仓库( 然后可以直接git clone)
下面是本地已经有个本地仓库了,要关联远程仓库的
12. 添加远程仓库remote add

git remote add <shortname> <url>  # shortname 远程仓库别名,一般取 origin
git remote add origin git@github.com:name/repo
  1. 如果在远程仓库建立的时候创建了README或者LICENCE的话
    需要先pull到本地
git pull origin main
# 如果有冲突的话要给出策略
git pull origin main --rebase  # rebase
git pull origin main --no-rebase  # merge
# 手动解决完
git rebase --continue
git merge --continue

或者使用fetch拉取,然后进行合并
16. 推送本地分支到远程分支

git push -u origin main:main
  1. 分支
# 查看分支
git branch  # 有 * 的是当前分支
# 新建分支
git branch <分支名>
# 切换分支
git switch <分支名>
# 
  1. 合并和变基
git merge <被合并分支名>  # 合并到当前分支, 保留提交记录
git rebase <目标分支名>  # 当前的分支分叉开始地方会被剪过去,线性提交历史、改变提交历史
  1. 删除分支
# 删除已被完成合并的分支
git branch -d <分支名>
# 强制删除分支
git branch -D <分支名>

三、为开源项目贡献代码

在这里插入图片描述

  1. fork仓库(fork的时间久的话可以同步一下,也可以后面fetch)
  2. 克隆自己fork的仓库
git clone <自己的代码地址>

这个时候本地克隆的仓库和自己的远程仓库是关联了的

  1. 添加官方仓库地址
git remote add <shortname> <url>  # shortname 远程仓库别名,这里一般取 upstream
git remote add upstream https://github.com/name/repo.git

已经把本地仓库和远程仓库、官方仓库关联起来了

  1. 拉取官方仓文件,进行同步,也同步到origin远程仓库
git fetch upstream
git merge upstream/main

或者

git pull upstream

然后同步到origin

git push -u origin main

至此三库都一样了

  1. 新建开发分支开发
git branch <开发分支名>
# 切换到开发分支
git checkout <开发分支名>
git switch <开发分支名>  # (Git 2.23+)

或者

# 切换到开发分支名,不存在的话新建
git checkout -b <开发分支名>
  1. 推送到远程仓库
git push -u origin <开发分支名>
  1. 进行开发
# 查看状态
git status

# 查看修改内容
git diff

# 跟踪
git add .

# commit 提交本地
git commit -m "提交信息"

# push到远程仓
git push origin
  1. 向官方仓库提交pr

    打开GitHub,就会出现可以合并到分支提示
    各家的PR说明格式要求不同,可以前往官方仓查看他的贡献指南,一般会给出示例模板。
    提交PR之后,可以前去官方仓查看审查情况

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值