原文地址: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快速入门之一:创建本地仓库并同步到远程相关推荐

  1. Git学习系列(二)创建本地仓库及文件操作

    2019独角兽企业重金招聘Python工程师标准>>> 仓库(repository ),我们也成它为版本库.这个库里面的所有文件(包括对文件的添加.删除.修改等操作)都被Git管理起 ...

  2. 快速通过git创建本地仓库

    1.先创建一个欲作为master的目录,此处为aaa.其中有如下文件. 2.在git shell中进入aaa目录git init初始化目录后就是将其建成一个仓库(其作为仓库名并且是主分支master) ...

  3. git 创建本地仓库、远程仓库,上传项目

    1.在本地想创建git仓库的地方创建本地仓库 首先右键打开 Git Bash Here,如果没有,请先安装git,下载地址:https://git-scm.com/downloads git init ...

  4. 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中

    转自原文 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中 1. 先远程登录局域网内服务器 2. 在服务器里 切换到某个文件夹下, 然后新建一个文件夹用作git仓库(文件夹名最好跟准备推 ...

  5. 01git创建本地仓库及操作入门

    git工作流程图 git常用命令 命令 作用 git init 初始化,创建 git 仓库 git status 查看 git 状态 (文件是否进行了添加.提交操作) clone (克隆) 从远程仓库 ...

  6. git创建本地仓库和github仓库

    原文链接 git创建仓库 创建本地仓库 前提:已经在本地安装好git环境 首先新建一个文件夹,linux环境下命令如下(其它环境自己动手建吧): mkdir test (创建test文件夹) cd t ...

  7. Git学习之旅:Mac安装Git与创建本地仓库(一)

    Git简述:版本管理工具,git的英文直译就是饭桶.最初只应用于linux,现在应用十分广泛. git一般工作流程:1.从远程仓库中克隆Git资源作为本地仓库.2.从本地仓库中checkout代码然后 ...

  8. git 创建本地仓库与 gitcafe 关联

    git init # 创建本地仓库 # 设置远程仓库地址,这里可以设置ssh 或 https 的形式,此处设置为https 格式, # ssh 格式为 : git remote add origin ...

  9. git快速入门 push/clone/reset/merge/切换分支全都有

    本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...

  10. Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    Git快速入门篇-- Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程) 前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问 ...

最新文章

  1. 谁在引领中国制造?中国智能制造发展解析
  2. java开发都需要学什么
  3. 有关JNLP中传SESSIONID为参数的问题
  4. python中的常量可以修改吗_深入理解Python变量与常量
  5. 屏幕的宽度_交互规范:响应式让屏幕利用更高,用户体验更佳
  6. mysql 安装no key_No package mysql-server available错误解决(centos mysql安装教程)
  7. MFC字符串操作(一)MFC CString 成员函数用法大全
  8. 山东烟建借沟通CTBS实现财务数据大集中
  9. 大学计算机基础试题第一套,大学计算机基础试题及答案(完整版)
  10. addEventListener和attachEvent
  11. stm32 PWM波
  12. PHP微信h5棋牌搭建sprintf()函数的使用
  13. 城市聚焦:全球十二大性感之城
  14. 【Metal2剖析(三):OIT顺序无关透明渲染[Imageblock]】
  15. 自动祝福程序(定时发送消息)
  16. html计算平方米,尺和平方米换算(尺与平方米换算计算器)
  17. PMCAFF转载——网易云课堂产品研习
  18. 支付宝17年新春红包技术体系剖析
  19. Go-boomer-locust
  20. 一、Java语言简介

热门文章

  1. 一些实用但不为人知的Unix命令
  2. Mysql数据备份与mysqldump增量备份
  3. EDI Party Resolution in Biztalk R2
  4. MyBatis自动生成步骤
  5. Js 日期选择,可以的一个页面中重复使用本JS日历,兼容IE及火狐等主流浏览器,而且界面简洁、美观,操作体验也不错。...
  6. 关于co-NP的理解
  7. 关于机器学习一些好的博客和资料
  8. 孙鑫VC学习笔记:第十一讲 (四) 图形重绘方法三 利用兼容DC
  9. docker安装mysql5.7_docker安装mysql5.7
  10. 拓端tecdat|R语言模拟和预测ARIMA模型、随机游走模型RW时间序列趋势可视化