github 使用教程-01

1. 用户配置

### 配置所有 Git 仓库的 用户名 和 email 
 git config --global user.name "Your Name"
 git config --global user.email "youremail@example.com"

### 配置当前 Git 仓库的 用户名 和 email
 git config user.name "Your Name"
 git config user.email "youremail@example.com"

### 查看全局配置的 用户名 和 email 
 git config --global user.name     查看用户名
 git config --global user.email     查看邮箱地址

### 查看当前仓库配置的 用户名 和 email 
 git config user.name     查看用户名
 git config user.email     查看邮箱地址

# Git 是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址
# git config 命令的 --global 参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址(不加 --global)。
1.1初次提交代码
1.1.1 创建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"
# 邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key

1.1.2 提交代码
# 配置仓库的用户名和邮箱
 git config --global user.name "Your Name"
 git config --global user.email "youremail@example.com"
 
 # 整理仓库
 git init # 初始化仓库
 git add . # 将仓库中所有的文件添加到缓存区
 git commit -m "xxxx" # 添加提交注释
 git remote add origin https://gitee.com/xxx/xxx.git
 git push -u origin master

2 .相关命令

(所有命令都在 Git Bash 中运行)
 git                           查看 git 的相关命令 (git --help)
 git --version                 查看 git 的版本
 git config                    查看 git config 的相关命令
 git pull origin develop       从远程(origin) 的 develop 分支拉取代码
2.1 查看仓库状态
git status

2.2查看文件不同

 git diff 
 git diff <file>                
 git diff --cached
 git diff HEAD -- <file>
# git diff 查看工作区(work dict)和暂存区(stage)的区别
# git diff --cached 查看暂存区(stage)和分支(master)的区别
# git diff HEAD -- <file> 查看工作区和版本库里面最新版本的区别
如: git diff readme.txt  表示查看 readme.txt 修改了什么,有什么不同

2.3查看提交日志

 git log
 git log --oneline     #美化输出信息,每个记录显示为一行,显示 commit_id 前几位数
 git log --pretty=oneline     #美化输出信息,每个记录显示为一行,显示完整的 commit_id
 git log --graph --pretty=format:'%h -%d %s (%cr)' --abbrev-commit --
 git log --graph --pretty=oneline --abbrev-commit

# 显示从最近到最远的提交日志
# 日志输出一大串类似 3628164...882e1e0 的是commit_id (版本号),和 SVN 不一样,Git 的commit_id 不是 1,2,3…… 递增的数字,而是一个 SHA1 计算出来的一个非常大的数字,用十六进制表示, 因为 Git 是分布式的版本控制系统,当多人在同一个版本库里工作,如果大家都用 1,2,3……作为版本号,那肯定就冲突了
# 最后一个会打印出提交的时间等, (HEAD -> master)指向的是当前的版本
# 退出查看 log 日志,输入字母 q (英文状态)

2.4查看历史命令

 git reflog
# 假如我们依次提交了三个版本 a->b->c,然后昨天我们从版本 c 回退到了版本 b,今天我们又想要回到版本 c,此时就可以使用 reflog 命令来查找 c 版本的 commit_id,然后使用 reset 命令来进行版本回退

2.5用于版本回退

 git reset --hard HEAD^
 git reset --hard <commit_id>

# HEAD    表示当前版本,也就是最新的提交
# HEAD^   上一个版本
# HEAD^^  上上一个版本
# HEAD~100   往上100个版本

# 回退到 commit_id 对应的那个版本,commit_id 为版本号,只需要前几位就行

2.6 撤销修改命令

-丢弃工作区的修改
git restore <file>  (建议使用) (如: git restore readme.txt)
 git checkout -- <file>
# 命令中 -- 很重要,没有就变成 “切换到另一个分支” 的命令

####-丢弃暂存区的修改

# 第一步: 把暂存区的修改撤销掉(unstage),重新放回工作区
 git restore --staged <file>

# 第二步: 撤销工作区的修改
git restore <file>
  1. 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git restore <file>
  2. 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git restore --staged <file>,就回到了场景1,第二步按场景1操作。
  3. 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考 版本回退 一节,不过前提是没有推送到远程库。

2.7 分支

git branch       查看分支列表及当前分支
git branch dev   创建 dev 分支
git switch dev   切换到 dev 分支  (git checkout dev)
git switch -c dev   创建并切换到新的 dev 分支  (git checkout -b dev)
git switch -c dev origin/dev  创建远程 origin 的 dev 分支到本地并切换到该分支
git branch -d dev   删除 dev 分支
git branch -D dev   强制删除 dev 分支
git merge dev       合并 dev 分支到当前分支 (当有冲突的时候,需要先解决冲突)
git merge --no-ff -m "merge with no-ff" dev  合并 dev 分支到当前分支(禁用Fast forward 合并策略)

git pull  拉取远程分支最新的内容
git branch --set-upstream-to=origin/dev dev  指定本地 dev 分支与远程 origin/dev 分支的链接

# 为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去
# 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而 fast forward 合并就看不出来曾经做过合并

git log --graph  查看分支合并图
git log --graph --pretty=oneline --abbrev-commit

git stash  保存当前工作区和暂存区的修改状态,切换到其他分支修复 bug 等工作,然后在回来继续工作
git stash list  查看保存现场的列表
git stash pop   恢复的同时把 stash 内容也删除
git stash apply  恢复现场,stash内容并不删除
git stash drop   删除 stash 内容
git stash apply stash@{0}  多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash
# 通常在 dev 分支开发时,需要有紧急 bug 需要马上处理,保存现在修改的文件等,先修复 bug 后再回来继续工作的情况

git cherry-pick <commit> 复制一个特定的提交到当前分支(当前分支的内容需要先 commit,然后冲突的文件需要解决冲突,然后 commit)
git rebase  把本地未push的分叉提交历史整理成直线(使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比)

2.8 标签

# 切换到对应的分支 branch 上,查看或者操作对应的标签 tag 
git tag  查看所有的标签
git tag <tagname>  打标签(默认标签是打在最新提交的commit上) 如: git tag v1.0
git tag <tagname> <commit_id>  给对应的 commit_id 打标签
git tag -a <tagname> -m "标签说明信息" <commit_id> 创建带有说明的标签,用-a指定标签名,-m指定说明文字
git tag -d <tagname> 删除一个本地标签
git push origin :refs/tags/<tagname>可以删除一个远程标签
git show <tagname>  查看标签信息

git push origin <tagname>  推送一个本地标签到远程
git push origin --tags     一次性推送全部尚未推送到远程的本地标签

# 删除远程标签,需要先删除本地标签,然后在删除远程标签,如:删除标签 v0.9
git tag -d v0.9
git push origin :refs/tags/v0.9

参考资料

  1. Git使用笔记
  2. Git官网
  3. Git-开源协作社区
  4. Gitee-开源协作社区
  5. 廖雪峰Git教程
  6. 15分钟学会Git
  7. Git Book
  8. gitigore 文件常用配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值