learn git(远程仓库github)

|由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

友情提示:在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。

如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。

 |创建远程库

 |关联远程库(根据github该仓库中的提示)***为github帐号(其中origin可修改为其他) learngit为你的仓库地址

$ git remote add origin git@github.com:***

把本地库的所有内容推送到远程库上:

$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
View Code

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

只要本地作了提交,就可以通过下面命令推送最新修改:

$ git push origin master

 (该步骤除了第1,2步之外与其他步骤无关联)克隆:远程库已经准备好了,下一步是用命令git clone克隆一个本地库(****为github帐号):

$ git clone git@github.com:****/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.

克隆远程指定分支 

git clone -b <指定分支名> <远程仓库地址>

删除已关联的名为origin的远程库:

git remote rm origin

 

多人协作的工作模式通常是这样:(分支推送到远程)

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

  • 查看远程库信息,使用git remote -v

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

  • 将回退后的版本强制推送到远程仓库 git push -f origin master
  • 如果git merge合并的时候出现refusing to merge unrelated histories的错误,原因是两个仓库不同而导致的,需要在后面加上--allow-unrelated-histories进行允许合并,即可解决

    如果还不能解决问题,就把本地的remote删除,重新git remote add添加远程仓库,再按上面的方法来,问题解决。

git pull 强制覆盖本地的代码方式,下面是正确的方法:

git fetch --all
然后,你有两个选择:

git reset --hard origin/master
或者如果你在其他分支上:

git reset --hard origin/<branch_name>
说明:

git fetch从远程下载最新的,而不尝试合并或rebase任何东西。

然后git reset将主分支重置为您刚刚获取的内容。 --hard选项更改工作树中的所有文件以匹配origin/master中的文件。

 

修改远程仓库地址方式3种: 

1.直接修改远程仓库地址

查看远程仓库地址

git remote -v

修改远程仓库地址

git remote set-url origin [url]

2、先删除再修改地址

git remote rm origin
git remote add origin [url]

3、直接修改配置文件

进入项目根目录
vim .git/config

找到[remote “origin”]下的url,改成新地址即可

4、通过第三方git客户端修改

以SourceTree为例,点击“设置 -> 远程仓库 -> 编辑”, 即可修改该项目下远程仓库地址, 点击“设置 -> 远程仓库 -> 编辑配置文件”, 则可如方法三修改配置文件。

 

posted @ 2019-05-18 23:21  study_php_java_C++  阅读(345)  评论(0编辑  收藏  举报