相信大多小伙伴在操作git不熟悉的命令时候会稍微颤抖,激动的心颤抖的手,接下来的操作会变成什么
git常用命令集合
git clone <remote-address> #拉取远程仓库
git init #初始化本地仓库
git remote add <remote-name> <remote-address> #将本地仓库与远程仓库关联
git remote rm <remote-name> #删除本地仓库与远程仓库关联
git remote set-url --add <remote-name> <remote-address> #添加一个push origin 的地址
git add . #将本地所有文件暂存
git commit -m 'xxx' #将本地暂存文件提交
git push <remote-name> <remote-branch> #将当前分支push到远程branch
git branch #查看本地所有分支
git branch -r #查看远程所有分支
git branch -a #查看本地、远程所有分支
git fetch #获取所有远程分支(不更新本地分支,另需merge)
git merge <remote-branch> #合并分支
git merge <remote-branch> --squash #将合并的分支commit进行压缩,会有一次额外的commit来“总结”一下,然后完成最终的合并
git pull <remote-name> <remote-branch> #拉取远程branch,并merge到本地分支
|__git fetch + git merge FETCH_HEAD
git checkout . #放弃所有工作区的修改
git checkout - filename #放弃对指定文件的修改
git checkout -f #放弃工作区和暂存区的所有修改
git checkout -b #新建并切换分支
|__git branch <branch-name> + git checkout <branch-name>
#reset重置到commit-ID
git reset --hard <commit-ID> #放弃目前本地的所有改变
git reset --soft <commit-ID> #将本地修改记录add到暂存区
git reset <commit-ID> #撤销所有在暂存区待提交的文件
#撤销某一次提交
git revert <commit-ID> #撤销commit-ID的提交
#eg:在prod上开发,想要切换去dev,如果没有commit
git stash #将本地没有提交的内容进行缓存并从当前分支移除
git stash pop #将缓存内容释放出来应用到当前分支
git文件名大小写问题
当你提交一个文件发现命名不规范,想要修改却发现push上去git仓库里没变
- 新建一个Test.js文件,然后再提交推送上去
- 然后将你本地文件名改为test.js,接着你去提交,发现没有任何修改可以提交
总结--git默认是对文件名大小写不敏感的,上面我们修改了文件名,但git并没有发现
解决办法
git config core.ignorecase false
/*
上面命令输完之后,我们再次git status发现有修改记录可以提交了,但是结局总跟我们想的差一步
push上去之后,发现远程仓库原来Test.js并没有被删除,依然存在,此时还是和test.js文件同时存在,
是不是会有一种感觉叫做:"解决了但没有完全解决"
所以我们可以使用下面这个命令
*/
git mv oldFileName newFileName
/*
移动或重命名一个文件、目录
注意:仅当git config core.ignorecase true时可用,否则会提示下面的错误:
fatal: destination exists, source=A.txt, destination=a.txt
*/
当然也可以手动删掉本地Test.js add .后,再新建目标test.js文件
.gitignore
在我们项目文件里都会看到这么一个文件,让我们在提交git时候做些过滤操作
匹配规则
- [ ] 开头以'#'的行在.gitignore中起注释作用
- [ ] 以'dir/'结尾的表示屏蔽所有名为dir的文件夹都会被屏蔽
- [ ] 以'/dir'开头的表示仅屏蔽当前文件夹dir的文件
- [ ] ** 匹配多级目录,可在开始,中间,结束
- [ ] * 通用匹配零个或多个字符
- [ ] ! 开头的模式标识否定,该文件将会再次被包含
- [ ] '.a'屏蔽所有扩展名为a的文件
- [ ] .[abc]屏蔽所有扩展名为a,或者b或者c的文件
- [ ] ? 通用匹配单个字符
给所有新手上路,键盘一敲,手一按,期待就来了