git使用指北
1、设置用户
-
查看用户配置信息
git config --list -
全局配置
git config --global user.name 'aj' git config --global user.email '123@qq.com' -
给单独的项目设置作者
git config --local user.name 'aj' git config --local user.email '123@qq.com'
2、设置缩写
-
将\(status\) 设置为 \(st\)
git config --global alias.st status
3、初步使用
-
初始化\(git\)
git init -
\(git add .\)
- git add . 只执行当前目录及之下的所有改变
- git add --all 执行这个项目中的异动
-
提交
git commit -m '描述信息' //暂存区必须有内容 git commit --allow-empty -m '描述信息' //暂存区允许为空 git commit -a -m '描述信息' //不在暂存区但在工作区的文件(tracked file) -
查看commit
git log (--pretty=oneline) git log --oneline -- graph //可以查看到更多的commit :q //退出gitlog,光标在按空格或enter显示更多commit -
查找某些特定的commit
//查看a和b的commit git log --oneline --author="a \| b" //查看包含有lol的commit git log --oneline --grep="lol" //在commit文件中找到rubby git log -S "rubby" //查找到今天早上9点到12点间的commit git log --oneline --since="9am" --until="12am" //查找2017年1月后早上9点到12点间的commit git log --oneline --since="9am" --until="12am" --after="2017-01" //查看指定文件的commit git log index.html //查看每次commit做了什么 git log index.html -p -
删除文件
git add delete.txt //手动删除 git rm delete.txt //git自动删除 git rm delete.txt --cached //取消git的控制,但是不删除源文件 -
修改commit记录
-
修改最后一次
git commit --amend -m 'description' -
reset
git reset e12d3ef^ //表示回退到e12d3ef的前一个,如果有两个^(^^) git reset e12d3ef~5,//表示回退到前5个 git reset master^ git reset HEAD^ //当HEAD和master都指向当前的commit时 git reset e12d3ef //回退到e12d3ef commit- mixed :文件存放在工作区
- soft : 文件存放在暂存区
- hard :被删除
- git reglog (git log -g)保留reset记录
-
-
追加文件到最新的一次commit中
git commit --amend --no-eidt //表示不添加描述 -
忽略某些文件
-
在.gitignore中添加文件,注意,这个文件只针对在设置了.gitigore之后被管理的文件,之前的文件可以用下面的指令进行处理
git rm --cached //使得之前的文件也能被忽略 git clean -fX //清楚忽略的文件 -
如果使用 git add -f 则无法忽略
-
-
查看代码是在那一次commit中添加的
git blame index.html git bleam -L 5,10 index.html //查看index.html中的5到10行的代码 -
挽回被删除的文件
git checkout index.html git checkout HEAD~2 //表示使用两个版本前的文件覆盖当前工作区的内容,同时更新暂存区的状态 -
HEAD 通常指向当前的分支
4、分支
-
查看分支
git branch -
新增分支
git branch cat -
修改分支名称
git branch -m cat dog -
删除分支/恢复分支
git branch -d dog git branch -D dog //强制删除 git branch 分支名 SHA-1值 -
切换分支
git checkout sheep //原本存在这个分支 git checkout -b sheep //原本不存在这个分支 -
合并分支
git merge 要被合并的分支名 git rebase 要被合并的分支名 //取消合并 git reset HEAD^ --hard //rebase取消合并 git reflog 查找到合并前的commit git reset commit --hard git reset ORIG_HEAD --hard // ORIG_HEAD记录危险操作之前HEAD的位置 //合并发生冲突(文本) //merge,修改冲突文件 git add . git commit -m '' //rebase 修改冲突文件 git add . git rebase --continue //合并发生冲突(图片) git checkout --ours .jpg //使用当前分支的图片 git checkout --theirs .jpg //使用另一个分支的图片\(rebase\) 和 \(merge\) 的区别
- \(merge\) 合并会产生一个额外的commit (保留原来的commit),指向合并的双方(无master)
- rebase 丢弃原来的commit,根据合并的位置重新计算commit的值
-
查看SHA-1的值
git reflog -
HEAD,指向当前分支
HEAD^ //缩写@^ -
在过去的commit上另开一个分支
git checkout -b bird commit值
5、修改历史记录
-
撤销修改
git checkout -- index.js //还未在暂存区中 git reset HEAD index.js //已放在暂存区中,head表示最新版本 -
使用rebase 修改
git rebase -i sha-1 //整理从sha-1到当前commit的所有提交信息 pick 改为reward -
合并commit
git rebase -i sha-1 //整理从sha-1到当前commit的所有提交信息 pick 改为 squash -
增加commit
pick 改为 edit -
调整commit顺序(修改弹窗内容)
-
删除commit
pick 改为 drop -
revert 取消之前的commit(新增一个commit表示取消之前的commit)
git revert HEAD --no-edit
6、标签
-
标签和分支的区别
标签不会移动,分支会随着commit的推进而往前移动
-
添加删除标签
git add 标签名 SHA-1值(不写默认当前的commit) //轻量标签 git add 标签名 SHA-1值(不写默认当前的commit)-a -m 信息 //附注标签
7、远端协作
-
设置远端节点
git remote add origin 地址 -
推内容
git push -u(可忽略) origin(远端) master(本地分支名):master(远程分支名) git push -u origin master//第一次简写 git push //-u表示git push默认推送到master分支上 -
拉取内容
// 通常是远端仓库和本地仓库提交的commit不一致时使用,比如提交到仓库后直接在远端修改文件生成一个commit git pull = git fetch + git merge git puhh --rebase //使用rebase合并 -
克隆
git clone -b dev 地址 //指定 git clone 地址 //master -
删除服务器上的分支
git push origin :cat
实际遇到的问题
使用husky做代码提交的时候,由于验证失败,导致之前写的添加的文件和所有写代码都消失了,幸好找到了解决方法,使用git stash pop恢复,找回了丢失的代码

浙公网安备 33010602011771号