(一)分支
-
git branch 分支名
创建分支 -
git checkout 分支名
切换分支
【注】:切换到一个已存在的分支 -
git checkout -b 新分支名
创建并切换分支:
【注】:创建一个新的分支,并切换到新的分支上
it branch -d 分支名
删除本地分支:git branch -D 分支名
强制删除本地分支:git push origin --delete 远程分支名
删除远程分支:
git branch
列出所有本地分支git branch -r
列出所有远程分支git branch -a
列出所有分支(本地+远程):git checkout -b 新本地分支名 origin/远程分支名
取远程分支并分化一个新分支:
git branch -v
查看各个分支最后一次提交git branch –merged
查看哪些分支合并入当前分支git branch –no-merged
查看哪些分支未合并入当前分支
(二)合并分支commit
-
git rebase master
合并master分支的commit到当前分支上
ref:https://blog.csdn.net/qq_38737586/article/details/117198953 -
git merge master
(三)撤销commit
git reset HEAD^
commit之后,如果想撤销最近一次提交(即退回到上一次版本)并保留commit之前的修改
在idea 中,对应的操作为:
【注意】:回退到上一个版本之后,保留commit之前的修改。
(四)更新代码
-
git fetch origin
更新远程库到本地 -
git push origin 远程分支名
推送分支提交到远端 -
若本地存在某个分支,但是远程不存在(即本地与远程分支未关连),则执行如上命令。
(五)比较「暂存区」与「工作区」之间的差异
git diff
当我们直接修改了工作区中的文件之后,在添加到暂存区之前,想要看看修改了那些内容,保证修改正确性。merge
合并出现冲突时,此时有冲突的文件 的状态变为冲突状态,此时工作区(文件有冲突)和暂存区(暂存区为空)就是有区别的。
这时候运行 git diff 即可,将会显示暂存区与工作区文件的差异,查看工作目录修改了什么代码。
(六)标签操作
如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。
1、创建标签
git tag -a 标签名
如:git tag -a "v1.0" //默认是给当前最新一次的commit创建标签
如果我们忘了给某个提交打标签,我们可以很久之前的commit 打标签。例如:
git tag -a "标签名" commit版本号
如:git tag -a v0.9 85fc7e7
【注】:
-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 我推荐一直创建带注解的标签。
2、查看所有标签
git tag
3、删除标签
git tag -d v1.1
4、查看某个版本标签的详细信息
git show v1.0
5、基于某个tag 创建新分支
git checkout -b newbranchName tagName
如果要在某个tag的基础上做修改,直接切换到tag,修改后是无法提交的。因为tag是某一个具体的commit id,所以这时HEAD指向了一个具体的commit id,而没有处在一个分支中。
解决方法:
先根据这个tag新建一个分支,然后在这个新分支上修改后,提交代码,然后正常提交。
6、切换到某一个标签上
git checkout tag_name
当我们使用上面的命令切换到某个标签上时,,这时候 git 可能会提示你当前处于一个“detached HEAD" 状态。(detached 分离的),因为 tag 相当于是一个快照,是不能更改它的代码的。(因为这个标签对应的是一次Commit,而不是一个分支),但是可以基于这个标签创建新的分支,然后再进行开发。
(八)相关问题
- git切换分支报错:https://www.cnblogs.com/plummoon/p/6000093.html
error: pathspec ‘develop’ did not match any file(s) known to git.