Skip to content

简介

  • 远程仓库

  • 本地仓库

  • 暂存区

  • 工作区

    git

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 的三种模式

  1. --mixed(默认) 回退内容到 未暂存阶段等于执行 add 操作
  2. --soft 保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区。(回退内容到暂存阶段,等于执行了 add 操作
  3. --hard 会清空工作目录和暂存区的改动 (删除掉所有内容

回退指定文件的版本到 指定 版本

git reset commitID a.py

git rebase && git merge

  1. merge 会创建一次新的提交,(A,B 的合计 C)

  2. 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"