文章目录
列下重要命令格式
- git push <远程主机名> <本地分支名>:<远程分支名>。如果加上参数"-u",那么提交的本地分支就会成为追踪分支。
- git fetch <远程主机名> <远程分支名>:<本地分支名>
- git pull <远程主机名> <远程分支名>:<本地分支名>
- git checkout -b <本地分支名> <远程主机名>/<远程分支名>。该命令创建本地分支跟踪分支<本地分支名>,并从远程分支<远程主机名>/<远程分支名>拉取代码
# 如果在不想和远程有任何的瓜葛,则执行remote remove。
# 执行该命令前,git branch -a有本地分支master和远程分支master,git branch -vv显示这两者关联起来的。
# 执行该命令后,git branch -a只有本地分支,git branch -vv显示master这个本地分支,但它不再是远程分支。
git remote remove origin
# 最后检查一遍本地的branch,是否包含了所有远程的branch
git branch
从远程分支中检出本地分支会自动创建所谓的跟踪分支。跟踪分支是与远程分支有直接关系的本地分支。如果你在追踪分支并键入git push,Git会自动知道推送到哪个服务器和分支。同时,在其中一个分支上运行git pull会获取所有远程引用,然后自动合并到相应的本地分支中。
Git中的"追踪分支"的作用:简化推(git push)拉(git pull)命令。
一、已有本地项目,要把该项目推送到新建的远程仓库
情况:目前在gitee上新建了个名字是HelloWorld,地址是https://gitee.com/snow_night/hello-world的远程仓库,现在想把本地的SpringBoot项目推送到这个远程仓库。
方式一、关联远程库,然后推送
# 在要推送的项目的目录下,打开Git Bash Here
$ git init
$ git remote add origin git@gitee.com:snow_night/hello-world.git
# git pull <远程主机名> <远程分支名>:<本地分支名>
$ git pull --rebase origin master # 这句命令,会把远程库里的master分支的内容(不是hello-world文件夹)拉取到当前文件夹里,但master分支此时不是追踪分支。
$ git add .
$ git commit -m "提交个Springboot项目"
# git push <远程主机名> <本地分支名>:<远程分支名>。如果加上参数"-u",那么提交的本地分支就会成为追踪分支。
$ git push origin master
方式二、clone远程库,然后推送
# 这个命令,会克隆一个hello-world文件夹到当前文件夹里,文件夹内是远程库里的master分支内容
$ git clone git@gitee.com:snow_night/hello-world.git
$ cd hello-world
|
|
# 在要推送的项目的目录下(上方的右侧图),打开Git Bash Here
$ git add .
$ git commit -m "提交个Springboot项目"
$ git push origin master
二、把远程仓库关联/克隆到本地,修改然后push回去
情况:目前在gitee上有个名字是HelloWorld,地址是https://gitee.com/snow_night/hello-world的远程仓库,现在想先拉取该仓库的所有分支,然后在本地修改该仓库的内容然后推送回去。
以下两种方式,都要在本地先新建个空文件夹,名字无所谓。然后在该文件夹中打开Git Bash Here,然后执行下方命令。
方式一、关联远程库,然后推送
$ git init
$ git remote add --fetch --tags origin git@gitee.com:snow_night/hello-world2.git
# git checkout -b <branch> <remote>/<remote-branch>,该命令创建本地分支跟踪分支<branch>,并从远程分支<remote>/<remote-branch>拉取代码
$ git checkout -b master origin/master
$ git checkout -b develop origin/develop
# 这里修改一下pull下来的项目
$ git add .
$ git commit -m "修改README.md文件,增加“命令”两字"
$ git push origin master
演示图片
方式二、clone远程库(包括多个分支),然后推送
# 这个命令,会克隆一个hello-world文件夹到当前文件夹里,文件夹内是远程库里的master分支内容,即创建本地分支跟踪分支master,并从远程分支master拉取代码
$ git clone git@gitee.com:snow_night/hello-world.git
$ cd hello-world
# git checkout -b <branch> <remote>/<remote-branch>,该命令创建本地分支跟踪分支<branch>,并从远程分支<remote>/<remote-branch>拉取代码
$ git checkout -b develop origin/develop
# 这里可以用git switch <branch>切换本地分支,工作区的内容也会对应更改
# 这里修改一下clone下来的项目
$ git add .
$ git commit -m "修改README.md文件,增加了‘的’字"
# git push <远程主机名> <本地分支名>:<远程分支名>
$ git push origin master
演示图片
常见错误
1、
dell@DESKTOP-4OG2TJ0 MINGW64 /d/Desktop/gitcode (master)
$ git commit
Aborting commit due to empty commit message. #由于提交消息为空,正在中止提交。
解决:必须要提交注释信息,如git commit -m "update xxx文件"
。
2、
dell@DESKTOP-4OG2TJ0 MINGW64 /d/Desktop/hello-world (master)
$ git push origin master
To gitee.com:snow_night/hello-world.git
! [rejected] master -> master (fetch first)
# 错误:无法将某些引用推送到'gitee.com:snow_night/hello-world.git'
error: failed to push some refs to 'gitee.com:snow_night/hello-world.git'
# 提示:更新被拒绝,因为远程包含本地没有的工作。这通常是由另一个存储库推送到同一个ref引起的。
# 您可能希望在再次推送之前先集成远程更改(例如,“git pull…”)。
# 有关详细信息,请参阅“git push--help”中的“关于fast-forwards的说明”。
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
解决:用命令git pull --rebase origin master
将github修改的文件更新到本地,然后直接用git push
提交。
不需要再次git add
和git commit
,因为git pull=git fetch + git merge
,git merge
会把本地库内容和下载的远程库内容合并后,提交到本地仓库。
3、
dell@DESKTOP-4OG2TJ0 MINGW64 /d/Desktop/hello (master)
$ git push origin master
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository. # 致命:无法从远程存储库读取。
Please make sure you have the correct access rights
and the repository exists.
解决:用git remote add origin git@gitee.com:snow_night/hello-world.git
关联远程库后,才能推送。