git知识补充
1 | //从 Git 仓库的索引(暂存区)中移除一个文件,但不删除工作目录中的文件。 |
修改提交的描述
1 | >git log |
.gitconfig文件中直接添加(git全局配置)
1 | [alias] |
系统别名定义,git全局命令,文件.bash_profile
1 | alias gs="git status" |
git branch ask //创建分支ask
//删除分支ask,内容若有修改提交,切换master删除ask分支,会提示未合并master,不能删除
git branch -d ask
git branch -D ask //强制删除分支
git checkout -b ask //创建并切换到ask
git branch --merged(已合并分支) //检查master分支的合并情况(指针在master)
git branch --no-merged(未合并分支)
git pull origin ask:ask //拉取远程分支master和ask
git push origin --delete ask //删除远程分支
git branch -d ask//删除本地分支
冲突:
master分支上创建ask分支和bbs分支,两分支同时对xx.php文件进行修改,切换到master分之后合并bbs分支,自动合并提交,合并ask分支,产生冲突(文件基线已经变了(提交点)),需要打开该文件(文件内容显示两分支内容,调整——调整共同的基线),手动提交历史树。
暂存区:
文件开发一半,无法提交,但需要切换其他分支怎么办?
git stash(存储状态,需要在add之后才可使用),而后可以切换分支
git stash list(存储列表)
1 | stash@{0}:WIP ... |
git stash apply stash@{0}(恢复暂存区stash@{0},无stash@{0}则默认最新的stash@{0})
git stash drop stash@{0}(删除暂存区状态stash@{0})
git stash pop(恢复并删除暂存区状态stash@{0},最新的存储状态)
标签
git tag [v1.0] (无【】则为显示标签列表) 标签是稳定的代码才能打上
开发好后,发布代码,生成zip压缩包。(master分支的所有代码)
git archive master --prefix=‘cms/’ --forma=zip > cms.zip
master:分支名
prefix:压缩后文件名
forma:后缀
Rebase(本地rebase)
master分支上创建ask分支,master分支本身提交代码,导致master像前移动,切换master合并ask时会弹出窗体合并消息,日志上产生新的合并消息,而不是快速合并,多出一个合并的分支
看图,以时间为轴
期望的合并状态
rebase可理解为replace base
master日志中只有master的提交记录,ask日志中有master的提交记录(只包含创建ask时master的提交点)
在ask分支:git rebase master 在ask日志中插入最新的master提交,使原来的ask提交往 后移动
ask提交后 git rebase --master,这样原本的提交不会丢失,保证了主分支的干净(不保证不冲突)