Git使用

一些git基本命令的使用

一些git基本命令的使用

恢复指定文件

  1. 查询文件记录

    git log 2020-09-10-SSL证书申请.md
    

    输出记录的commit信息,其中有如b37b20fd9b8c5c60fd82480861870c6df13eccfa,可用于恢复记录。

  2. 恢复到某一次commit
       git checkout b37b20fd9b8c5c60fd82480861870c6df13eccfa 2020-09-10-SSL证书申请.md
    

    选择要恢复的某次commit,使用该次commit的hash来恢复文件,这是就可已看到文件已经被恢复了。

  3. 最后不要忘记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
  1. 指定配置文件位置,默认情况下从系统(system)、全局(global)和存储库本地(local)顺序从配置文件读取值
    • --global: 使用全局配置文件
    • --system: 使用系统配置文件
    • --local: 使用仓库配置文件
  2. 操作
    • 查询
    操作 说明 参数
    –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三个命令,下面介绍一下这三个命令及其他常用命令。

  1. git add
    添加git add .: 提交所有变化(git版本1.x中,不包括删除文件) git add -u: 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) git add -A: 提交所有变化

  2. git commit -m "提交信息"提交

  3. 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 <远程分支名>:<本地分支名>

  4. git remote
    查看远程库信息:git remote, 添加-v参数显示更详细信息。 添加远程库git remote add origin <url> 删除远程库git remote delete origin

  5. git status: 查看仓库状态

  6. git diff: 查看文件修改内容

  7. git log: 查看工作日志, 可选参数--prettry=oneline使显示简洁, --graph可以看到分支合并图。

  8. 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`的版本。
    
  9. 丢弃工作区的修改: git checkout -- <file>...

  10. 丢弃暂存区的修改:先回退,在丢弃:
    git reset HEAD <file> 
    git checkout -- <file>
    
  11. 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,这样,从分支历史上就可以看出分支信息。

  12. 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> # 删除一个远程标签
    
  13. 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博客