git

  • 初始化: git init

  • 克隆: git clone url

  • 查看文件状态: git status [filename]

  • 查看文件更改的地方: git diff filename

  • 添加所有文件到暂存区git add .

  • 提交到本地仓库git commit -m "message", m参数表示附带提交信息

  • 主目录下的.gitignore文件有如下规则:

    • 1.忽略文件中的空行或以井号(#)开始的行将会被忽略。
    • 2.可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围大括号([string1,string2,..))代表可选的字符串等。
    • 3.如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
    • 4.如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
    • 5.如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)

    一个流程

    • 初始化一个目录
    • 修改目录中的文件
    • 此时git status可以看到哪个文件做了修改
    • git add .添加到暂存区
    • git status可以看到修改的文件待提交
    • 提交后就会记录
  • image-20220216151030947

    需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改

    回退

    • HEAD指针指向当前版本

    • HEAD^指向上一版本, HEAD^^上上版本, HEAD~100上100个版本

    • git reflog可以看到每个版本的commit id

      image-20220216143047792

    • 回退上一版本: git reset --hard HEAD^

    • 回退指定版本: git reset --hard "commit id"

撤销修改

  • 未添加到暂存区

    git checkout -- readme.txt用版本库里的版本替换工作区的版本

  • 已添加到暂存区但未提交

    git reset HEAD readme.txt回退到当前版本库的最新版本

    git checkout -- readme.txt

push远程仓库

  • git remote add origin https://gitee.com/zaqai/learn.git

    将远程仓库和本地关联, origin可以理解为远程仓库的别名?

  • git push -u origin master

    将本地上传到远程

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

  • git remote rm origin

    删除远程库

分支管理

  • 创建名为dev的分支 git branch dev
  • 切换到dev git switch dev
  • git switch -c dev创建并切换
  • git branch命令会列出所有分支
  • git merge dev合并分支(在master中)
  • git branch -d dev删除分支