简介
远程仓库
本地仓库
暂存区
工作区
git add
js
git add .
// 只暂存跟踪过的文件
git add -u
git commit
js
git commit -am '...' // 一次提交
git commit --amend // 修改提交日志
// 绕过 git hooks
git commit -m 'xxx' --no-verify
git push
js
// git push <远程主机名> <本地分支名>:<远程分支名>
git push -u origin master
// 强制推送
git push origin master -f
// 删除分支
git push origin -d master
git push 密码输入错误
输错密码的时候: 控制面板\用户帐户\凭据管理器 去修改下,凭证密码
git clone && git pull
clone : 克隆指定分支的最新提交记录
git clone --depth 1 --branch leshan URL
pull : 拉取远程分支到本地
git pull origin <远程分支名>: <本地分支> 本地分支可选
fetch :
git fetch --depth 1 origin branchName
git clone --depth=1 之后,获取全部分支
js
// 修改.git/config 文件中的
fetch = +refs/heads/master:refs/remotes/origin/master
fetch = +refs/heads/_:refs/remotes/origin/_
// 然后cmd执行
git fetch --all
git pull、 fetch 的区别
git pull = git fetch + git merge
- fetch : 只是将 远程仓库的分支拉取到本地,用户自定义是否合并到工作区
- pull : 将远程仓库的内容直接拉下来合并到工作区
git pull
js
// git pull origin master:master 可简写下面的格式
git pull origin master
git tag
Git 支持两种标签:
轻量标签(lightweight)
与附注标签(annotated)
js
// 轻量标签 没有备注信息
git tag v1.2
// 直接写注释
git tag v2 -m "v1 封版"
// 给已提交记录打标签
git tag -a v2.0 commitID
// 查询 list
git tag
// 展示详情
git show [tagName]
// tag 推送到 服务器
git push origin v1.0
// #
git push origin tags
// 删除标签
git tag -d v1.0
git push origin --delete v1.0
// 捡出
git checkout -b dev v2.0
git checkout
js
// 本地创建新分支
git checkout -b newBranch
// 关联远程分支
git checkout -b dev origin/dev
git branch
js
// 查看
git branch
// 删除分支
git branch -d newBranch
// 修改分支
git branch -M oldName newName
// 删除远端分支
git push origin -d branchName
git reset && git revert
git revert 是在历史记录后面新增一次提交,不会删除以前的提交记录 , git reset 会让提交历史变少
git reset 的三种模式
--mixed(默认)
回退内容到未暂存阶段
(等于执行 add 操作
)--soft
保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区。(回退内容到暂存阶段,等于执行了 add 操作
)--hard
会清空工作目录和暂存区的改动 (删除掉所有内容
)
回退指定文件的版本到 指定 版本
git reset commitID a.py
git rebase && git merge
merge 会创建一次新的提交,(A,B 的合计 C)
rebase 逻辑,A 分支出 B,A,B 都进行了修改,那么 B 要合并 A, 可以 rebase,这样会把 B 的所有提交占存,然后先同步 A,然后再放出 B 的提交,这样就像
合并多个 commit 记录,避免提交时将本地多余记录提交
git rebase -i commitId
, 然后再修改提交记录,这会让我们的提交记录变得干净
主分支合并其他分支的提交记录
合并完 dev 分支的差异,并给 master 上打备注,避免把 dev 中的提交日志同步至 master 分支git merge --squash dev
git log
bash
git reflog
git log
git log -3 --graph
git issues
commit 与 issues 的绑定
- 在 git 上创建 issues
git commit -m "end ,fix #issue的问题标号"
即可完成 issues- issues 解决的方式: fix
git 清除本地缓存(改变成未 track 状态)
git rm -r --cached .
.gitignore
gitignore
# 过滤所有文件,但是 assets 下的 svg 除外
*
!/assets
/assets/*
!/assets/*.svg
git 设置代理
js
// 查看
git config --global --get http.proxy
git config --global --get https.proxy
//设置
git config --global http.proxy '127.0.0.1:7890'
git config --global https.proxy '127.0.0.1:7890'
// 重置
git config --global --unset http.proxy
git config --global --unset https.proxy
git 密钥生成
ssh-keygen -t rsa -C "root"