工作区(写代码)---> git add 暂存区(临时存储) ---> git commit 本地库(历史版本)
在vim 编辑器中 : set nu 显示行号。 如果提交的时候 用的nano编辑器,可以在config文件中,在core中后面添加 editor=vim 即可使用vim编辑器了。
**git log **查看历史版本
git merge 之后,有冲突,我又不想合了;
没add之前,可以执行 git merge --abort
单独合并某条提交记录 可以使用 git cherry-pick
//切换到新的分支
git checkout --orphan latest_branch
//缓存所有文件(除了.gitignore中声名排除的)
git add -A
//提交跟踪过的文件(Commit the changes)
git commit -am "commit message"
//删除master分支(Delete the branch)
git branch -D master
//重命名当前分支为master
git branch -m master
//提交到远程master分支 (Finally, force update your repository)
git push -f origin master
Working Tree 当前的工作区域
Index/Stage 暂存区域,和git stash命令暂存的地方不一样。使用git add xx,就可以将xx添加近Stage里面
Repository 提交的历史,即使用git commit提交后的结果
git reset --mixed commit_id
切换指定的版本,暂存区的数据 也切换了,需要重新 add
保留工作目录,并且清空暂存区
git reset --soft commit_id
保留工作目录和暂存区中的内容,并把重置 HEAD所带来的新的差异放进暂存区。
git reset --hard commit_id
会在重置 HEAD 和branch的同时,重置stage区和工作目录里的内容。当你在 reset 后面加了 --hard 参数时,你的stage区和工作目录里的内容会被完全重置为和HEAD的新位置相同的内容。换句话说,就是你的没有commit的修改会被全部擦掉。
以commit_id版本为准,工作目录的文件 也会重置。
git rebase --abort
git checout --orphan test
假如你的某个分支上,积累了无数次的提交,你也懒得去打理,打印出的log也让你无力吐槽,那么这个命令将是你的神器,它会基于当前所在分支新建一个赤裸裸的分支,没有任何的提交历史,但是当前分支的内容一一俱全。新建的分支,严格意义上说,还不是一个分支,因为HEAD指向的引用中没有commit值,只有在进行一次提交后,它才算得上真正的分支。还等什么呢?赶紧试试!
git branch -D 分支名字
删除一个分支
git branch -m 新的分支名字
修改当前分支的名字
git rm -r --cached 文件名
删除 暂存区(index / stage)的文件
问题:
此时 我们可以使用 git cherry-pick
命令
两个分支的代码几乎是一个,部分 不同,也是说 一个是生产环境、一个是开发环境。
这里我们需要将 开发环境中的 bug修复 的代码 合并到 生产环境分支上。
由于内容部分差异,可能会冲突、覆盖,我们可以 只开发环境上 提交记录 同步到 生产环境分支上。
参考来源:http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
git cherry-pick 分支名
默认将 指定分支的 最新一条提交记录 同步 到当前所在分支,并生成新的记录。
git cherry-pick <commitHash>
将 指定的提交 应用于 当前分支,这会在当前 分支产生一个新的提交,当然它们的哈希值会不一样。
git cherry-pick <HashA> <HashB>
将A和B两个提交应用到当前分支。这会在当前分支生成两个对应到新提交。
git cherry-pick A..B
上面到命令可以转移 从A到B到的所有提交。它们必须按照正确的顺序放置:提交A必须 早于 提交B,否则命令将失败,但不会报错。
注意:上面的命令,提交A 将不会包含在Cherry pick中。如果要包含提交A,可以使用下面的语法:
git cherry-pick A^..B
stash 可以跨分支使用!!!
需求:在当前分支修改了代码,但是不想add,但想要切换分支。
可以向将当前分支的状态保存起来
在 执行 add 之前,才能执行git stash
保存当前状态:git stash save "备注"
,也直接使用 git stash
查看所有的stash:git stash list
应用某个存储:git stash apply
(可恢复多次,stash仍然存在)
应用某个存储:git stash pop stash@{0}
(只能恢复一次,恢复后 对应stash消失)
使用这个命令恢复时,该条stash 也随之被移除。
删除指定stash:git stash drop stash@{0}
清空所有的stash:git stash clear
可参考:https://www.jianshu.com/p/1e65e938f93c
使用场景:比如我当前在master分支已经把新需求的代码已经写好了,还没有 添加到暂存区,但是开发规范规定 不能在master分支上进行开发,需要我们另外创建分支。我们可以将当前工作区的代码 保存到stash上,使用 git stash save "备注信息", 然后我们创建分支,切换到指定分支,然后恢复一下就行了。
git stash pop stash@{0} 【0 是因为我当前只有一个stash,可以查看一下你的stash
git stash list
】
git tag 版本号
git push origin 版本号
查看所有tag
git tag