提交历史查看
最简单的查看就是git log
。
在一行进行显示就是:git log --pretty=oneline
,oneline也可以改成short,full,fuller。但是我用的多的就直接git log --oneline
,只显示前面简短的hash值。下面这个可能更好一些:
$ git log --pretty=format:"%h %s" --graph
,可以看到分支走向。牛逼的是这个format,可以定制要显示的格式。
合并commit
这个居然没早发现,前几天提交一个东西的时候就少提交了一个东西,不知道该怎么搞了,就直接又提交了一次,沙雕了。
可以直接用下面的git commit --amend
可以将本次提交和最后一次提交合并到一起,可以加-m "xxx"
,加了commit就变成这次提交的信息,不加还是上次的。
$ git commit -m 'last commit'
$ git add forgotten_file
$ git commit --amend
修改commit信息
有时候提交commit,手残单词写错了或者字打错了想修改一下。网上找到了一个方法。链接
因为只是修改了一下commit 的描述信息,所以最后强制push也没有问题。我一开始以为这样不是很好,就准备合并之类的操作,但是它提示没有必要,然后还出了一些其他的问题,没搞懂,干脆直接-f
了。
取消已经暂存的文件
git reset HEAD <file>...
分支
分支创建
#直接创建并切换
git checkout -b branch_name
#或者先创建,在切换对应分支
git branch branch_name
git checkout branch_name
分支合并
分支的功能完成之后,需要合并到master。先回到mater,保持master分支状态的干净,不然合并不了,然后执行下面指令。合并后的分支就没有必要了,可以删除。分支合并的时候可能会出现冲突,目前还没有出现,等出现的时候再看怎么处理。
git checkout master
git merge branch_name
#删除分支
git branch -d branch_name
合并游离分支
前几天切换到windows下写项目(之前一直在Linux下,所以服务器的记录比windows多了好几个记录),然后从服务器抓取之后,就直接开始下一步的代码编写。提交一个commit之后准备push origin master,发现出问题了,HEAD detached from xxxx
。这个xxxx就是我windows下的master分支的位置,如下:
查了一下解决方法,就是fetch服务器的记录的时候应该先建一个分支,抓取的记录就到这个分支上了,然后只要合并这个分支到master上。但是我已经fetch了,所以直接在这个位置建一个分支就可以了。
这个时候HEAD还是游离的,temp已经指到最后的一个提交。下一步就要切换到这个temp上,让HEAD不在游离。HEAD->temp
再切换回来master上,并合并这个temp到master上。最后这个temp就可以删除了。
有个帖子讲了为什么会出现这个问题,很清楚。链接
分支管理
- 分支查看
分支前面带有*
号,为当前所在分支。
git branch
# 或者加上-v参数,可以看到每个分支最后一次提交的信息。
git branch -v
远程分支
抓取
这里的抓取只会把远程的数据更新到本地,不会合并,需要自己来合并。
$ git fetch [remote-name]
推送
$ git push origin master