将本地文件推送到GitHub上
在安装和配置好 Git Bash 后,将文件或者修改后的文件推送到 GitHub上,分为以下几种情况:
一、本地不存在该仓库,而 GitHub 上已有该仓库
1、先在本地创建一个空的文件夹(如 Test ),用来放从 GitHub 上克隆下来的 repository。
【注】:将相应的项目克隆到本地,由于要克隆的项目已经自带有 .git 目录,所以无需进行 git init 来初始化。若是在本地新建的仓库项目,则需要 git init 进行初始化。
1 | mkdir Test # 为将要进行Git管理的项目建立新的文件夹 |
2、再将 GitHub 上的项目 repository 克隆到本地
默认克隆 main 分支内容,执行 git clone 命令后我们会默认处于 main 分支下,同时系统会自动将 origin 设置成该远程仓库的标识符。
1 | git clone https://github.com/username/hello-world.git #将 GitHub 上的对应仓库克隆到本地 |
3、克隆到本地之后便可以在本地进行编辑修改,再推送到 GitHub 上即可。在本地编辑、查看与推送操作如下:
1 | cd hello-world #进入到在GitHub上所创建的repository中,(已经拷贝到本地的) |
二、本地已经存在该仓库,而 GitHub 上没有
1、首次将本地的仓库推送到远程(GitHub)仓库时。首先在 GitHub 上建立一个仓库,并将其设置为本地仓库的远程仓库。为了使 GitHub 上新建的仓库与其他仓库不混淆,使其与本地仓库有同样的名称。同时如果本地已经存在 README.md 文件时,Initialize this repository with a README
选项就不要勾选,以免与本地的 README.md 相冲突;如果本地仓库中没有 README.md 文件时,此时可以勾选该项。如下图
2、进入到本地仓库中,并用 git init
来对本地的仓库进行初始化
1 | cd Test #进入到本地需要管理的项目目录中 |
3、使用 git remote add
命令,来设置本地的远程仓库
执行git remote add命令之后,Git 会自动将 https://github.com/username/git-tutorial.git 远程仓库的名称设置为origin(标识符)
1 | git remote add origin https://github.com/username/git-tutorial.git #将其设置成本地的远程仓库 |
4、将所有改动的内容提交到暂存区并保存
1 | git add . #把工作时的所有变化提交到暂存区,不包括删除的文件 |
【注】:本地仓库的内容推送到远程仓库之前,必须要将本地仓库中的内容提交到相应的分支中,否则该分支的内容将不会被推送到远程仓库中,而只是在远程仓库中建立了相应的分支而已。
5、将当前分支下本地仓库中的内容推送至远程仓库中。分为两种情况:main 分支、其它子分支
(1)、将 main 分支的本地仓库内容推送到远程仓库中(此时该远程仓库中还没有 main 分支,只是一个空仓库)
1 | git checkout master #如果当前分支不是master,则首先切换到 master分支下。 |
【注】:执行以上操作后,当前分支的内容就会被推送给远程仓库 origin 的 master 分支。-u 参数可以在推送的同时,将 origin 仓库的master 分支设置为本地仓库当前分支的 upstream(上游)。添加了这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从 origin 的master 分支获取内容,省去了另外添加参数的麻烦。若没有 -u 这个参数,则在后面的 git pull 时,就需要指明拉取的是那一条分支,如:git pull origin f03 ,表示拉取的是远程的 f03 分支:origin/f03
(2)、将本地的其它子分支推送至 main 以外的分支,如将本地的 feature-D 分支以同名的形式推送至远程仓库(此时远程仓库中并没有 feature-D 分支)
1 | git checkout -b feature-D #在本地新建feature-D分支,并切换到该分支下 |
三、在本地和 GitHub 上都已经存在该仓库
1、在本地和远程的 GitHub 上都已经存在该仓库,则在本地和 GitHub 上都不需要再重新创建该仓库了。只需要先将本地和远程的仓库之间创建联系。将本地 GitHub 上的该远程仓库设置为本地仓库的远程端。
2、具体操作如下:
1 | cd Test |
四、更新本地及远程仓库的分支
【注】:此时本地和远程上都已经有该仓库,只是其中有一个不是最新的
在多人同时开发,当本地仓库中的某一分支没有与远程仓库的该分支保持最新时,需要用 git pull
来获取最新的远程仓库分支。在本地进行修改之后可以用 git push
推送到 GitHub 上。
获取最新的远程仓库分支。远程仓库的 feature-D 分支是最新的状态,将本地的 feature-D 分支更新到这个最新的状态,此时 pull 后面要加上拉取分支的名称,来明确指定拉取哪个分支。
在本地仓库修改之后提交到远程仓库中,会根据使用的工具不同有不同的处理方式。在此主要考虑两个同步方式:(1) GitBash 命令行的方式, (2) TortoiseGit 图形界面的方式。这两种方式的主要区别在于提交命令 git commit 前的操作。
(1) 使用 GitBash 命令行时,本地的修改在 git commit
前必须要先将所有的改动 git add
到追踪中去,否则后续提交的将无法同步到远端
(2) 使用 TortoiseGit 图形界面时,只需要在首次增加新文件时需要 git add
命令来添加到版本追踪去,若后续再出现改动,直接 git commit
提交即可,无需再添加到版本控制中。