git快速入门之一:创建本地仓库并同步到远程
原文地址:http://www.yyztech.com/archives/38/
Git是非常强大的版本管理工具。接下来的时间里,我就和大家絮叨絮叨git的入门:如何在本地创建一个git仓库,并把自己的本地代码同步到远程。此教程是在mac上操作的,如果您的系统是Linux,那么操作方法相同;如果您的系统是windows,那么,只需要把git的bash窗口调出来,以后的过程也都与linux相同。
一、首先,您需要安装git,此步就忽略了,自行安装即可。
二、假设你目前还没有创建一个工作目录,那么,先创建一个目录吧,就叫StudyGit。
三、现在的StudyGit目录还只是一个本地目录,和git没有任何关联,那么,我们怎么样才能把这个目录和git关联起来呢?只需要进入StudyGit目录,运行如下命令:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git init
Initialized empty Git repository in /Users/yanyaozhen/Coding/Practice/StudyGit/.git/
提示已经说明我们初始化了一个空的本地git仓库。如果你查看StudyGit下的所有文件时,会发现一个.git 的隐藏文件,这个文件非常重要,版本的控制就靠它了。同时,如果你要部署应用程序到生产环境时,切记不要把该目录部署到服务器,因为这可是黑客的最爱啊!
四、接下来我们来看一个基本可以说是用的最频繁的一个命令:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
没错,就是"git status"。这个命令用于查看当前git的状态,比如,上面的例子中,我们刚创建了一个空的git仓库,那么运行该指令时,git会提示我们,当前没有任何东西要提交,同时提示我们,可以创建或者复制文件后使用“git add”命令来跟踪文件的变化。
五、现在让我们来创建一个文件吧。我们创建一个叫“a.txt”的文本文件,并且内容如下:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ cat a.txt
aaa
这个时候,让我们再来运行下git status吧。运行如下:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
a.txt
nothing added to commit but untracked files present (use "git add" to track)
这时会提示我们有一个未追踪的文件,叫a.txt。我们要把这个文件加入到版本控制中,于是,我们运行如下命令:
git add a.txt
这个命令表示把我们指定的a.txt加入到git控制之下。add命令可以没有参数(在windows下可以没有参数,在mac下需要指定当前目录即“.”),如果没有参数,则表示把目录下的所有文件都加入到git仓库中。这个时候,我们再运行下“git status”:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: a.txt
提示我们有改变需要被提交。这个时候,a.txt这个文件就存在于所谓的“暂存区”中,暂存区中的文件可以被真正提交到git仓库。有同学可能说,如果我不想提交这个文件了,那怎么把刚才的文件从暂存区移除呢?其实答案就在刚才的提示中:
use "git rm --cached <file>..." to unstage。
那么,我们运行下这个命令:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git rm --cached a.txt
rm 'a.txt'
再运行git status时就可以发现,又回到文件没有被提交时的状态了。
六、当我们的文件已经通过“git add”加入到暂存区后,就可以把文件真正提交到git仓库了。如下:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git commit -m "提交a.txt"
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'yanyaozhen@macbookpro.(none)')
阿欧,报错了,查看给出的错误原因,发现是因为没有设置email和用户名,所以git不让我提交。git为什么要强制要求设置了这两个配置才能提交呢?因为git必须得知道是谁提交的,如果连谁提交的都不知道,那还怎么做版本管理啊,是不。所以我们根据提示设置下:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git config --global user.email "youremail@example.com"
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git config --global user.name "yourusername"
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$
好了,我们再提交下:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git commit -m "提交a.txt"
[master (root-commit) dab07d0] 提交a.txt
1 file changed, 1 insertion(+)
create mode 100644 a.txt
发现已经可以提交成功了,提示一个文件被修改(就是我们的a.txt),一行被插入(就是我们唯一的一行“aaa”)。
我们再运行下git status:
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status
On branch master
nothing to commit, working directory clean
提示我们当前没有东西要提交,当前工作目录是干净的,因为我们都提交到git了。
好了,到这步后,git就可以完全跟踪已经被提交的文件了,以后,这个文件的任何修改,它都可以记录下来。比如某个人对项目私自修改了一些东西,项目管理者根据git的版本记录是一定可以找到是谁修改了哪些文件的。
现在我们就可以把文件提交到远程服务器了。
七、当我们要提交git仓库中的内容到远程服务器时,我们必须得先成为远程服务器受信任的用户才行(服务器当然不允许所有人都可以推送内容,那样就乱套了)。这个时候,我们需要先在本地生成一个公钥,然后把公钥放到远程服务器的账户列表中。生成公钥的命令如下:
ssh-keygen -t rsa -C "youremail@example.com"
如果你是windows用户,那么公钥生成的目录是C:\Users\用户名\.ssh下,里面有两个文件 id_rsa 和 id_rsa.pub ,其中id_rsa.pub中的内容就是我们需要的公钥。如果你是Linux或者mac用户,那么在用户主目录下也会有一个.ssh目录,里面放着的是私钥和公钥。假设我们现在要把github作为远程推送服务器地址,那么,我们首先把公钥放在github的settings->SSH keys列表中(点击新建一个ssh key,title随意,把公钥的全部内容复制进行保存即可)。
八、现在我们可以给StudyGit项目在github上添加一个远程仓库了。在github上add new repository,名字我在这里也用StudyGit了(起其他名字也可以),建好后显示如下:
可以看到有一个ssh地址是git@github.com:onlyanyz/StudyGit.git,这个就是我们的远程git仓库地址了,一会我们就会把文件推送到这里。
接下来,我们需要把本地git仓库关联到远程git仓库,操作如下:进入本地StudyGit根目录,执行如下命令:
git remote add origin git@github.com:onlyanyz/StudyGit.git
这个命令的意思是,我给远程仓库(就是git@github.com:onlyanyz/StudyGit.git)起了个别名,叫origin(其实叫别的名字也可以,你只要知道这是别名就行,以后就用别名来操作远程库)。操作后,我们可以使用“git remote”命令来查看当前本地仓库关联了哪些远程仓库(它会列出每个远程库的简短名字。如果您之前会使用git clone命令的话,在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git默认使用这个名字来标识你所克隆的原始仓库)。
九、关联了远程仓库之后,我们就可以推送了。将本地仓库push到远程仓库的命令如下:
git push origin master
命令解释如下:
git push的语法为:git push <远程主机名> <本地分支名>:<远程分支名>
该语法表示把本地分支名push到远程主机名的远程分支。我们可以看到刚才执行的语句并没有远程分支名(被省略了),如果省略远程分支名,则表示将本地分支推送到与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。所以刚才执行的语句的意思是,把本地的master分支推送到远程主机的master分支。
关于git push命令以后还需要注意的地方:
a.如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。例如:
$ git push origin :master
该命令等同于如下指令:`$ git push origin --delete master`,表示删除远程主机的master分支。
b.git push 有时候本地分支和远程分支名都可以省略,有时候连主机名也可以省略,这个现在就不细说了。
c.如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push:
$ git push -u origin master
好了,现在我们已经把StudyGit目录中的内容都推送到远程了,现在运行git status看下:
~/Coding/Practice/StudyGit$ git status
On branch master
nothing to commit, working directory clean
工作目录还是干净的,接下来您就可以继续在本地进行创建文件->提交到暂存区->提交到本地仓库->push到远程仓库的过程啦!
git快速入门之一:创建本地仓库并同步到远程相关推荐
- Git学习系列(二)创建本地仓库及文件操作
2019独角兽企业重金招聘Python工程师标准>>> 仓库(repository ),我们也成它为版本库.这个库里面的所有文件(包括对文件的添加.删除.修改等操作)都被Git管理起 ...
- 快速通过git创建本地仓库
1.先创建一个欲作为master的目录,此处为aaa.其中有如下文件. 2.在git shell中进入aaa目录git init初始化目录后就是将其建成一个仓库(其作为仓库名并且是主分支master) ...
- git 创建本地仓库、远程仓库,上传项目
1.在本地想创建git仓库的地方创建本地仓库 首先右键打开 Git Bash Here,如果没有,请先安装git,下载地址:https://git-scm.com/downloads git init ...
- 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中
转自原文 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中 1. 先远程登录局域网内服务器 2. 在服务器里 切换到某个文件夹下, 然后新建一个文件夹用作git仓库(文件夹名最好跟准备推 ...
- 01git创建本地仓库及操作入门
git工作流程图 git常用命令 命令 作用 git init 初始化,创建 git 仓库 git status 查看 git 状态 (文件是否进行了添加.提交操作) clone (克隆) 从远程仓库 ...
- git创建本地仓库和github仓库
原文链接 git创建仓库 创建本地仓库 前提:已经在本地安装好git环境 首先新建一个文件夹,linux环境下命令如下(其它环境自己动手建吧): mkdir test (创建test文件夹) cd t ...
- Git学习之旅:Mac安装Git与创建本地仓库(一)
Git简述:版本管理工具,git的英文直译就是饭桶.最初只应用于linux,现在应用十分广泛. git一般工作流程:1.从远程仓库中克隆Git资源作为本地仓库.2.从本地仓库中checkout代码然后 ...
- git 创建本地仓库与 gitcafe 关联
git init # 创建本地仓库 # 设置远程仓库地址,这里可以设置ssh 或 https 的形式,此处设置为https 格式, # ssh 格式为 : git remote add origin ...
- git快速入门 push/clone/reset/merge/切换分支全都有
本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...
- Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)
Git快速入门篇-- Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程) 前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问 ...
最新文章
- 谁在引领中国制造?中国智能制造发展解析
- java开发都需要学什么
- 有关JNLP中传SESSIONID为参数的问题
- python中的常量可以修改吗_深入理解Python变量与常量
- 屏幕的宽度_交互规范:响应式让屏幕利用更高,用户体验更佳
- mysql 安装no key_No package mysql-server available错误解决(centos mysql安装教程)
- MFC字符串操作(一)MFC CString 成员函数用法大全
- 山东烟建借沟通CTBS实现财务数据大集中
- 大学计算机基础试题第一套,大学计算机基础试题及答案(完整版)
- addEventListener和attachEvent
- stm32 PWM波
- PHP微信h5棋牌搭建sprintf()函数的使用
- 城市聚焦:全球十二大性感之城
- 【Metal2剖析(三):OIT顺序无关透明渲染[Imageblock]】
- 自动祝福程序(定时发送消息)
- html计算平方米,尺和平方米换算(尺与平方米换算计算器)
- PMCAFF转载——网易云课堂产品研习
- 支付宝17年新春红包技术体系剖析
- Go-boomer-locust
- 一、Java语言简介
热门文章
- 一些实用但不为人知的Unix命令
- Mysql数据备份与mysqldump增量备份
- EDI Party Resolution in Biztalk R2
- MyBatis自动生成步骤
- Js 日期选择,可以的一个页面中重复使用本JS日历,兼容IE及火狐等主流浏览器,而且界面简洁、美观,操作体验也不错。...
- 关于co-NP的理解
- 关于机器学习一些好的博客和资料
- 孙鑫VC学习笔记:第十一讲 (四) 图形重绘方法三 利用兼容DC
- docker安装mysql5.7_docker安装mysql5.7
- 拓端tecdat|R语言模拟和预测ARIMA模型、随机游走模型RW时间序列趋势可视化