Git常用命令
本次调整(踩坑日记):
1、调整了下整体UI
2、优化了代码块样式,但渲染有点子问题,没有识别出语言而生成相应的HTML,弄了好久,没弄对…..
3、添加音乐:
尝试aplayer插件: No ~ 插件的生成代码必须写在MD文件里通过Hexo进行渲染生成,而此主题页面是通过.swig渲染,不会走hexo,如之奈何,(写到这里,好像有点思路,可以专门把播放器写到md文件里,引进来hexo就会渲染了); 随后直接将插件的静态文件引入到页面,编写Html生成播放器,功能也挺全乎的,但是!!,页面一条转就会重新加载,严重影响使用,看博友使用了pjax: 主要是利用pushState来改变浏览器URL,利用ajax来请求页面,以实现不刷新浏览器更新页面,这样就能保证正在播放音乐中的播放器不受影响; 我也加上了,没搞明白原理,并且没有效果。。。。。。 暂时放弃了,下次再加把,然后把加的全删了(生气了/////
一些概念
暂存区
git add之后会存在此区域, 用来与本地仓库之间做一个缓存, 帮助Git在做diff时提高查找性能- 本地分支
git commit 之后会存在此区域, .git目录下的refs/heads目录, 里面村的就是本地的分支代码信息. 存储区
stash是本地的存储区,
场景: 已经改了本地的代码,但是突然有个人来问你另一个分支的问题,同事这个时候你代码搞了一半,又不想提交到Git仓库中,那么就可以考虑git stash save '临时存一下'
,之后再git stash pop
有点不建议使用这个,确实得小心一点, 哪天stash了, 但是忘记恢复了, 哭哭可没人安慰喔
一些选项
-d
–delete:删除-D
–delete –force的快捷键-f
–force:强制-m
–move:移动或重命名-M
–move –force的快捷键-r
–remote:远程-a
–all:所有
Git clone & init
不多说了昂,
git init
git config <--global> user.name
xxgit config <--global> user.email
xx@email.comgit clone
<远程网址>git clone
<远程网址> <本地目录>git clone
<远程网址>-b
<分支名称> <本地目录>
Git stash (存储区
临时存一下不想被提交的代码, 数据存储在 .git 文件夹下的 refs/stash 里
git stash save 'xxx': 储存变更
git stash list: 查看储存区所有提交列表
git stash pop: 弹出并应用最近的一次储存区的代码提交
git stash drop stash@{n}: 删除某次储存记录
git stash clear: 清楚所有 stash 信息
Git remote
git remote (-v) / (show) : 显示远程仓库详细信息
git remote rm <仓库名称> : 删除某个远程版本库关联
git remote add origin xxx.git : 添加一个远程版本库关联
git push -u origin master 表示把当前分支和远端仓库的 master 分支关联起来
Git branch & checkout
git branch:查看本地所有分支信息
git branch -r:查看远程仓库所有分支
git branch -a:查看本地和远程仓库所有分支
git checkout xxx : 切换至新的分支
git branch xxx: 基于当前分支创建新的分支,但不切换
git checkout -b newbranch :以当前分支为基准创建并切换到指定新分支
git branch -d <分支名>: 删除一个分支,前提是该分支没有未合并的变动。
git branch -D <分支名>: 强制删除一个分支,不管有没有未合并变化。
Git add
git add [file1] [file2]: 添加一个或多个文件到暂存区
git add .:把当前目录下得所有文件改动都添加到暂存区
git add -A:把当前仓库内所有文件改动都添加到暂存区
Git commit
git commit -m xxxx: 不多说了啊
git commit -a -m xxxx : 连带着没有add的文件一起提交
git commit -am xxxx
git commit -m xxx --no-verify :取消代码预检查,直接交(不推荐昂,即加了pre-commit,就要从一开始好好按规矩办事,跳过一次,次次跳,直接摆烂?
git commit --amend
- 场景:
- 你上次提交的commit信息有误
- 你上次提交的文件没改完或没改对
- 不想生成太多commit记录 ,可以交一次换一次, 这样最后合代码的时候就非常优雅
- 步骤:
前面已经commit了;
重新将想改的文件改好,然后git add;
输入git commit --amend;
终端显示上次commit的信息, 光标移动至commit的信息并按下"i"进入编辑;
编辑完成后(覆盖上次的commit信息);
按下Esc退出编辑, 并输入 ":wq" 回车退出并保存修改,完成提交.
Git rm
已经把私有文件提交至远程, 这时候.gitignore再添加是没用的
所以需要先删除远程的文件, 再.gitignore
git rm xxx: xxx从git仓库中删除了,配合 .gitignore 就能保证xxx文件变更都不会提交到远程。
git rm -r dist:要删除的是一个目录,要加上 -r 。
Git push
git push --set-upstream origin branch1
: 推送分支并建立关联关系
Git pull & fetch
没有冒号就是当前分支,没有中括号就是更新仓库
git pull [origin 远程分支:本地分支]
: 拉取最新版本合并到本地, 会自动合并,但如果你本地有修改就麻烦了啊,冲突太烦人了
所以!!!, 没事就pull一下括弧前提是工作区/暂存区干干净净git fetch [origin 远程分支:本地分支]
: 拉取最新版本至本地,不会自动合并,需要你手动git merge origin/xxxx
一下
Git merge
git merge origin/xxxx
git merge xxxx
Git log
Git reset
git reset [--soft | --mixed | --hard] [HEAD]
–soft: 重置你最新一次提交版本,不会修改你的暂存区和工作区。
–mixed: 默认参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
–hard: 重置所有提交到上一个版本,并且修改你的工作区,会彻底回到上一个提交版本,在代码中看不到当前提交的代码,也就是你的工作区改动也被干掉了。
HEAD
- 撤销 add
git reset
git reset HEAD
- 撤销 commit
git reset HEAD^
git reset HEAD^^^^
git reset HEAD~n
- 回滚
git reset --hard commitId
Git log & reflog
Git revert
Git cherrt-pick
Git tag
- 轻量标签
- 附注标签