参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00150154460073692d151e784de4d718c67ce836f72c7c4000
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
http://blog.csdn.net/javafreely/article/details/18217273
https://blog.csdn.net/u011146511/article/details/77472378
git add. 添加到暂存区
git commit 提交到本地仓库
git push 提交到远程仓库
你可以按如下命令来生成 sshkey:
ssh-keygen -t rsa -C "[email protected]"
# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key
查看你的 public key,并把他添加到码云(Gitee.com) SSH key添加地址
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
添加后,在终端(Terminal)中输入
ssh -T git@gitee.com
若返回
Welcome to Gitee.com, yourname!
则证明添加成功。
=====xcode中的操作:
https://my.oschina.net/zxs/blog/142544
首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中。
git config --global user.name "你的名字或昵称"(这里填写码云的用户名名,即登录邮箱)
git config --global user.email "你的邮箱"
然后在你的需要初始化版本库的文件夹中执行:
//初始化本地仓库
cd 本地目录
git init
//第一次你想推送一个本地代码库到远程代码库时,
git remote add origin <你的项目地址> //注:项目地址形式为:https://gitee.com/xxx/xxx.git或者 git@gitee.com:xxx/xxx.git
这样就完成了一次版本你的初始化。
如果你想克隆一个项目,只需要执行:
git clone <项目地址>
进入你已经初始化好的或者克隆项目的目录,然后执行:
git pull origin master (如果必行用这个
git pull --rebase origin master
)<这里需要修改/添加文件,否则与原文件相比就没有变动>//添加文件到本地暂存区git add .
//提交到线上本地仓库git commit -m "第一次提交"
//提交到远程仓库
由于远程库是空的,我们第一次推送
master
分支时,加上了-u
参数,(git push -u origin master) ,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。git push origin master
然后如果需要账号密码的话就输入账号密码,这样就完成了一次提交。
按照本文档新建的项目时,在码云平台仓库上已经存在 readme 文件,故在提交时可能会存在冲突,这时您需要选择的是保留线上的文件或者舍弃线上的文件,如果您舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令:
git push origin master -f
如果您选择保留线上的 readme 文件,则需要先执行:
git pull origin master
然后才可以推送,如果发生冲突,则需要先解决冲突,关于如何处理冲突
错误解决:
、命名版本
$ git push sae master:1 #将此次上传的代码命名为版本1
7、一会后出现"Username for 'https://git.sinacloud.com':",在冒号后输入码云的账号邮箱,然后提示输入密码:是码云的密码;
8、出现"Password for 'https://[email protected]@git.sinacloud.com':",在冒号后输入SAE安全密码(有的git版本不会弹框,是看不到输入的哦),确认正确后回车,不要再动了,以免上传中断。
9、看到上传代码出现"Writing objects: 100%" ,则表示上传成功。
===========分支:
五部走:分支创建 -> 切换 -> 提交 -> 合并 -> 删除
1.先创建一个新分支提交改动
[objc] view plain copy
然后输入这条命令检查是否创建成功
[objc] view plain copy
这时终端输出
[objc] view plain copy
这样就创建成功了,前面的*代表的是当前你所在的工作分支。我们接下来就要切换工作分支。
[objc] view plain copy
注:也可以使用下面的命令,相等于上面的两部;
[objc] view plain copy
这样就切换完了,可以 $ git branch 确认下。然后你要将你的改动提交到新的分支上。
[objc] view plain copy
此时可以 $ git status 检查下提交情况。如果提交成功,我们接下来就要回主分支了,代码和之前一样。
[objc] view plain copy
然后我们要将新分支提交的改动合并到主分支上
[objc] view plain copy
合并分支可能产生冲突这是正常的,虽然我们这是新建的分支不会产生冲突,但还是在这里记录下。下面的代码可以查看产生冲突的文件,然后做对应的修改再提交一次就可以了。
[objc] view plain copy
我们的问题就解决了,接下来就可以push代码了。
[objc] view plain copy
新建分支的朋友别忘了删除这个分支,不放心的话可以git branch查看下。
[objc] view plain copy
如果想保留分支只是想删除已经合并的部分只要把大写的D改成小写的d就行了。
解决每次输入密码的问题:
https 方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受 https 带来的极速
设置记住密码(默认15分钟):
git config --global credential.helper cache
--global credential.helper cache
如果想自己设置时间,可以这样做:
git config credential.helper 'cache --timeout=3600'
.helper 'cache --timeout=3600'
这样就设置一个小时之后失效
长期存储密码:
git config --global credential.helper store
.helper store
增加远程地址的时候带上密码也是可以的。(推荐)
http://yourname:[email protected]/name/project.git
//yourname:[email protected]/name/project.git
补充:使用客户端也可以存储密码的。
如果你正在使用ssh而且想体验https带来的高速,那么你可以这样做: 切换到项目目录下 :
cd projectfile/
projectfile/
移除远程ssh方式的仓库地址
git remote rm origin
remote rm origin
增加https远程仓库地址
git remote add origin http://yourname:password@gitee.com/name/project.git
remote add origin http://yourname:password@gitee.com/name/project.git
处理代码冲突:
http://git.mydoc.io/?v=16912&t=83148
版本回退:
http://git.mydoc.io/?t=154703
一般来讲,默认情况下,在执行clone或者其他操作时,仓库名都是 origin 如果说我们想给他改改名字,比如我不喜欢origin这个名字,想改为 oschina 那么就要在仓库目录下执行命令:
git remote rename origin oschina
这样 你的远程仓库名字就改成了oschina,同样,以后推送时执行的命令就不再是 git push origin master 而是 git push oschina master 拉取也是一样的
在不执行克隆操作时,如果想将一个远程仓库添加到本地的仓库中,可以执行
git remote add origin 仓库地址
注意: 1.origin是你的仓库的别名 可以随便改,但请务必不要与已有的仓库别名冲突 2. 仓库地址一般来讲支持 http/https/ssh/git协议,其他协议地址请勿添加
git remote -v
这条命令能显示你当前仓库中已经添加了的仓库名和对应的仓库地址,通常来讲,会有两条一模一样的记录,分别是fetch和push,其中fetch是用来从远程同步 push是用来推送到远程
git remote set-url origin 仓库地址
=============同时关联两个远程库:注意事项:origin要改名称
参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00150154460073692d151e784de4d718c67ce836f72c7c4000
项目名称最好与本地库保持一致:
然后,我们在本地库上使用命令git remote add
把它和码云的远程库关联:
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
之后,就可以正常地用git push
和git pull
推送了!
如果在使用命令git remote add
时报错:
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
fatal: remote origin already exists.
这说明本地库已经关联了一个名叫origin
的远程库,此时,可以先用git remote -v
查看远程库信息:
git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
可以看到,本地库已经关联了origin
的远程库,并且,该远程库指向GitHub。
我们可以删除已有的GitHub远程库:
git remote rm origin
再关联码云的远程库(注意路径中需要填写正确的用户名):
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
此时,我们再查看远程库信息:
git remote -v
origin git@gitee.com:liaoxuefeng/learngit.git (fetch)
origin git@gitee.com:liaoxuefeng/learngit.git (push)
现在可以看到,origin已经被关联到码云的远程库了。通过git push
命令就可以把本地库推送到Gitee上。
有的小伙伴又要问了,一个本地库能不能既关联GitHub,又关联码云呢?
答案是肯定的,因为git本身是分布式版本控制系统,可以同步到另外一个远程库,当然也可以同步到另外两个远程库。
使用多个远程库时,我们要注意,git给远程库起的默认名称是origin
,如果有多个远程库,我们需要用不同的名称来标识不同的远程库。
仍然以learngit
本地库为例,我们先删除已关联的名为origin
的远程库:
git remote rm origin
然后,先关联GitHub的远程库:
git remote add github git@github.com:michaelliao/learngit.git
注意,远程库的名称叫github
,不叫origin
了。
接着,再关联码云的远程库:
git remote add gitee git@gitee.com:liaoxuefeng/learngit.git
同样注意,远程库的名称叫gitee
,不叫origin
。
现在,我们用git remote -v
查看远程库信息,可以看到两个远程库:
git remote -v
gitee git@gitee.com:liaoxuefeng/learngit.git (fetch)
gitee git@gitee.com:liaoxuefeng/learngit.git (push)
github git@github.com:michaelliao/learngit.git (fetch)
github git@github.com:michaelliao/learngit.git (push)
如果要推送到GitHub,使用命令:
git push github master
如果要推送到码云,使用命令:
git push gitee master
这样一来,我们的本地库就可以同时与多个远程库互相同步: