Git常用场景及命令使用
本文主要是针对特定使用场景输出对应的解决方法,以此实践总结 git 常用命令
文章目录
- 一:配置 git
- 二:全局配置 git 用户及邮箱
- 三:本地分支管理
- 四:命令行同步复刻分支
- 五:本地分支与远程分支建立/取消关联
- 六:合并分支
- 七:本地 git 暂存区管理
- 八:本地 git 缓存区管理
- 九:remote 远程仓库的管理
- 十: 增删改查版本标签 tag
- 十一:版本回退 (reset/revert)
- 十二:当前编辑的代码合并提交到当前分支最新的commit
- 十三:系统密钥改变,导致ssh连接不上
- 十四:Mac git clone 报错 fetch-pack: unexpected disconnect while reading sideband packet
- 十五:fork 的仓库还有远程仓库时,如何在当前 fork 后的项目代码里写代码提交到爷爷仓库 ?
- 十六:本地同时链接了远程仓库 A、B,两个远程仓库又含有相同的 branch
- 十七:批量上传
- 十八:删除指定路径下面的文件
- 十九:清理不必要的文件并优化本地存储库
- 总结
一:配置 git
创建密钥
- 打开终端(git)进入.ssh目录: cd ~/.ssh
- 如果.ssh文件夹不存在,执行指令自动创建: mkdir ~/.ssh
- 生成RSA密钥对:ssh-keygen -t rsa -C “你的邮箱@http://xxx.com”,为了方便全程回车即可(不用输入ras文件名及密码)
查看私钥
cat ~/.ssh/id_rsa.pub
添加私钥到gitee:(添加到github网页上操作,讲其复制到对应的地方即可)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCmmNK6gCxZOJ0LFX9cg8TAa4IUA2WmxnQwMeKzqEzBJ286S8FtbBVdVaRNW/IaW/nqGmsLJRKYWlLAjlzGTojkxuIfqnkNPwwjCpYsgy0X7Za4kTwFQ7wrG3M7UxwE7eo8f/c2CskmIV6gD2I5AlLbebYcgKiuXAtqmaCh4vUsKB4r+g1W/zPlcmCIEeWi73iJ/4zjGcCRjHWH9353Qn8EQ8SxugFgcwBf8Y6TZC/e8diMs3DK4jrSRyBv/qr7gMB4jTU1CjAEtX7x9+cz1grYCacbF/KwidmP0vOEObRmVsxppHxoCPEWxsqUtMps6k7d0emp6Nlz3noV3OmAfR4QGqlMmJ1n+8efdS4jxlVJgpCO0wIEwUaeX/deMbxwNTLyRx6zC5ITb4J88jofhinD0hRfuxBap8en0XtlgwJYzhCDTwdBOHIiZtQU29yeFICiufF3ZUiHxf42/Y/sar8+bFvG04QQQQVVLUABkWkiQI3M4PmifX7aPPjAh0nmpKc= wel@wel.me
最后验证git
ssh -T git@gitee.com 出现 Hi UpdateAll! You’ve 表示成功!
二:全局配置 git 用户及邮箱
git config --global user.name MyName
git config --global user.email MyEmail
单一配置:上面命令行, 去掉 --global 指令即可
三:本地分支管理
git branch -b new_branch_name 创建新分支(在某分支下面执行此命令,则是基于此分支创建的新分支)
git branch -d|-D branch_name 删除本地分支
git checkout -b dev origin/dev 同步远程dev分支
git push --force 仅有自己开发的分支出现本地远端不同步的时候,使用–force直接push代码
git push origin A 当本地分支未关联远端分支时,push origin将本地代码推到远端分支上面去
git push --set-upstream origin A 将本地分支推到远端A分支并进行关联
git push origin :A 删除远端分支
四:命令行同步复刻分支
- 配置指向fork的上游远程仓库(例:git remote add upstream git@github.com:AAAA/kube-design.git)
- git fetch upstream
- 本地仓库kube-design分支master上执行: git merge upstream/master
(git pull upstream master --rebase // 等同于 2 + 3 命令 , 即可实现同步复刻)
五:本地分支与远程分支建立/取消关联
- 查看分支关联情况 git branch -vv
- 建立关联 git branch --set-upstream origin branch
- 取消关联 git branch --unset-upstream
六:合并分支
切换到主分支 git checkout master
git merge 被合并的分支名,例如 git merge wel
git rebase -i
HEAD~number | hash
git rebase --continue 合并commit中断后,使用该命令继续进行合并请求
git merge --abort 取消merge
git rebase branch
七:本地 git 暂存区管理
git add . 将本地所有修改放到暂存区
git checkout . 丢弃本地所有的修改
八:本地 git 缓存区管理
git stash list 查看缓存区清单
git stash 将当前的工作区改动放到缓存区(若有新增文件时,不能直接在Vscode中 stash changes,需要在控制台git add .
,然后再git stash
)
git stash save –u ‘缓存备注’ 将所有改动保存并且加上注释
git apply hash 会删除stash list中的对应记录
git stash pop 取出当前缓存区栈的第一个缓存的代码副本,不影响stash list的记录
git stash drop 删除缓存区记录列表
git stash show 查看指定stash的diff
九:remote 远程仓库的管理
git remote 查看所有远程仓库列表
git remote XXX 查看指定远程仓库
git remote set-url origin location // 修改远程仓库地址
git remote rm repository // 删除远程仓库
git remote add repositoryName url // 添加远程仓库
git remote prune origin // to remove any ole,conficting branches
十: 增删改查版本标签 tag
查看版本标签: git tag
创建版本标签:git tag -a v1.0 -m ‘完成了版本1.0’
本地版本标签提交:git push origin v1.0
删除本地版本标签:git tag -d v1.0
十一:版本回退 (reset/revert)
git reset HEAD^ 将当前分支回退到上一个版本
git reset --hard commit_hash_id 将当前分支会退到指定commit版本
git log | git reflog 查看版本,reflog查看所有版本
git revert -n 97ea0f9
git commit -m “恢复第三次修改”
十二:当前编辑的代码合并提交到当前分支最新的commit
- 将当前代码加入暂存区: git add .
- 终端输入git commit --amend
- 按需决定是否修改commit message (修改则命令行键入 “i” 进入编辑修改)
- 命令行键入 “ : + x + Enter ” 即可!
十三:系统密钥改变,导致ssh连接不上
执行ssh-keygen -R github.com 删除old key即可
十四:Mac git clone 报错 fetch-pack: unexpected disconnect while reading sideband packet
- 关闭core.compression: git config –global core.compression 0
- 使用depth下载最近一次commit: git clone --depth 1 <repo_uri>
- 进入克隆下来的项目目录:cd to your newly created directory
- git fetch --unshallow
- 检查状态: git pull --all 无报错,问题得以解决
十五:fork 的仓库还有远程仓库时,如何在当前 fork 后的项目代码里写代码提交到爷爷仓库 ?
- 本地链接爷爷仓库,配置remote: git remote add upstream @git…(爷爷仓库的地址)
- fetch upstream的代码: git fetch upstream
- 新建分支,在上面执行git reset --hard upstream/master(此分支代码跟爷爷仓库的master分支代码一致)
- 然后在这个分支上面写需要新增的代码
十六:本地同时链接了远程仓库 A、B,两个远程仓库又含有相同的 branch
- 本地没有此branch:git checkout -b branch A/branch
- 配置.gitconfig文件 [checkout] defaultRemote = A
- 命令行输入: git config add checkout.defaultRemote A (could add label --global)
十七:批量上传
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
在此添加推送仓库的url,如下:
url = ssh://git@host:post/username/仓库名.git
url = git@gitee.com:wangwalden/iltres.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
十八:删除指定路径下面的文件
git checkout ‘./c./index.tsx’
十九:清理不必要的文件并优化本地存储库
git-gc
总结
以上就是今天要讲的内容,本文按照自己经常遇到的 git 使用场景总结的一些应对解决方法,将常用的 git 命令总结应用到具体的使用场景中,加深印象,更易于我们在项目中实践熟练操作 git。
未完待续……