赞
踩
git : 进行了版本的控制,分布式版本代码管理工具
gitHub :开源的代码分享的平台;每个gitHub账号都可以将自己的资源提交到gitHub上,gitHub充当一个服务器的角色;如果需要gitHub上的资源,直接从gitHub下载;
git : 分布式版本代码管理工具
git工作原理
git的全局的配置只需要配置一次就好(git第一次安装完成后,我们在全局环境下基本信息)
git --version (查看git版本)
git config -l (查看全局的基础信息)
git config --global user.name ‘xxx’ 绑定GitHub//git config --global user.name ‘Github名’
git config --global user.email ‘xxx@xxx.xxx’ 绑定GitHub邮箱 //git config --global user.email ‘邮箱名’
git init:初始化一个空的git仓库 【.git一开始隐藏,在查看打开隐藏的项目,.git这个文件不能删除,删除就不是仓库了】
git status 检查仓库中的文件状态【红色代表工作区,绿色暂存区,没有证明在历史区】
git add 文件名 (把指定文件提交到暂存区)
git add . (把全部文件提交到暂存区)
git add -A (把全部文件提交到暂存区)
git commit -m’注释’ (本文件提交到历史区,注释就是你这次提交的描述信息)
git log 查看历史版本信息
git reflog (查看历史版本信息)
git remote (查看所有远程主机)
git remote rm origin (移除远程主机,远程主机名字 origin)
git remote -v (查看远程仓库和本地仓库的关联状态)
git remote add origin 仓库地址 将本地仓库同步,连接到远程仓库
git remote rm origin 仓库地址 (删除连接状态)
git pull origin master :拉取远程仓库的代码到本地,使本地与远程仓库的代码同步 拉过来
git push origin master :将本地仓库的内容与远程仓库同步 推过去
git clone GitHub仓库地址 (将远程的仓库下载到本地)—相当于 (git init、git remote add 、git pull)
git clone :将远程仓库下载到(当前 git bash 启动位置下面的)指定文件中,如果没有会自动生成
git reset --hard HEAD^ :回退版本信息
(HEAD^:一个版本 HEAD~50 五十个版本)
git reset --hard HEAD^1
git reset --hard f65a9d11b629315659fdb
git stash:临时将工作区文件的修改保存至堆栈中
git stash list ; 列出储藏内的所有列表;
git stash pop:将之前保存至堆栈中的文件取出来
git stash apply: 还会保留历史堆栈中的记录
git stash drop stash@{0} 这是删除第一个队列
git branch:查看本地分支
git branch -a 查看所有分支(本地分支+远程分支)
git branch 分支名:创建新分支
git checkout 分支名:切换到分支
git checkout -b 分支名:创建并切换分支
git checkout -b dev(本地分支名) origin/dev(远程分支名): 拉取远程分支,并创建本地分支
git pull origin dev 把dev支干内容pull下来 orgin 默认的仓库名
git branch -D(d高版本小写也可以) 分支名:删除分支
当更改了分支的文件时,主干代码不会更新
git merge 分支名;把分支的代码合并到主干上;
git merge dev 把dev合并到当前右侧显示(主干或分支)下
message 格式
<type>[optional scope]: <subject>
[optional body]
[optional footer(s)]
eg: git commit -m “feat: 开发新功能”
type 用来描述本次提交的改动类型,可选值及对应含义如下:
build:主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交
ci:主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle等)的提交
docs:文档更新
feat:新增功能
merge:分支合并
fix:bug 修复
perf:性能, 体验优化
refactor:重构代码(既没有新增功能,也没有修复 bug)
style:不影响程序逻辑的代码修改(修改空白字符,格式缩进,补全缺失的分号等,没有改变代码逻辑)
test:新增测试用例或是更新现有测试
revert:回滚某个更早之前的提交
chore:不属于以上类型的其他类型
代码库中配套工具
或者采用表情代替
git config core.ignorecase true //默认为 true
git config core.ignorecase false //在git本地库使用这条指令就可以识别大小写,修改完提交后再修改回来
改名工作区/暂存区的文件
$ git mv [file-original] [file-renamed]
$ git status
$ git commit
可以不管(直接下面3,4步),如果要输入解释的话就需要:
git commit —amend —no-edit
命令修改上一次变更内容修改最后一次提交的 commit 信息
git commit --amend --message="moxify mesxgotest" --author="xaxhx<xxx@xx.com>"
仅修改 message 信息
git commit --amend --message="mxxxoda oxxxt"
仅修改 author 信息
git commit --amend --author="zhainanya <xxx@xx.com>"
#最近 2 条
git rebase -i HEAD~2
vi 下,找到需要修改的 commit 记录,```pick```修改为 ```edit```或 ```e```,```:wq```保存退出
重复执行如下命令直到完成
$ git commit --amend --message="xxxxxx" --author="zhainanay <zhainanay@xx.com>"
$ git rebase --continue
中间也可跳过或退出 rebase 模式
$ git rebase --skip
$ git rebase --abort
ssh-keygen -t rsa -C "上面的邮箱"
注:执行上面命令后,连续回车3次
cd ~/.ssh
cat id_rsa.pub
ssh -T -v git@github.com
克隆代码库的时候没有安装commit-msg hook导致
或者commit change id 位置不对
如果上面不行,试试这样 根路径打开git Bash here
1.删除hooks文件
rm .git/hooks
2.创建hooks目录
mkdir .git/hooks
3.安装hook
scp -p -P 8235 {用户名}@icode.baidu.com:hooks/commit-msg $(git rev-parse --git-dir)/hooks
4.git reset --soft head~1 或者 git reset --soft origin/[branchname] 后重新commit)
因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码,在git pull,
这句代码是在git 2.9.2版本发生的,最新的版本需要添加–allow-unrelated-histories
git pull origin master --allow-unrelated-histories
- 快捷命令
```
git config --global alias.st status //git status 简化 git st
git config --global alias.co checkout //git checkout 简化 git co
git config --global alias.ci commit //git commit 简化 git ci
git config --global alias.br branch //git checkout 简化 git br
git config --global alias.rg reflog
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
```
- icode提交审核技巧
```
git config --global alias.gpush '!f() { : push ; r=$1; [[ -z $r ]] && r=origin; b=$2; t=$(awk "{ print \$2 }" $(git rev-parse --git-dir)/HEAD); t=${t#refs/heads/}; [[ -z $b ]] && b=$t; cmd="git push $r HEAD:refs/for/$b%topic=$t"; echo $cmd; echo; $cmd; }; f'
```
$ git cherry-pick <commit_id>
$ git cherry-pick <commit_id> <commit_id>
$ git cherry-pick <commit_id>^..<commit_id>
git reset --hard 514d05ac284xxxxxe13ff26ea1
git push origin HEAD --force
git push --no-verify
.git/hooks/pre-commit: line 2: ./node_modules/_pre-commit@1.2.2@pre-commit/h
// 执行以下命令,回车即可
npx husky install
1.找到文件夹路径,在文件资源路径的位置输入cmd,然后回车;在此文件夹中操作文件或是内容;
2.window+R: 快捷打开DOS窗口;
3.在搜索框中输入cmd,然后回车;
• cd …/ 返回上一级
• cd + 文件夹: 打开对应的文件夹:该文件夹必须在该目录下,否则系统找不到该路径
• F: 区: 换区操作
• win+R 快速打开DOS窗口
• cd \ 返回到根路径
• mkdir + 文件名 创建一个文件夹
• cls 清空命令行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。