Git常见场景及命令使用

Git常用场景及命令使用

本文主要是针对特定使用场景输出对应的解决方法,以此实践总结 git 常用命令



一:配置 git

创建密钥

  1. 打开终端(git)进入.ssh目录: cd ~/.ssh
  2. 如果.ssh文件夹不存在,执行指令自动创建: mkdir ~/.ssh
  3. 生成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 删除远端分支

四:命令行同步复刻分支

  1. 配置指向fork的上游远程仓库(例:git remote add upstream git@github.com:AAAA/kube-design.git)
  2. git fetch upstream
  3. 本地仓库kube-design分支master上执行: git merge upstream/master
    (git pull upstream master --rebase // 等同于 2 + 3 命令 , 即可实现同步复刻)

五:本地分支与远程分支建立/取消关联

  1. 查看分支关联情况 git branch -vv
  2. 建立关联 git branch --set-upstream origin branch
  3. 取消关联 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

  1. 将当前代码加入暂存区: git add .
  2. 终端输入git commit --amend
  3. 按需决定是否修改commit message (修改则命令行键入 “i” 进入编辑修改)
  4. 命令行键入 “ : + x + Enter ” 即可!

十三:系统密钥改变,导致ssh连接不上

执行ssh-keygen -R github.com 删除old key即可

十四:Mac git clone 报错 fetch-pack: unexpected disconnect while reading sideband packet

  1. 关闭core.compression: git config –global core.compression 0
  2. 使用depth下载最近一次commit: git clone --depth 1 <repo_uri>
  3. 进入克隆下来的项目目录:cd to your newly created directory
  4. git fetch --unshallow
  5. 检查状态: git pull --all 无报错,问题得以解决

十五:fork 的仓库还有远程仓库时,如何在当前 fork 后的项目代码里写代码提交到爷爷仓库 ?

  1. 本地链接爷爷仓库,配置remote: git remote add upstream @git…(爷爷仓库的地址)
  2. fetch upstream的代码: git fetch upstream
  3. 新建分支,在上面执行git reset --hard upstream/master(此分支代码跟爷爷仓库的master分支代码一致)
  4. 然后在这个分支上面写需要新增的代码

十六:本地同时链接了远程仓库 A、B,两个远程仓库又含有相同的 branch

  1. 本地没有此branch:git checkout -b branch A/branch
  2. 配置.gitconfig文件 [checkout] defaultRemote = A
  3. 命令行输入: 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。

未完待续……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值