git进阶

 
工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。
暂存区:已经 git add xxx 进去,且未 git commit xxx 的。
本地分支:已经git commit -m xxx 提交到本地分支的。

git cherry-pick

git cherry-pick <commitid> 将指定的提交(commitid)应用于当前位置(HEAD
git cherry-pick <分支名> 将其他分支的最近一次提交,转移到当前分支

转移到另一个代码库

Cherry pick 也支持转移另一个代码库的提交,方法是先将该库加为远程仓库。
$ git remote add target git://gitUrl
上面命令添加了一个远程仓库target。然后,将远程代码抓取到本地。
$ git fetch target
上面命令将远程代码仓库抓取到本地。接着,检查一下要从远程仓库转移的提交,获取它的哈希值。
$ git log target/master
最后,使用git cherry-pick命令转移提交。
$ git cherry-pick <commitHash>

创建新分支

  • git checkout -b <your-branch-name> 创建一个新的分支同时切换到新分支
  • git branch <branch-name>
  • git checkout <branch-name>

合并分支

  • git merge
  • git rebase,Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。例如:当前在dev1,git rebase dev2,将dev2的一系列提交记录合到dev1上,dev2有多少个commit记录,就会合多少次

Head

  • head 指向提交记录(commit 的哈希字串),也可以指向分支
  • 分支永远指向 分支上的最新提交

提交记录

  • git checkout <branch-name>^,使用 ^ 向上移动 1 个提交记录
  • git checkout <branch-name>~2,使用 ~<num> 向上移动多个提交记录,如 ~3
  • git checkout HEAD^,当前所在分支或记录的上一个提交记录
  • git branch -f 分支名 commitid~3 git branch -f 分支名 commitID;
作用是将其他分支上的本地代码硬重置到某个commitId下,不能重置本分支,如:
git branch -f master devID1
那么master上的代码就会和dev一样,并且历史记录也会一样,只是dev分支上的代码可能会比master上的新一点,因为是重置的commitId

撤销变更

  • git reset commitid 通过把分支记录回退几个提交记录来实现撤销改动。只是本地代码,不是远端代码;仅改变暂存区,并不改变工作区【慎用,会导致中间的提交记录丢失】
是将之前的提交记录全部抹去,将 HEAD 指向自己重置的提交记录,对应的提交记录都不复存在
$ git reset HEAD^            # 回退所有内容到上一个版本  
$ git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
$ git  reset  052e           # 回退到指定版本
  • git revert <commit_id> 引入一个新的commit,这个新的commit代码内容 和需要回退到的commitid相同,revert 之后就可以把你的更改推送到远程仓库。
操作是将选择的某一次提交记录 重做,若之后又有提交,提交记录还存在,只是将指定提交的代码给清除掉
  • git diff
git diff:是查看 工作区(未git add) 与 暂存区(已git add,未commit) 的差别的。
git diff --cached:是查看 暂存区 (已git add,未commit) 与 本地仓库(已commit) 的差别的。
git status 查看工作区相较于暂存区修改的文件
  • git checkout . 撤销工作区的修改
  • git stash 保存暂存区和工作区的修改,git stash save 'message...'可以添加注释,使用git stash pop恢复修改
git stash 隐藏当前的工作现场, 此时, git status的结果是 clean
git stash list 查看所有隐藏, 每一行的冒号前面的字符串就是标识此隐藏的id
git stash apply 重新显示标识为 id 的隐藏
git stash drop git apply恢复隐藏后, 需要手动删除 list 列表中的记录
git stash pop 恢复最新的进度到工作区
git stash pop stash@[stash_id] 恢复指定的进度到工作区
 
posted @ 2022-02-07 10:44  huiyii  阅读(25)  评论(0编辑  收藏  举报