tag管理
删除tag
git tag -d tagName git push origin :refs/tags/tagName
创建tag
以当前commit创建tag
git tag -a tagName -m "my tag"
指定commit 创建tag
git tag -a tagName fceb03 -m "my tag"
推送tag到远程
git push origin tagName
删除当前仓库所有历史commit记录
1.创建新的分支 (注意参数–orphan)
git checkout --orphan branch_name
2.添加所有文件
git add -A
3.提交
git commit -am "commit message"
4.删除主分支
git branch -D master
5.重命名当前的分支(branch_name)为master
git branch -m master
6.强制推送到远程
git push -f origin master
删除仓库某个文件所有历史commit记录
- 强制Git处理但不检出每个分支和标签的全部历史记录
- 删除指定的文件以及所有由此产生的空提交
- 覆盖现有标签
git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \ --prune-empty --tag-name-filter cat -- --all
强制推送
git push origin --force --all git push origin --force --tags
强制取消引用本地存储库中的所有对象并进行垃圾回收
git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin git reflog expire --expire=now --all git gc --prune=now
fork仓库后同步原仓库最新代码(产生新的合并记录)
1、查看现有的远程仓库:
git remote -v origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
2、添加指向原仓库的upstream:
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
3、查看origin和upstream
git remote -v
4、直接从原仓库的master分支拉取代码并直接合并代码,其中pull=fetch+merge.
git pull upstream master
更换远程仓库地址
git remote set-url origin REPO_URL
fork仓库后同步原仓库最新代码,合并本地commit(不产生合并记录)
这里fork后的仓库地址 https://github.com/itling/libp2p-rs.git
原仓库地址 https://github.com/netwarps/libp2p-rs.git
现在我要把fork后的仓库swarm_dial_min分支同步,并合并提交记录
git checkout https://github.com/itling/libp2p-rs.git cd libp2p-rs git checkout swarm_dial_min git remote add upstream https://github.com/netwarps/libp2p-rs.git git remote -v git fetch upstream git rebase -i upstream/master
rebase时 第一条我们reword 其余的都fixup
rebase 的时候可能产生冲突 ,解决冲突后git add冲突文件
git rebase --continue
然后可能继续产生冲突,重复上述步骤 ,直接没有冲突
使用git log查看rebase后的结果是否与我们预期的一致
强制推送
git push -f origin swarm_dial_min