草庐IT

git命令行推送本地分支到远程仓库

_小许_ 2023-08-09 原文

之前说过Git与IDEA强强联合(HTTPS协议连接)那么如何使用命令行来推送代码呢?

如下图所示为一个基于layui的前端代码:


目录工作区文件:

本地内容就是将这些内容推送到远程仓库

首先使用git命令初始化git本地仓库:

  • git init创建本地仓库


以出现.git命令为参考:

创建git仓库后vs code也有颜色的变化:

除了颜色的变化外还有字母呢U,它们的含义是:

红色,未加入版本控制; 
绿色,已经加入版本控制暂未提交;
蓝色,加入版本控制,已提交,有改动;
白色,加入版本控制,已提交,无改动;
灰色:版本控制已忽略文件。

git文件标识:
A: 增加的文件.
C: 文件的一个新拷贝.
D: 删除的一个文件.
M: 文件的内容或者mode被修改了.
R: 文件名被修改了。
T: 文件的类型被修改了。
U: 文件没有被合并
X: 未知状态

然后绑定用户名和邮箱,便于记录提交者信息:

  • git config --global user.namegit config --global user.email


将需要提交的文件或代码提交到暂存区:

  • git add将文件添加到缓存区

如果之前选择在根目录的上级创建git仓库的话使用 git add [dir]dir为路径添加到缓存区,或者使用git add filename添加指定目录至缓存区。如果是在根目录内部,直接git add .将当前更改文件添加到缓存区,如下图所示:


warning: LF will be replaced by CRLF出现该警告的原因是不同系统下的换行符不一样,只需了解即可,git会自动检测系统内核,将换行符自动转换,具体了解请移步IDEA和VS code设置默认换行符为LF感谢作者!

由于git在push时会自动转换,所以直接统一格式,简单很多。这个得看个人用的上面系统,Windows默认是crlf,Linux默认是lf。直接将vs code的换行符改为LF,并且关闭自动转换,这样就不需要所谓的转换,在任何系统都可以使用。


注意将git的自动转换功能关闭:git config --global core.autocrlf false

git config --global core.autocrlf true
Git可以在你push时自动地把行结束符CRLF转换成LF,而在pull代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF,如果本来就是LF,就会两者自动转换。

git config --global core.autocrlf input
Linux或Mac系统使用LF作为行结束符;当一个以CRLF为行结束符的文件不小心被上传时需要进行修正,把core.autocrlf设置成input来告诉 Git 在push时把CRLF转换成LF,pull时不转换

git config --global core.autocrlf false  关闭自动转换功能

关闭后就不再警告了,但是本地的换行符必须是LF。

可以看到文件全部变成了A,已添加到了本地库:

  • git remote add origin [远程仓库地址]添加远程仓库

git remote -v查看远程仓库路径

git remote add origin [addr]添加远程仓库

登录gitee选择仓库,复制仓库地址,在命令行添加


https地址的地址的最后一位是仓库名,前面一位是账号。

在仓库管理中前面一位是仓库归属,很少用到,在gitee控制台才会用到;后面一位是仓库名,上传代码时使用:


更多请移步官方文档

回到添加远程地址,如图添加成功:

  • git commit -m “info”上传版本管理的分子区,也可以说是预提交区。

这里的文件或代码将会直接提交到远程仓库,如果某些文件不是必须的,需要在提交时在gitignore文件配置需要忽视的文件。

  • git push [远程仓库名] [本地分支]:[远程仓库]将当前分支push到远程仓库

推送到远程仓库有两种存储方式:

  • 一个仓库放一个工作区文件所以可以新建文
  • 一个仓库放多个工作区文件,需要新建文件夹

只放一个文件,这种方式更新换代容易,适用于长期维护的项目:

放多个文件,目录清晰,一个仓库放多个文件,可以用于放完整的项目文件:

一个项目的就比较容易了,直接推送即可。

放两多个文件夹的步骤如下

(1)在gitee上新建若干文件夹。

(2)将远程仓库直接克隆到本地

如下图所示在本地已经有了对应的文件夹(仓库内部):

(3)将需要上传的文件复制到对应目录下


在最外层也就是克隆远程仓库文件夹的目录下,将所有文件推送到远程仓库:

这里需要注意的是:

  1. 克隆下来的文件需要重新绑定远程地址
  2. 远程地址为新建文件外部的仓库
  3. 代码是提交到仓库的分支上,而不是仓库中

在gitee的管理界面的我的下面可以看到属于自己的两个仓库


这是我的仓库bolen,有独一无二的仓库地址https://....bolen.git,仓库是用来保存分支的。每个仓库都有一个默认的分支master

在gitee操作面板上可以看到分支,

那么如何添加到指定分支呢?比如,指定添加到bolen,master,或者server分支,这里有两个决定性因素:

  • 远程仓库地址
  • 分支名称

在推送时命令是git push [远程仓库名] [本地分支]:[远程分支名],这里远程仓库名和远程分支名确定了分支的唯一性。

使用git remote add origin [brachname]后绑定了新建的仓库,在推送到推送到master分支,或新建一个分支。通过仓库名和分支名决定分支唯一性。

(4)推送本地分支到远程仓库分支

之前已经将远程仓库克隆到本地了,而且将需要上传的代码复制到相应的文件夹下,再经过上面的配置,确定定了分支的唯一性,接下来上传到远程仓库,

上面红线的地方换为自己的分支名即可

如下图代码已上传到对应文件夹

在该仓库中也有两个文件夹,分别为项目的前端和后端

上传的到此结束了,重点在于仓库名和分支的唯一性,不然会出现各种错误。

  • git remote rm origin删除旧的远程仓库

如果父文件或当前文件远程仓库绑定错了可以删除旧文件夹再添加新建文件夹的仓库:

另外在推送到默认master文件夹时出现如下图错误的请移步git 上传出现“ ! [rejected] master -> master (non-fast-forward)”感谢作者!

这是一个简单的提交代码的部分,在实际开发会遇到很多问题,如分支的构建与融合,代码冲突,版本回退等将在遇到实际问题时图文跟新。

有关git命令行推送本地分支到远程仓库的更多相关文章

  1. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  4. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  5. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  6. ruby - 从 Ruby : capturing the output while displaying the output? 运行 shell 命令 - 2

    我有一个问题。我想从另一个ruby​​脚本运行一个ruby​​脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密

  7. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

  8. ruby - 在 Ruby 的 if 语句中检查 bash 命令 - 2

    如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最

  9. ruby - 在 Rails 项目中测试本地版本的 gem - 2

    我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行​​bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正

  10. ruby - 可以正常中断的来自 Rake 的长时间运行的 shell 命令? - 2

    在几个项目中,我希望有一个类似rakeserver的rake任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:task:serverdo%x{bundleexecrackup-p1234}end这行得通,但是当我准备停止它时,按Ctrl+c并没有正常关闭;它中断了Rake任务本身,它说rakeaborted!并给出堆栈跟踪。在某些情况下,我必须执行Ctrl+c两次。我可能可以用Signal.trap写一些东西来更优雅地中断它。有没有更简单的方法? 最佳答案 trap('SIGINT'){puts"Yourmessa

随机推荐