git的一些学习记录

  1. git远程与本地的操作
    1. git重新设置远程仓库地址

      bash

      git remote rm origin
      git remote add origin 你的新远程仓库地址
    2. git删除远程分支

      bash

      git push origin --delete Chapater6  
    3. git 建立本地分支与远程分支的关联

      bash

      git branch –set-upstream 本地新建分支名 origin/远程分支名
    4. git重命名分支

      bash

      git branch -m old new
    5. git拉取远程分支
  2. git放弃本地修改
    • 未使用git add缓存代码

      bash

      git checkout -- filepathname ##  放弃指定文件的缓存
      git checkout .               ##  放弃所有的文件修改
    • 已经使用git add缓存代码

      bash

       git reset HEAD filepathname ## 放弃指定文件的缓存
       git reset HEAD .            ##  放弃所有的文件修改
    • 已经用 git commit提交代码

      bash

      git reset --hard HEAD^      ##  回到上一次commit的状态
  3. git使用远程仓库代码覆盖本地代码

    bash

     git fetch --all
     git reset --hard origin/master
     git pull
    第一个是:拉取所有更新,不同步; 第二个是:本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件); 第三个是:再更新一次(其实也可以不用,第二步命令做过了其实)

git cherry-pick可以将一个或多个已经存在的提交应用到其他分支。这个命令会创建一个新的提交,其效果等同于被cherry-pick的提交。 有以下三个使用场景:

  1. 将bug修复应用到其他分支:在开发分支上修复了一个bug,并创建了一个包含修复的提交。然后需要将修复应用到生产分支,但是不想应用开发分支上的其他提交。
  2. 从一个废弃的分支获取有用的提交:将废弃分支上的有用提交应用到其他分支。
  3. 撤消某次提交:使用git cherry-pick配合-n参数来撤消某次提交。

以bug修复到其他分支为例子。现在有master分支和dev分支。在dev分支上修复了一个bug,哈希值是abc123。想将这个bug修复应用到master分支,但是不想将dev分支上的其他提交合并到master分支中。

  1. 首先确保工作目录是干净的,可以用git status检查工作目录状态。
  2. 切换到master分支

bash

git checkout master
  1. 使用git cherry-pickabc123应用到master分支。

bash

git cherry-pick abc123
  1. 如果没有冲突,abc123提交被master分支。如果有冲突,git会停止cherry-pick并高速哪些文件有冲突,手动解决冲突后继续进行cherry-pick操作获取取消操作。

bash

git cherry-pick --continue
##  或者取消
git cherry-pick --abort