git 部分基础命令
-
删除本地分支:git branch -d 分支名(remotes/origin/分支名)
-
强制删本地:git branch -D 分支名
-
删除远程分支:git push origin --delete 分支名(remotes/origin/分支名)
-
查看全部分支:git branch -a
-
查看本地分支:git branch
-
查看单单远程分支:git branch -r
-
同步远程的分支:git fetch /git pull
-
拉取远程分支并在本地创建本地分支并切换到这个分支上:git checkout -b 本地分支名x origin/远程分支名x
-
创建本地分支并切换到该分支上:git checkout -b 新分支的名字
-
切换一个分支上:git checkout 新分支的名字
-
创建一个新的分支,但是并不切换到这个分支上:git branch 新分支名
-
将一个某一个分支上的指定的commit 提交合并到分支上
比如把master分支上一个commit的代码合并到dev上,git log 获取commit_id值
从master分支上切到dev上
gco dev
git cherry-pick commit_id
如果有冲突可以解决冲突,然后git push 向上提交
如果要用的是多个commit_id 的提交那么用空格隔开
git commit
- 写完代码,我们一般这样:
git add //添加文件
git commit -m " " //执行commit
执行commit 想撤销怎么办呢?如下:
git reset --soft HEAD^
特别注意:
这样就成功的撤销了你的commit,但是仅仅的撤销了你的commit的操作,您的修改的代码任然会保留
- 参数的说明:
–maxed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意:完成这个操作后,就恢复到了上一次的commit状态。 - 补充一下:
顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了
git add
- 一般我们在git add 发现有个文件不应该加进入,比如tar,jar文件。。。
git status
查看一下 add的文件
git reset HEAD
如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.java
就是对某个文件进行撤销了 - 当然有人说还有第二种办法,如下:
git rm --cache 文件 - 两者之间的区别:(自己浅显的理解)
git rm 是执行了删除的动作,是在add这个转态下更新了转态
git reset head 文件名 是撤销了你的对于这个文件(commit)的操作
git reset 和 git revert 之间的区别:
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit
看似达到的效果是一样的,其实完全不同.
-
第一:
上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会. -
第二:
如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里. -
第三:
reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.