git本地创建 push仓库_[git]-本地创建仓库并推送GitHub服务器

从本地创建仓库并推送git服务器

上面的仓库创建方式是git用户建立仓库,其他用户通过git clone的方式来下载的。如果我们想把我们的已有项目创建为git仓库并推送到git服务器,那么请继续往下看。

先学习一下基本的知识

先 git clone一个你GitHub下面的项目

git clone https://github.com/schacon/ticgit

查看远程仓库 git remote

git remote -v 指定-v 选项会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。

origin https://github.com/schacon/ticgit (fetch)

origin https://github.com/schacon/ticgit (push)

添加远程仓库 git remote add

git remote add 添加一个新的远程 Git 仓库,同时指定一个方便使用的简写:

可以在命令行中使用字符串 pb 来代替整个 URL,常常也是这么干的

// 添加 远程库 并起一个方便使用的简写pb

git remote add pb https://github.com/paulboone/ticgit

// 添加完成可以使用 git remote -v 查看一下

git remote -v

origin https://github.com/schacon/ticgit (fetch)

origin https://github.com/schacon/ticgit (push)

pb https://github.com/paulboone/ticgit (fetch)

pb https://github.com/paulboone/ticgit (push)

从远程仓库中抓取与拉取 git fetch

如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch

这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

git fetch origin

推送到远程仓库 git push

当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字), 那么运行这个命令就可以将你所做的备份到服务器:

git push origin master

只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先抓取他们的工作并将其合并进你的工作后才能推送。

查看某个远程仓库 git remote show

$ git remote show origin

* remote origin

Fetch URL: https://github.com/schacon/ticgit

Push URL: https://github.com/schacon/ticgit

HEAD branch: master

Remote branches:

master tracked

dev-branch tracked

Local branch configured for ‘git pull‘:

master merges with remote master

Local ref configured for ‘git push‘:

master pushes to master (up to date)

它同样会列出远程仓库的 URL 与跟踪分支的信息。 这些信息非常有用,它告诉你正处于 master 分支,并且如果运行 git pull, 就会抓取所有的远程引用,然后将远程 master 分支合并到本地 master 分支。 它也会列出拉取到的所有远程引用。

远程仓库的重命名与移除

git remote rename

// 想要将 pb 重命名为 paul

git remote rename pb paul

值得注意的是这同样也会修改你所有远程跟踪的分支名字。 那些过去引用 pb/master 的现在会引用 paul/master。

如果因为一些原因想要移除一个远程仓库——你已经从服务器上搬走了或不再想使用某一个特定的镜像了, 又或者某一个贡献者不再贡献了——可以使用git remote remove 或 git remote rm

git remote remove paul

本地创建项目仓库和github创建的仓库的两个强制在一起

ps: 先在你的GitHub上面创建一个仓库。

一下在你的机器上(也就是本地)执行

// 1. 约定你的git项目都在git目录下。 新建一个project目录

mkdir -p /home/tudou/git/project

// 2. 进入到该目录中并创建项目所需的文件。留在这个目录并启动 git

cd /home/tudou/git/project

// 3. 初始化该目录为git仓库

git init

// 4. 添加文件 . 代表所有

git add .

// 5. 提交 -a 代表所有

git commit -m "message" -a

// 如果只想提交某个文件

git commit -m "message" readme.md

注意 在本地创建仓库,是新建一个project文件夹在下面git init. 这和在服务器端不同,需要注意。

以上都是在我们本机上工作,现在我们把这些更改推送到远程服务器上。

1.关联github上面的项目

在本地的仓库下运行命令:

语法:git remote add origin ssh://git@remote-server/repoxxx.git ssh:// 这个是协议,可以省略。

// 注意,如果是github,而且使用的是ssh GitHub上面的地址如下 git@github.com:tudouloveloli/learngit.git

git remote add origin git@github.com:tudouloveloli/sample.git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库(参考前文提到的git remote add的语法)。

// 1、先删除远程 Git 仓库

$ git remote rm origin

// 2. 再添加远程 Git 仓库

$ git remote add origin git@github.com:tudouloveloli/sample.git

2. 先拉取GitHub上面的到本地 git pull origin master

其实这个问题是因为两个根本不相干的git库,一个是本地库,一个是远端库, 然后本地要去推送到远端,远端觉得这个本地库跟自己不相干,所以告知无法合并.

具体的方法:

方法1:从远端库拉下来代码,本地要加入的代码放到远端库下载到本地的库, 然后提交上去,因为这样的话,你基于的库就是远端的库,这是一次update了

方法2:

使用这个强制的方法

git pull origin master --allow-unrelated-histories

后面加上 --allow-unrelated-histories把两段不相干的分支进行强行合并

后面再push就可以了 git push origin master

3. 推送本地内容到远程库

git push -u origin master 就可以把本地库的所有内容推送到远程库上:

如果远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

4. 推送成功后,可以立刻在GitHub看到变化

5. 从现在起,只要本地作了提交,就可以通过命令:git push origin master

如果是orign master 甚至可以简写为git push。

注意,时时刻刻还是那个原则,先拉取后推送。

最佳实践

在GitHub建立好仓库

在本地git clone

本地代码放到clone下来的仓库下面。

写代码 add--> commit --> pull --> push

如果你看完了全文,就能体会这样可以免去很多不必要的麻烦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值