003.向Gitee上传代码

1.在gitee上创建一个远程仓库

在这里插入图片描述

主要填一下仓库名称,(如果希望别人知道或者提醒自己该仓库是干什么的,就可以再填一下仓库介绍),对于选择开源还是私有,取决于你是个人开发,还是公司内部,以及自己课公司是否想公开。然后点击创建即可。至于后面三个选项(初始化仓库,设置模板,选择分支模型)目前我自己还没用到,就没有研究了。

在这里插入图片描述

成功创建后的页面

在这里插入图片描述

2.上传代码

(1) 选中要上传的文件夹,鼠标右击文件夹,点击Git Bash Here,(电脑上已经安装了git)。

在这里插入图片描述

(2) 配置自己的用户名和邮箱

 git config --global user.name "xxx"
 git config --global user.email "xxx"

(3) 查看用户名和邮箱

 git config user.name
 git config user.email

(4) 初始化本地环境,把该文件夹变成可被git管理的仓库

 git init

(5) 添加该项目下的所有文件

 git add .   (注意这里有个".",这个点表示所有文件)

(6) 将文件添加到本地仓库中

 git commit -m '本次提交的说明'(说明信息为必填项,最好是信息有意义,便于后期理解)

(7) 如果远程仓库里面已经有内容了,先拉取到本地仓库中

 git pull https://远程仓库地址.git master(分支名称)

(8) 将代码推送到指定的远程仓库中

 git push https://远程仓库地址.git master(分支名称)

https://远程仓库地址.git,从下面图片所指向的两个位置其中一个获得

在这里插入图片描述

在这里插入图片描述

3.将本地代码库(本地仓库)与远程代码库(远程仓库)相关联

 git remote add origin https://远程仓库地址.git

这个命令是将你的本地仓库关联到一个远程仓库。在这个例子中,你将远程仓库的地址设置为 https://gitee.com/hongshaoroupei/仓库名称,名称为 origin。

一旦你将本地仓库与远程仓库关联起来,就可以使用 Git 提供的命令来拉取(pull)远程仓库的更新到本地,以及推送(push)本地的修改到远程仓库,而不需要在指定远程和分支了。这里简要介绍一下这两个操作的基本命令:

  1. 拉取(Pull): 将远程仓库的更新拉取到本地。通常使用 git pull 命令来完成。

    git pull <远程仓库名> <远程分支名>
    

    如果你的本地分支与远程分支有关联(通常默认是这样),你可以简单地运行 git pull,Git 将会自动拉取与本地分支关联的远程分支的更新。

  2. 推送(Push): 将本地的修改推送到远程仓库。通常使用 git push 命令来完成。

    git push <远程仓库名> <本地分支名>:<远程分支名>
    

    如果你的本地分支与远程分支有关联,你可以简单地运行 git push,Git 将会将本地分支的修改推送到与其关联的远程分支。

在这两个命令中,<远程仓库名> 是远程仓库的别名,通常默认是 origin<远程分支名> 是远程分支的名称,通常是 main 或者 master<本地分支名> 是你当前所在的本地分支的名称。

举个例子,如果你想拉取远程仓库 origin 上的 main 分支的更新到你当前的本地分支,可以运行:

git pull origin main

如果你想将当前本地分支的修改推送到远程仓库 origin 上的 main 分支,可以运行:

git push origin main

记得在执行 push 操作前,先确保你的本地仓库是最新的,可以通过 pull 操作来更新本地仓库。

提供一种方法一强制将远程仓库的代码更新到当前分支上,(如果仓库为空,这一个可以跳过)

 git pull --rebase origin master

这个命令用于从远程仓库(origin)的master分支拉取最新的提交,并通过rebase方式合并到本地分支。这种方式可以保持提交历史的整洁,避免了使用传统的merge方式可能产生的额外的合并提交。

rebase方式是将本地提交“重新基于(rebase)”到另一个分支上的一种合并方式。在使用rebase时,Git会首先找出两个分支的最近共同祖先,然后将当前分支(比如你的本地分支)上的每个提交依次取出,暂存起来,然后将这些提交依次应用到目标分支(比如远程仓库的分支)上。这个过程中,Git会逐个应用本地的提交,如果遇到冲突,你需要解决冲突并手动继续rebase的过程。

相比于传统的merge方式,rebase可以保持提交历史的线性,使得提交历史更加清晰。但需要注意的是,由于rebase会改写提交历史,因此在已经分享了你的提交(比如已经推送到远程仓库)之后,不建议对已提交的内容进行rebase操作,以免引起其他合作者的困惑和不必要的问题。

当你继续进行rebase操作时,Git会继续将你的本地提交逐个应用到目标分支上,并在需要的时候停下来等待你解决冲突。一旦解决完冲突并继续rebase操作,Git会继续应用余下的提交,直到所有本地提交都被成功地应用到目标分支上。

在rebase过程中,你可能会遇到以下几种情况:

  1. 冲突解决:当Git尝试将本地提交应用到目标分支时,如果发现冲突,会停止rebase操作并提示你解决冲突。你需要手动解决冲突后,使用git add命令将解决后的文件标记为已解决,然后使用git rebase --continue继续rebase操作。

  2. 中止rebase:如果你想中止rebase操作,可以使用git rebase --abort命令。这会使你的分支回到rebase操作之前的状态,恢复到rebase操作之前的提交历史。

  3. 跳过提交:在rebase过程中,你可以选择跳过某些提交,这可以通过在rebase操作停止时使用git rebase --skip命令来实现。

记住,在进行rebase操作时要谨慎,特别是在与他人协作的项目中。不建议在共享的分支上进行rebase操作,以免引起混乱和不必要的问题。

4.部分问题解答

(1) 如果要推送一个文件夹到远程仓库,但是这个远程仓库里面已经有内容了该怎么办?

如果要将一个文件夹推送到远程仓库,但是远程仓库已经包含了其他内容,你有几种选择:

  1. 合并内容: 如果你希望将本地文件夹中的内容与远程仓库中的内容合并,你可以先将本地的修改拉取到本地,解决任何可能的冲突,然后再推送到远程仓库。这可以通过以下步骤完成:

    • 在本地仓库中运行 git pull origin main,将远程仓库的内容拉取到本地。
    • 解决任何可能的冲突。
    • 将本地的文件夹内容和已有内容进行合并。
    • 使用 git addgit commitgit push 将合并后的内容推送到远程仓库。
  2. 覆盖内容: 如果你希望完全用本地文件夹的内容覆盖远程仓库的内容,你可以强制推送(force push)到远程仓库。但请注意,这会覆盖远程仓库中的所有内容,包括可能存在的其他人的提交。这在某些情况下可能会导致数据丢失或冲突,因此请谨慎使用。

    • 在推送时使用 git push -f origin main 命令来强制推送本地的内容覆盖远程仓库。

不管你选择哪种方式,都要确保在操作前备份重要的数据,并且谨慎处理可能会产生冲突的情况。

(2) 一个文件夹之前已经创建了.git文件,再次推送到远程仓库时,用不用再git init了?

如果一个文件夹已经包含了 .git 文件夹,表示这个文件夹已经是一个 Git 仓库了,不需要再次运行 git init。在这种情况下,你只需要将这个现有的 Git 仓库关联到远程仓库,并推送你的变更到远程仓库即可。

要关联到远程仓库并推送你的变更,可以按照以下步骤操作:

  1. 关联远程仓库
    使用 git remote add 命令将远程仓库地址添加到本地仓库的配置中。这样做可以给远程仓库起一个名字,通常会用 origin 来命名。

    git remote add origin https://远程仓库地址.git
    

    这里将 https://远程仓库地址.git 替换为你要关联的实际远程仓库地址。

  2. 推送到远程仓库
    一旦远程仓库关联完成,你可以使用 git push 命令将本地仓库的提交推送到远程仓库。如果是第一次推送,并且想要建立追踪关系,可以使用 -u--set-upstream 选项。

    git push -u origin <branch_name>
    

    这里 <branch_name> 是你当前本地仓库中的分支名,例如 mainmaster

以上步骤完成后,你的本地仓库就与远程仓库关联起来了,并且可以使用 git pushgit pull 来推送和拉取提交,而不需要每次都指定远程仓库和分支了。

(3) 那用不用git add . 和 git commit 了?

是的,你在进行推送之前仍然需要使用 git add .git commit 命令来将你的本地修改添加到暂存区并提交到本地仓库。这两个命令用于管理你的修改,并将它们准备好以便推送到远程仓库。

  • git add .:将当前目录下的所有修改添加到暂存区,准备提交。
  • git commit:将暂存区中的修改提交到本地仓库。

只有在执行了这两个步骤后,你的修改才会被记录到本地仓库中,然后你才能使用 git push 将这些修改推送到远程仓库。

(4) 一定要将现有的 Git 仓库关联到远程仓库后,才能推送吗?

不一定。虽然通常推荐将本地 Git 仓库关联到远程仓库后再进行推送,但在某些情况下,你也可以直接推送到远程仓库而不需要提前进行关联。

如果你希望直接将本地的提交推送到远程仓库,并且不需要建立追踪关系或者在本地记录远程仓库的地址,你可以在推送时指定远程仓库的地址和分支名,而不用提前进行关联。例如:

git push <remote_name> <branch_name>

这里 <remote_name> 是远程仓库的名称,通常是 origin<branch_name> 是你要推送到的远程分支的名称,例如 mainmaster

这种方式适用于一次性的推送或者临时性的操作,但如果你打算经常与远程仓库进行交互,建议还是先进行关联,这样可以简化后续的操作,并且更容易管理远程仓库的连接。

(5) 将本地 Git 仓库关联到远程仓库后,下次另一个文件夹要推送时,用不用再关联远程仓库了?

不需要。一旦你已经将一个本地 Git 仓库关联到了一个远程仓库,这个关联关系会被保存在本地的 Git 配置中。因此,当你在另一个文件夹中进行 Git 操作时,只需要确保在推送前将该文件夹初始化为一个 Git 仓库(如果尚未是一个 Git 仓库),然后你可以直接使用已经关联好的远程仓库进行推送,而不需要再次关联远程仓库了。

简而言之,一旦你在一个文件夹中成功关联了远程仓库,你可以在其他文件夹中通过初始化为 Git 仓库来直接使用这个已经关联好的远程仓库进行推送,而不必重新关联。

举一个例子:

假设你已经在文件夹 A 中成功地将本地 Git 仓库关联到了远程仓库,这个远程仓库的名称是 origin,并且你已经将本地的 main 分支关联到了远程的 main 分支。

现在你需要在文件夹 B 中进行一些修改,并将这些修改推送到远程仓库。在这之前,你需要确保文件夹 B 是一个 Git 仓库。

首先,在文件夹 B 中初始化一个 Git 仓库:

cd path/to/folderB
git init

接下来,你可以直接将文件夹 B 中的修改推送到远程仓库,而不需要重新关联远程仓库:

git add .
git commit -m "Add changes from folder B"
git push origin main

这样,你就可以在文件夹 B 中使用已经关联好的远程仓库进行推送,而不必再次关联远程仓库了。

"并且你已经将本地的 main 分支关联到了远程的 main 分支"这句话是什么意思呢?

通常情况下,当你克隆一个远程仓库到本地时,Git 会自动创建一个名为 origin 的远程仓库,并将远程仓库的 main 分支(或者其他默认分支,比如 master)关联到本地的同名分支。这样,你在本地提交修改并推送到远程仓库时,Git 就知道应该将这些修改推送到哪个远程分支。

举个例子:

好的,让我们用一个具体的例子来说明这个过程。

假设你有一个名为 myproject 的项目,在你的本地计算机上有两个文件夹:project_localproject_remote,分别对应本地的工作目录和远程仓库。

  1. 首先,在 project_remote 文件夹中初始化一个 Git 仓库并添加一些文件,并将其推送到远程仓库:

    # 进入项目文件夹
    cd path/to/project_remote
    
    # 初始化 Git 仓库
    git init
    
    # 添加文件
    touch README.md
    git add README.md
    
    # 提交更改并推送到远程仓库
    git commit -m "Initial commit"
    git remote add origin <远程仓库 URL>
    git push -u origin main
    
  2. 然后,在 project_local 文件夹中克隆远程仓库并进行一些修改,并将这些修改推送到远程仓库:

    # 克隆远程仓库到本地
    git clone <远程仓库 URL> path/to/project_local
    
    # 进入项目文件夹
    cd path/to/project_local
    
    # 修改 README.md 文件
    echo "Hello, Git!" >> README.md
    
    # 提交更改并推送到远程仓库
    git add README.md
    git commit -m "Update README.md"
    git push origin main
    

通过这个例子,你可以看到在 project_local 文件夹中成功克隆了远程仓库,并且直接使用了已经关联好的远程仓库进行了提交和推送,而不需要重新关联远程仓库。这是因为 Git 在克隆时已经将远程仓库的信息保存在本地配置中,并自动关联了本地的 main 分支到远程的 main 分支(如果你的远程仓库使用的是默认的 main 分支)。

5.代码展示

1.远程仓库为空的情况:

推送前:

在这里插入图片描述

推送后:
在这里插入图片描述

在这里插入图片描述

因为我之前已经初始化过了,所以没有再 git init 。初始化成功后,要推送的文件夹里面会增加一个.git文件夹。

在这里插入图片描述

2.远程仓库有内容

推送前:

在这里插入图片描述

推送后:

在这里插入图片描述

拉取失败:因为远程仓库里面有内容,我们不能直接推送,要先将远程仓库的内容拉取到本地仓库后,才可以推送。

在这里插入图片描述

拉取前:

在这里插入图片描述

拉取后:

在这里插入图片描述

代码展示:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

问题解答:

在这里插入图片描述

出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库。假如我之前是直接 git clone 的方式在本地建立起远程 github 仓库的本地克隆仓库就不会有这问题了。查阅了一下资料,发现可以在 pull 命令后紧接着使用 –allow-unrelated-history 选项来解决问题(该选项可以合并两个独立启动仓库的历史)。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

有三种解决方案:

(1) push前先将远程仓库内容拉取过来pull,然后再推送:

git pull origin master 
git push -u origin master

(2) 使用强制push的方法:

git push -u origin master -f 

但是这样的话,会覆盖远程仓库的部分或全部内容,造成数据丢失,一般不可取,尤其是多人协作开发时。

(3) 若不想merge远程和本地修改,可以先创建新的分支:

git branch [name] 
#然后push 
git push -u origin [name]

3.error: remote origin already exists.

表示远程仓库已存在。

 git remote rm origin  删除关联的origin的远程库
 git remote add origin https://gitee.com/xxxxxx.git 将本地仓库与远程仓库关联
 git push origin master 推送到远程仓库

使用 pull时可能会遇到如下问题:

(1) git pull 提示这个错误,fatal: refusing to merge unrelated histories ,中文意思就是拒绝合并不相关的历史

解决方案在上文。

(2) git pull 提示这个错误 There is no tracking information for the current branch(没有当前分支的跟踪信息)

这是因为本地分支和远程分支没有建立联系,使用下面命令查看:

# 可以查看本地分支和远程分支的关联关系
git branch -vv 
# 查看远程仓库
git remote -v 

解决方法:

1.直接指定远程master:

git pull origin master

2.先指定本地master到远程的master,然后再去pull:

git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字 
git pull

使用 将本地仓库与gitee上的远程仓库相关联的推送方式:

推送前:

在这里插入图片描述

推送后:

在这里插入图片描述

代码展示:

在这里插入图片描述

使用git时间不长,有错误还请各位大佬多多指出,非常感谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值