Git 命令的使用

注:参考文献 https://www.git-scm.com/book/zh/v2

git配置

  • 查看所有的配置以及它们所在的文件

      git config --list --show-origin
    
  • 用户信息

    安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改

    当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置

      $ git config --global user.name "name"
      $ git config --global user.email name@example.com
    

克隆远程仓库项目

  • git clone 仓库地址
  • 提交本地修改

      // 将本地修改添加至暂存区
      git add .
    
      // 将所有通过 git add 暂存的文件内容在数据库中创建一个持久的快照
      // 然后将当前分支上的分支指针移到其之上
      git commit -m '描述'
    
      // 从远程仓库抓取内容,并与本地内容进行合并
      git pull
    
      // 将本地修改推送至远程仓库
      git push
    

新建分支

  • 第一步:创建分支

      git branch branchname
    
  • 第二步:切换分支

      git checkout branchname
    
  • 简写:

      git checkout -b branchname
    
  • 在新分支上提交代码

      git add .
      git commit -m '切换分支'
      git pull origin branchname
      git push origin branchname
    
  • 设置 git push、pull 默认的提交和获取分支,这样就方便直接使用 git pull、push 进行操作

      git branch --set-upstream-to=origin/branchname
    
  • 获取远程仓库的新分支

      git fetch
      git checkout branchname
    

合并分支

  • 第一步:将你本地的分支切换至想要合并的结果分支(如 master)
  • 第二步:合并分支

      git merge branchname
    
    • 当前分支合并其他分支上的更新,和上述操作一致

      git checkout 工作分支
      
      // 合并其他分支上的更新
      git merge master
      
  • 第三步:分支合并后若想删除分支

      git branch -d branchname
    
  • 第四步:删除远程仓库分支

      git push origin -d branchname
    
  • 注意:合并分支时有冲突如下

      $ git merge branchname
      Auto-merging index.html
      CONFLICT (content): Merge conflict in index.html
      Automatic merge failed; fix conflicts and then commit the result.
    
    • 需要手动解决冲突之后继续合并
    • 合并冲突时的任意时刻使用 git status 来查看那些因包含合并冲突而处于未合并状态的文件
    • 使用图形化工具解决冲突 git mergetool
    • 冲突解决后 使用 git commit 来完成合并并提交

git 版本回退

  • 第一步

       `git log` 查看当前分支的提交记录 找到需要回退的版本id(commitID)
    
  • 第二步

       `git reset --hard HEAD` HEAD 需要回退的版本commitID
    
  • 第三步

       `git push origin branch --force` 强推至回退分支
    

    git 常用命令

  • git fetch 从远程获取其他用户 push 上来的新分支
  • git remote -v 查看远程 git 库地址
  • git stash 将会把当前目录和 index 中的所有改动(但不包括未 track 的文件)压入一个栈,然后留给你一个 clean 的工作状态,即处于上一次最新提交处.
  • git stash apply 取出 stash 中的上一个项目 (stash@{0}),并且应用于当前的工作目录.也可以指定别的项目,比如 git stash apply stash@{1}.
  • git stash drop 删除上一个,也可指定参数删除指定的一个项目.
  • git branch 查看 git 分支
  • git branch -a 查看远程所有分支

git 本地已经修改,但需要切换git的push分支

  • add 但不 commit,可以 stash,然后 checkout 回来之后 stash apply,在 commit,提交到当前分支
  • add 但不 commit,也不 stash,直接 checkout,然后再 commit 的话,记录就在切换分支下面。

github Fork

参考 掘金夏老师

  • 第一步:Fork 代码
  • 第二步:git clone github地址
  • 第三步:安装依赖

      # 设置国内镜像
      yarn config set registry https://registry.npm.taobao.org
      # --ignore-scripts  用于忽略chrome浏览器的下载
      yarn install --ignore-scripts
    
  • 第四步:开发前同步官方最新代码
  • 第五步:添加新远程分支, 只需要做一次 git remote add upstream git地址

    • 源设置错误
      • git remote remove <name> 删除后重新添加
    • 拉去合并远程分支到 master 分支

        # 抓取源仓库修改 master分支
         git fetch upstream master
        # 切换分支
        git checkout master
        # 合并远程分支
        git merge upstream/master
      
  • 第六步:开发
    • 从 master 分支创建一个修改分支
    • jest 测试
    • 提交 PR

忽略文件 .gitignore

有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件

  • 格式规范

    • 所有空行或者以 # 开头的行都会被 Git 忽略 也就是注释。
    • 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
    • 匹配模式可以以(/)开头防止递归。
    • 匹配模式可以以(/)结尾指定目录。
    • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
  • 示例

      # 忽略所有的 .a 文件
      *.a
    
      # 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
      !lib.a
    
      # 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
      /TODO
    
      # 忽略任何目录下名为 build 的文件夹
      build/
    
      # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
      doc/*.txt
    
      # 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
      doc/**/*.pdf
    
  • GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表, 可以在 https://github.com/github/gitignore 找到它
  • 注意:若在创建.gitignore 文件之前提交过代码,已将文件上传

    新建的文件在 git 中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行 push,这样就不会出现忽略的文件了。git清除本地缓存命令如下:

      git rm -r --cached .
      git add .
      git commit -m 'update .gitignore'
    
  • 常用配置

      # Logs
      logs
      *.log
      npm-debug.log*
      yarn-debug.log*
      yarn-error.log*
      pnpm-debug.log*
      lerna-debug.log*
    
      node_modules
      dist
      dist-ssr
      *.local
    
      # Editor directories and files
      .vscode/*
      !.vscode/extensions.json
      .idea
      .DS_Store
      *.suo
      *.ntvs*
      *.njsproj
      *.sln
      *.sw?
      .eslintcache
    

移除文件

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

  • 如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分(也就是 未暂存清单)
  • 还需要再运行 git rm 记录此次移除文件的操作,这样下一次提交时,该文件就不再纳入版本管理。

撤销操作

  • 若在 commit 之后想撤销操作

      // HEAD^的意思是上一个版本,也可以写成HEAD~1
      // 如果进行了2次commit,想都撤回,可以使用HEAD~2
    
      git reset --soft HEAD^
    
  • 如果 commit 注释写错了,只是想改一下注释

      git commit --amend
    
powered by Gitbook该文件修订时间: 2023-08-21 16:32:31

results matching ""

    No results matching ""