一些git基本命令的使用
恢复指定文件
-
查询文件记录
git log 2020-09-10-SSL证书申请.md
输出记录的commit信息,其中有如
b37b20fd9b8c5c60fd82480861870c6df13eccfa
,可用于恢复记录。 - 恢复到某一次commit
git checkout b37b20fd9b8c5c60fd82480861870c6df13eccfa 2020-09-10-SSL证书申请.md
选择要恢复的某次commit,使用该次commit的hash来恢复文件,这是就可已看到文件已经被恢复了。
- 最后不要忘记commit并提交到远程库
Git-config
git config [<options>]
可以查看或者修改git的配置文件信息,作用范围有系统(system)、全局(global)、仓库(local)…等
下面是仓库的配置文件内容,文件在./.git/.config
, 使用git config --local -e
命令可以在文本编辑器打开
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/test/test.git
[branch "master"]
remote = origin
merge = refs/heads/master
- 指定配置文件位置,默认情况下从系统(system)、全局(global)和存储库本地(local)顺序从配置文件读取值
--global
: 使用全局配置文件--system
: 使用系统配置文件--local
: 使用仓库配置文件
- 操作
- 查询
操作 说明 参数 –get 获取指定字段的值 name [value-regex]
–get-all 获取指定字段的所有值 name [value-regex]
–get-regexp 获取正则表达式所匹配字段的所有值 name-regex
-e, –edit 使用默认编辑器打开配置文件 - -l, –list 列出所有配置信息 - 示例:
git config --local -l # 列出当前仓库配置信息 ## get只返回查询到的第一条信息,get-all返回所有匹配信息 git config --get-all user.name # 会返回local与system所有user.name值 git config --get user.name # 只返回local中user.name值 git config --global --get user.name a* # 返回global中user.name值为a开头的结果 git config --global --get-regexp user* # 返回global中user开头的字段及其值
- 修改
操作 说明 参数 –add 添加指定字段的值 name value
–unset 删除指定字段 name [value-regex]
–unset-all 删除所有指定字段 name [value-regex]
–rename-section 重命名指定字段 old-name new-name
–remove-section 移除指定字段 name
示例:
git config --global user.name "Your Name" # 设置全局用户名,如果已存在则修改 git config --global --add user.name "Your Name" # 添加全局用户名 git config --local --unset user.name na* # 删除以na开头的用户名 git config --local --remove-section user # 删除用户信息,section是指`.`前面的字段
上面的
value-regex
参数是要匹配字段值的正则表达式
Git的使用
创建、克隆仓库
git init [<directory>]
会将当前目录(或directory指定的目录)初始化为git仓库;
git clone <repo> [<dir>]
克隆指定仓库到当前目录(或dir指定的目录),如:git clone https://github.com/test/test.git test1
将GitHub中的仓库克隆到test1文件夹中。
Git仓库操作
文件修改后,要将改动提交到repo通常需要使用到git add
, git commit
, git push
三个命令,下面介绍一下这三个命令及其他常用命令。
-
git add
添加git add .
: 提交所有变化(git版本1.x中,不包括删除文件)git add -u
: 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)git add -A
: 提交所有变化 -
git commit -m "提交信息"
提交 -
git push
git push <远程仓库名> <本地分支名>:<远程分支名>
将本地分支名
推送到远程仓库名
的远程分支名
。# 当前分支推送到名为origin对应分支,如只一个分支origin可省略 git push origin # 删除指定的远程分支,同 git push origin --delete master git push origin :master # 如存在多个远程仓库,则可以使用-u选项指定一个默认仓库,之后可使用git push推送到默认仓库。 git push -u origin <本地分支名> # -u 同 --set-upstream
如果推送失败,先用
git pull
抓取远程的新提交;git pull
的作用是取回远程主机某个分支的更新,再与本地的指定分支合并。pull的使用与push基本相同,但是pull是远程在前本地在后与push相反:git pull origin <远程分支名>:<本地分支名>
-
git remote
查看远程库信息:git remote
, 添加-v
参数显示更详细信息。 添加远程库git remote add origin <url>
删除远程库git remote delete origin
-
git status
: 查看仓库状态 -
git diff
: 查看文件修改内容 -
git log
: 查看工作日志, 可选参数--prettry=oneline
使显示简洁,--graph
可以看到分支合并图。 -
git reset
: 版本回退,参数:
--mixed
:此为默认方式,不带任何参数的git reset
,即使这种方式,它回退到某个版本,只保留源码,回退commit和index信息。
--soft
:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可。
--hard
:彻底回退到某个版本,本地的源码也会变为上一个版本的内容。 示例:git reset --hard HEAD^ # 回退上一个版本; # HEAD:指向当前版本 # HEAD^:前一个版本。 # HEAD^^:前两个版本。 # HEAD~n:前上n个版本。 git reset --hard 1094a # 回退到`commit id`前几位为`1094a`的版本。
-
丢弃工作区的修改:
git checkout -- <file>...
- 丢弃暂存区的修改:先回退,在丢弃:
git reset HEAD <file> git checkout -- <file>
git branch
分支管理git branch # 查看分支: git branch <name> # 创建分支 git checkout <name> # 切换分支 git checkout -b <name> # 创建+切换分支 git branch -d <name> # 删除分支
合并某分支到当前分支:
git merge <name>
,--no-ff
强制禁用Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。-
git tag
用于创建,列出,删除或验证使用GPG签名的标签对象git tag # 可以查看所有标签。 # `用于新建一个标签,默认为`HEAD`,也可以指定一个`commit id`; git tag <tagname> # -a -m 可以指定标签信息 git tag -a <tagname> -m "blablabla..." # 删除一个本地标签 git tag -d <tagname> git push origin <tagname> # 推送一个本地标签; git push origin --tags # 推送全部未推送过的本地标签; git push origin :refs/tags/<tagname> # 删除一个远程标签
- GitHub密钥生成与设置
第一步,生成SSH key,ssh-keygen -t rsa -C "youremail@example.com"
,完成后在用户主目录找到.ssh
目录里面有[私钥]id_rsa
和[公钥]id_rsa.pub
,这两个文件就是SSH Key的秘钥对。
第二步,登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容
参考:
Git教程
git add -A 和 git add . 的区别 - PajamaCat - 博客园
git操作之pull拉取远程指定分支以及push推送到远程指定分支_开发工具_醉逍遥neo的博客-CSDN博客