Git上传项目至远程仓库与同步到本地

转载自<http://blog.csdn.net/luckyyulin/article/details/21090905>

(1) 首先在本地创建ssh key;

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

 后面的your_email@youremail.com改为你的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。回到github,进入Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴key。

 

 (2)为了验证是否成功,在git bash下输入:

 $ ssh -T git@github.com 

如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。

 


 

 

 

 

 

 

 (3)接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

 $ git config --global user.name "your name" 

 $ git config --global user.email "your_email@youremail.com"

 (4)进入要上传的仓库,右键git bash,添加远程地址:

$ git remote add origin git@github.com:yourName/yourRepo.git

 后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。origin是该远程仓库的别名,叫其它的也可以(比如myrepo),完成该步骤之后#git remote可以查看当前添加了哪些远程仓库。

 

    4.提交、上传
  (1)接下来在本地仓库里添加一些文件,比如README,

  $ git add README

git add把README文件添加到暂存区(stage),采用git status命令可以查看暂存区存储了哪些修改。

 $ git commit -m "first commit" 

git commit把暂存区的内容写入本地仓库,清空暂存区
   (2)上传到github:

  $ git push origin master 

git push命令会将本地仓库推送到远程服务器。
   git pull命令则相反。
   修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。
 
  5.gitignore文件
 .gitignore顾名思义就是告诉git需要忽略的文件,这是一个很重要并且很实用的文件。一般我们写完代码后会执行编译、调试等操作,这期间会产生很多中间文件和可执行文件,这些都不是代码文件,是不需要git来管理的。我们在git status的时候会看到很多这样的文件,如果用git add -A来添加的话会把他们都加进去,而手动一个个添加的话也太麻烦了。这时我们就需要.gitignore了。比如一般c#的项目我的.gitignore是这样写的:

 

bin
.suo
obj

 

bin和obj是编译目录,里面都不是源代码,忽略;suo文件是vs2010的配置文件,不需要。这样你在git status的时候就只会看到源代码文件了,就可以放心的git add -A了。

 

2、首次clone远程仓库+修改后push

直接复制远程仓库对应的https地址进行clone, 如果不想用默认的名字,可以指定本地的工作区名称(如:wingters)

$ git clone git://github.com/wingter/wingtersproject.git wingters

clone下来是整个文件夹(所以不必提前在本地创建文件夹),会自带有.git, 所以不必在本地进行git init

同时git已经自动的在该工作区进行fetch和merge了

现在可以在本地进行修改,按上面提到的方法add, commit和push

如果push失败(要求先进行Pull),并且确定是本地的仓库更加新,则先进行pull --rebase

$ git pull --rebase wingters master

这样本地就完成了分支合并,git认为远程仓库的之前内容已经合并到本地,接着可以push了。

 

3、从远程仓库同步到本地(转载自http://www.yiibai.com/git/git_pull.html)

git pull命令用于从另一个存储库或本地分支获取并集成(整合)。git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并,它的完整格式稍稍有点复杂。

使用语法

git pull [options] [<repository> [<refspec>…]]

Shell

描述

将远程存储库中的更改合并到当前分支中。在默认模式下,git pullgit fetch后跟git merge FETCH_HEAD的缩写。

更准确地说,git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。 使用--rebase,它运行git rebase而不是git merge

示例

以下是一些示例 -

$ git pull <远程主机名> <远程分支名>:<本地分支名>

Shell

比如,要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样 -

$ git pull origin next:master

Shell

如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:

$ git pull origin next

Shell

上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再执行git merge

$ git fetch origin
$ git merge origin/next

Shell

在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。

Git也允许手动建立追踪关系。

$ git branch --set-upstream master origin/next

Shell

上面命令指定master分支追踪origin/next分支。

如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

$ git pull origin

Shell

上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。

$ git pull

Shell

上面命令表示,当前分支自动与唯一一个追踪分支进行合并。

如果合并需要采用rebase模式,可以使用–rebase选项。

$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

Shell

 

git fetch和git pull的区别

  1. git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
$ git fetch origin master
$ git log -p master..origin/master
$ git merge origin/master

Shell

以上命令的含义:

  • 首先从远程的originmaster主分支下载最新的版本到origin/master分支上
  • 然后比较本地的master分支和origin/master分支的差别
  • 最后进行合并

上述过程其实可以用以下更清晰的方式来进行:

$ git fetch origin master:tmp
$ git diff tmp 
$ git merge tmp

Shell

2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

Shell

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。

 

4、撤回commit之后的部分修改(比如不想提交的文件,且之前还未加入到.gitignore中)

git rm --cache -r idea/

其中-r应用于整个文件夹dir

这样本地仓库里相应的文件记录就被移除了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值