记录工作中,最常用的一些 git 命令跟操作
创建分支跟合并分支
从本地创建分支
$ git checkout -b feature/dev
推送分支到远程
$ git push origin feature/dev
查看分支情况,远程本地都已经有分支了
$ git branch -a
* feature/dev
master
remotes/origin/HEAD -> origin/master
remotes/origin/feature/dev
remotes/origin/master
从远程创建分支
$ git checkout -b feature/dev origin/feature/dev
查看分支情况,远程本地都有分支了
$ git branch -a
* feature/dev
master
remotes/origin/HEAD -> origin/master
remotes/origin/feature/dev
remotes/origin/master
合并分支
- 将
feature/dev
合并到master
分支
$ git merge feature/dev
- 如果有冲突,则会提示提示如下,表示我们需要解决冲突,才能继续合并
$ git merge feature/dev
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
- 然后,我们编辑文件,进行冲突的解决,冲突内容大概如下:
<<<<<<< HEAD
master
=======
Test merge
>>>>>>> feature/dev
<<<<<<< HEAD
至>>>>>>> feature/dev
部分,表示冲突的内容<<<<<<< HEAD
至=======
部分,表示是HEAD
节点,也就是master
的内容=======
至>>>>>>> feature/dev
部分,表示是feature/dev
分支的内容- 我们手动解决冲突后,需要重新提交
$ git add .
$ git commit -m"解决冲突"
$ git push
删除分支
删除本地分支
$ git branch -d feature/dev // 删除本地分支
$ git branch -D feature/dev // 强制删除本地分支
删除远程分支
$ git push origin :feature/dev
分支改名
$ git branch -M [old branch name] [new branch name]
版本管理
版本回退
- 版本回退,有2种方式,我们只介绍下常用的
- 通过
commit
的hash
值来进行回退 - 通过
HEAD~2
,来回退两个commit
- 通过
$ git reset --hard [commit hash] // 回退到某个commit
$ git reset --hard HEAD~2 // 回退2个commit
假如,我们在只是commit
了,并没有push
到远程,而且我们还回退了版本,我们可以通过git reflog
查看git
执行的命令,来获取commit
的hash
值又返回到最新的commit
节点
$ git reflog
$ git reset --hard [commit hash]
提交信息合并
我们本地提交的信息有太多无用的信息,我们需要合并一下提交信息
$ git reset --soft HEAD~2
上面命令,只会把commit
信息回退,并不会将源码回退,这时候我们可以重新提交commit
信息
$ git commit -am"new commit message"
我们就可以看到,前面的2个commit
信息不见了,只有新的提交信息
改动文件,临时提交
工作中,可能会遇见,正在开发某个需求,文件有改动,这时候,突然来了某个紧急的bug,需要去解决,这时候,我们还没改动完,想保留现场,然后切分支改完bug,在切回来,这时候就可以用到
git stash
命令了
先执行以下命令,将变化临时保存起来,提交到git
堆栈,并且切换分支,更改代码
$ git stash
修复完东西后,切回分支,在执行以下命令,将改动还原回来
$ git stash pop
文件管理
文件移除 git 管理
$ git rm --cached [file]
$ git commit -m""
$ git push
然后,将文件名称或者后缀写入.gitignore
就不会被git
管理了
文件夹移除 git 管理
$ git rm -r --cached [folder]
$ git commit -m""
$ git push
然后,将文件名称或者后缀写入.gitignore
就不会被git
管理了