姜远平 發表於 2021-1-18 00:04:00

git实现远程仓库gitee管理实战

<p><strong>                                              作者:尹正杰</strong></p>
<p><strong>版权声明:原创作品,谢绝转载!否则将追究法律责任。</strong></p>
<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>一.将master分支推送到gitee<ul><li>1.注册GitHub或者gitee等仓库账号</li><li>2.将本地仓库同步至远程仓库</li></ul></li><li>二.将多个分支推送到远程仓库<ul><li>1.新建flink分支</li><li>2.新建kafka分支</li><li>3.推送所有分支到远程仓库</li></ul></li><li>三.配置本地的ssh公钥到gitee服务器<ul><li>1.新电脑生成秘钥</li><li>2.查看公钥,将自己本地的公钥拷贝到服务器</li><li>3.添加公钥</li><li>4.使用ssh协议拉取代码</li><li>5.拉取远程仓库特定的分支</li></ul></li><li>四.git revert实现远程仓库回滚<ul><li>1.git revert概述</li><li>2.git revert用法</li><li>3.git reset和git revert区别</li></ul></li><li>五.可能会遇到的问题<ul><li>1.Already up to date.</li><li>2.Please make sure you have the correct access rights</li></ul></li></ul></div><p></p>
<h1 id="一将master分支推送到gitee">一.将master分支推送到gitee</h1>
<h2 id="1注册github或者gitee等仓库账号">1.注册GitHub或者gitee等仓库账号</h2>
<p><img src="https://img2024.cnblogs.com/blog/795254/202411/795254-20241118001210414-2094805401.png"></p>
<pre><code>首先,需要注册GitHub或者gitee等仓库账号,然后再执行如下命令,将代码上传到仓库。

如上图所示,在新建仓库时,选择不初始化仓库。
</code></pre>
<h2 id="2将本地仓库同步至远程仓库">2.将本地仓库同步至远程仓库</h2>
<p><img src="https://img2024.cnblogs.com/blog/795254/202411/795254-20241118001220425-997936471.png"></p>
<pre><code>如上图所示,官方提供了推送到仓库的命令。

如下图所示,成功将代码推送到gitee远程仓库。

以下是我将本地devops目录的代码推送到远程gitee仓库详细步骤:
# ll
total 24
drwxr-xr-x 3 root root 4096 Nov 17 22:11 ./
drwxr-xr-x 7 root root 4096 Nov 17 19:43 ../
drwxr-xr-x 8 root root 4096 Nov 17 22:17 .git/
-rw-r--r-- 1 root root   23 Nov 17 19:59 go.mod
-rw-r--r-- 1 root root   26 Nov 17 22:11 k8s.log
-rw-r--r-- 1 root root   16 Nov 17 22:11 office.txt
#
# git remote -v
#
# git remote add origin https://gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git
#
# git remote -v
origin        https://gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git (fetch)
origin        https://gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git (push)
#
# git push -u origin "master"
Username for 'https://gitee.com': jasonyin2020
Password for 'https://jasonyin2020@gitee.com':
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 2 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (11/11), 939 bytes | 939.00 KiB/s, done.
Total 11 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM
remote: Set trace flag 9141c7ae
To https://gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git
*       master -&gt; master
Branch 'master' set up to track remote branch 'master' from 'origin'.
#

</code></pre>
<p><img src="https://img2024.cnblogs.com/blog/795254/202411/795254-20241118001230627-1003541240.png"></p>
<h1 id="二将多个分支推送到远程仓库">二.将多个分支推送到远程仓库</h1>
<p><img src="https://img2024.cnblogs.com/blog/795254/202411/795254-20241118001239419-1419311116.png"></p>
<h2 id="1新建flink分支">1.新建flink分支</h2>
<pre><code># git branch
* master
#
# git checkout -b flink
Switched to a new branch 'flink'
#
# git branch
* flink
master
#
# echo https://flink.apache.org/ &gt; flink.txt
#
#
# git add flink.txt ; git commit -m 'add flink'
add flink
1 file changed, 1 insertion(+)
create mode 100644 flink.txt
#
</code></pre>
<h2 id="2新建kafka分支">2.新建kafka分支</h2>
<pre><code># git checkout -b kafka
Switched to a new branch 'kafka'
#
# git branch
flink
* kafka
master
#
# echo https://kafka.apache.org/ &gt; kafka.log
#
# gitadd kafka.log ; git commit -m 'add kafka'
add kafka
1 file changed, 1 insertion(+)
create mode 100644 kafka.log
#
</code></pre>
<h2 id="3推送所有分支到远程仓库">3.推送所有分支到远程仓库</h2>
<pre><code># git remote -v
origin        https://gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git (fetch)
origin        https://gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git (push)
#
# git push -u origin --all# 推送所有分支到远程仓库
Username for 'https://gitee.com': jasonyin2020
Password for 'https://jasonyin2020@gitee.com':
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 2 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 598 bytes | 598.00 KiB/s, done.
Total 6 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM
remote: Set trace flag 88410398
To https://gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git
*       flink -&gt; flink
*       kafka -&gt; kafka
Branch 'master' set up to track remote branch 'master' from 'origin'.
Branch 'flink' set up to track remote branch 'flink' from 'origin'.
Branch 'kafka' set up to track remote branch 'kafka' from 'origin'.
#
</code></pre>
<h1 id="三配置本地的ssh公钥到gitee服务器">三.配置本地的ssh公钥到gitee服务器</h1>
<h2 id="1新电脑生成秘钥">1.新电脑生成秘钥</h2>
<pre><code># ssh-keygen -f ~/.ssh/id_rsa -P '' -q
</code></pre>
<h2 id="2查看公钥将自己本地的公钥拷贝到服务器">2.查看公钥,将自己本地的公钥拷贝到服务器</h2>
<pre><code># cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDJRqH9BN9GEPbqvvoRYZqKPcU8V/muF0GrXQtUrh42NMHecu2sdO5Utp7SQnh4lA/+xX1wp7tm1A2v4jRHCFmHM26okw0O0aFW8BzjY+ZW2bTFuWE/zI1P0q1lxdT4gaCtbFohyjmJi26cqTSDHfeN5r6vatyiJCPsDOzMa/SPMeKf4C8uVoAR+FRCO3T4LAzoGqi5OabsrDguzgkQaqclH7AhHIpyRGwhCMJLtpkDHAxni7PRO6smIlc4Rwuelr8chQRqalS6I8pxQ+82XmCEtE7KV4g2wcRIed2EuZQmBbxZZMSnGZdYRZ+DT5pu3CXUeJ8DDx/8K/9bT05+opZ5/cOtD2Yr5rimRjWIGQgZh7MNsYZpqcxecXSMXLFRsMiGyyuzAavT2GcStknz5E30vE5cgw4gn5/VT49y9/UAFHd8Uw85yD7RSSAw3GGO31H67wzTQbt6YY6XmAr6aSD9rotvS2Ml5KMGx2GU/X3Jtip6rGV9fqiG+d1BEBOrMO0= root@prometheus-server31
#
</code></pre>
<h2 id="3添加公钥">3.添加公钥</h2>
<p><img src="https://img2024.cnblogs.com/blog/795254/202411/795254-20241118001252202-12794310.png"></p>
<pre><code>按照上图所示的步骤操作,操作成功后,会得到如下图所示的提示哟。


温馨提示:
        上面的方式演示了基于ssh的免密登录,其实对于https也是支持免密登录的哟,只不过不建议使用。
                - 原来的地址:
                        https://gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git
                - 修改的地址:
                        https://用户名:密码@gitee.com/jasonyin2020/yinzhengjie-devops-k8s.git
                       
        对于ssh免密登录使用的是前缀协议是git,对于https免密登录使用的前缀协议是https。
</code></pre>
<h2 id="4使用ssh协议拉取代码">4.使用ssh协议拉取代码</h2>
<p><img src="https://img2024.cnblogs.com/blog/795254/202411/795254-20241118001301067-295822069.png"></p>
<pre><code>如上图所示,我们可以按照WebUI的方式来克隆代码到本地。

如下图所示,将代码成功克隆到本地后,我们可以切换分支。

具体操作如下:
# git clone git@gitee.com:jasonyin2020/yinzhengjie-devops-k8s.git
Cloning into 'yinzhengjie-devops-k8s'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 17 (delta 4), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (17/17), done.
Resolving deltas: 100% (4/4), done.
#
# cd yinzhengjie-devops-k8s/
#
# ll
total 24
drwxr-xr-x3 root root 4096 Nov 17 22:51 ./
drwx------ 12 root root 4096 Nov 17 22:51 ../
drwxr-xr-x8 root root 4096 Nov 17 22:51 .git/
-rw-r--r--1 root root   23 Nov 17 22:51 go.mod
-rw-r--r--1 root root   26 Nov 17 22:51 k8s.log
-rw-r--r--1 root root   16 Nov 17 22:51 office.txt
#
# git branch
* master
#
# git checkout kafka
Branch 'kafka' set up to track remote branch 'kafka' from 'origin'.
Switched to a new branch 'kafka'
#
# git branch
* kafka
master
#
# ll
total 32
drwxr-xr-x3 root root 4096 Nov 17 22:51 ./
drwx------ 12 root root 4096 Nov 17 22:52 ../
-rw-r--r--1 root root   26 Nov 17 22:51 flink.txt
drwxr-xr-x8 root root 4096 Nov 17 22:51 .git/
-rw-r--r--1 root root   23 Nov 17 22:51 go.mod
-rw-r--r--1 root root   26 Nov 17 22:51 k8s.log
-rw-r--r--1 root root   26 Nov 17 22:51 kafka.log
-rw-r--r--1 root root   16 Nov 17 22:51 office.txt
#

</code></pre>
<p><img src="https://img2024.cnblogs.com/blog/795254/202411/795254-20241118001310933-923077823.png"></p>
<h2 id="5拉取远程仓库特定的分支">5.拉取远程仓库特定的分支</h2>
<p><img src="https://img2024.cnblogs.com/blog/795254/202411/795254-20241118001318737-1114603323.png"></p>
<pre><code>如上图所示,我们可以在拉取代码的时候选择一个特定的分支来拉取代码。

具体操作如下所示:
# git clone git@gitee.com:jasonyin2020/yinzhengjie-devops-k8s.git -b flink
Cloning into 'yinzhengjie-devops-k8s'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 17 (delta 4), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (17/17), done.
Resolving deltas: 100% (4/4), done.
#
# cd yinzhengjie-devops-k8s/
#
# git branch
* flink
#
# ll
total 28
drwxr-xr-x3 root root 4096 Nov 17 22:55 ./
drwxrwxrwt 14 root root 4096 Nov 17 22:55 ../
-rw-r--r--1 root root   26 Nov 17 22:55 flink.txt
drwxr-xr-x8 root root 4096 Nov 17 22:55 .git/
-rw-r--r--1 root root   23 Nov 17 22:55 go.mod
-rw-r--r--1 root root   26 Nov 17 22:55 k8s.log
-rw-r--r--1 root root   16 Nov 17 22:55 office.txt
#

</code></pre>
<h1 id="四git-revert实现远程仓库回滚">四.git revert实现远程仓库回滚</h1>
<h2 id="1git-revert概述">1.git revert概述</h2>
<pre><code>如果我们修改了某些内容已经提交到本地仓库,并且push到远程仓库了,这种情况下想把本地和远程仓库都回滚到某个版本,该怎么做呢?

前面用git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化,这样,即使本地reset了,但如果再次git pull,那么,远程仓库的内容又会和本地之前版本的内容进行merge,造成回退失败。

对于已经把代码push到远程仓库,你退回本地代码其实也想同时退回线上代码,回滚到某个特定的版本,线上和线下代码保持一致。

git revert用于撤销某次操作,此次操作之前和commit和history都会保留,即用一个新提交来消除一个历史提交所做的任何修改。

revert之后你的本地代码会回滚到指定的历史版本,然后再git push。
</code></pre>
<h2 id="2git-revert用法">2.git revert用法</h2>
<pre><code>git revert HEAD
        撤销前一次commit,会交互式打开文本编辑器提示输入提交信息。
       
git revert HEAD --no-edit
        非交互式撤销前一次提交。
       
git revert HEAD^
        撤销前一次commit。
       
git revert commit &lt;commit&gt;
        撤销指定的版本,撤销也会作为一次提交进行保存。
</code></pre>
<h2 id="3git-reset和git-revert区别">3.git reset和git revert区别</h2>
<pre><code>git revert
        是用一次新的commit来回顾之前的commit,git reset是直接删除指定的commit。
       
git reset
        是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容跟要revert的内容正好相反,能够抵消要被revert的内容。
</code></pre>
<h1 id="五可能会遇到的问题">五.可能会遇到的问题</h1>
<h2 id="1already-up-to-date">1.Already up to date.</h2>
<pre><code>报错信息:
# git merge k8s
Already up to date.
#


错误原因:
        已经合并过分支了。可以忽略此报错,因为你可能已经完成分支合并啦。
       
解决方案:
        检查工作区文件,验证是否已经完成分支合并。
</code></pre>
<h2 id="2please-make-sure-you-have-the-correct-access-rights">2.Please make sure you have the correct access rights</h2>
<pre><code>报错信息:
# git clone git@gitee.com:jasonyin2020/yinzhengjie-devops-k8s.git
Cloning into 'yinzhengjie-devops-k8s'...
The authenticity of host 'gitee.com (180.76.198.77)' can't be established.
ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/)? yes
Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
#

错误原因:
        本地无权限访问gitee的远程仓库,可能是没有将服务器的公钥拷贝到gitee上。
       
解决方案:
        在gitee中的WebUI检查是否配置了本地服务器生成的公钥信息。
</code></pre>


</div>
<div id="MySignature" role="contentinfo">
    <p>本文来自博客园,作者:尹正杰,转载请注明原文链接:https://www.cnblogs.com/yinzhengjie/p/14290869.html,个人微信: "JasonYin2020"(添加时请备注来源及意图备注,有偿付费) </p>

<p>当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。</p><br><br>
来源:https://www.cnblogs.com/yinzhengjie/p/14290869.html
頁: [1]
查看完整版本: git实现远程仓库gitee管理实战