标签:ref 备份 xxx ranch 基本 方案 解决 ini tail
上面的仓库创建方式是git用户建立仓库,其他用户通过git clone的方式来下载的。如果我们想把我们的已有项目创建为git仓库并推送到git服务器,那么请继续往下看。
这里是学习的官网的演示代码,假设clone的仓库为 https://github.com/schacon/ticgit
git clone https://github.com/schacon/ticgit
git remote -v 指定-v
选项会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
更多用法参考Git 基础 - 远程仓库的使用
git remote add
可以在命令行中使用字符串 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)
如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch <remote>
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
git fetch origin
当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字), 那么运行这个命令就可以将你所做的备份到服务器:
git push origin master
只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先抓取他们的工作并将其合并进你的工作后才能推送。
$ 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
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
. 这和在服务器端不同,需要注意。
以上都是在我们本机上工作,现在我们把这些更改推送到远程服务器上。
在本地的仓库下运行命令:
语法: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的语法)。
fatal: remote origin already exists错误的解决方案
// 1、先删除远程 Git 仓库
$ git remote rm origin
// 2. 再添加远程 Git 仓库
$ git remote add origin git@github.com:tudouloveloli/sample.git
git原则,推送之前都要先拉取。
git pull 失败 ,提示:fatal: refusing to merge unrelated histories
其实这个问题是因为两个根本不相干的git库,一个是本地库,一个是远端库, 然后本地要去推送到远端,远端觉得这个本地库跟自己不相干,所以告知无法合并.
具体的方法:
方法1:从远端库拉下来代码,本地要加入的代码放到远端库下载到本地的库, 然后提交上去,因为这样的话,你基于的库就是远端的库,这是一次update了
方法2:
使用这个强制的方法
git pull origin master --allow-unrelated-histories
后面加上
--allow-unrelated-histories
把两段不相干的分支进行强行合并
后面再push就可以了git push origin master
git push -u origin master
就可以把本地库的所有内容推送到远程库上:
如果远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push origin master
如果是orign master 甚至可以简写为git push。
注意,时时刻刻还是那个原则,先拉取后推送。
如果你看完了全文,就能体会这样可以免去很多不必要的麻烦。
标签:ref 备份 xxx ranch 基本 方案 解决 ini tail
原文地址:https://www.cnblogs.com/__tudou__/p/12718870.html