为git创建远程仓库及常用命令介绍

首先生成ssh公钥:

将公钥添加到git:

测试秘钥是否通过:

然后就可以到web界面看到标注的地方被绿了:

但是我的没有绿,不知道为啥,难道没有女朋友的原因吗?

rm -rf .ssh 重来好几遍都不行,不知道为啥,得再研究研究。

然后创建项目:

关联远程仓库:

新建对应项目的文件夹:

找到远程仓库地址:(注意是ssh地址)

本地创建git版本库:

记录一下删除关联命令:git remote rm origin

推送本地库内容到远程库:(提交到master,是因为当前只有master分支)
git push origin master
注意:需要先把远程库内容拉到本地,否则会报错。忽略特殊文件
git pull origin master

比如,下面就是血淋淋的教训:

add是为了添加到暂存区,而commit是为了提交到本地仓库

哦,对了,在此之前需要将你的git用户添加到本地,才能继续使用:(我好像用email不行,不知道为啥)

可以了。

原来是上面建立关联时命令写错了, origin写成了orgin

通过查看远程仓库的版本号发现的:

这就要改一下命令了,使得允许本地库和远程库不一样:

粘贴下命令,省的写错:git pull origin master --allow-unrelated-histories

阔以了。

然后把添加到本地仓库的东西推送到远程仓库:

完美。

然后添加.gitignore文件,在该文件夹中写入不想每次都上传的文件夹env

把新建的目录名env写入.gitignore文件中,然后push:

附一些其他常用的命令:

创建 Git 版本库

在本地创建 Git 版本库,需要使用 git init 命令。

首先,你需要新建一个存放版本库的目录,然后进入到该目录所在路径,然后执行:

git init

然后查看目录结构中,就可以看到包含有 .git 子目录,这就说明创建版本库成功了。

将文件添加到版本库

要将一个文件纳入到版本库管理,首先要将其添加到暂存区(这里不做深入介绍),然后才能提交到仓库中。

2.1 将文件添加到暂存区,使用的是 git add:

git add Readme.md        // 添加单个文件到暂存区
git add . // 将当前目录下所有修改添加到暂存区,除按照规则忽略的之外

注意:这边空文件夹是不会被添加到暂存区中的。

将暂存区中的文件,提交到仓库中。需要使用 git commit:

git commit        // 如果暂存区有文件,则将其中的文件提交到仓库
git commit -m 'your comments' // 带评论提交,用于说明提交内容、变更、作用等

注意:这边直接用 git commit 提交,会先弹出添加评论的页面。

查看仓库的状态

不论我们是新建了文件,将文件加入暂存区,或者其他的修改等等,我们都可以通过:

git status

来随时查看仓库中文件的状态。这个应该是使用 Git 做版本控制过程中,我使用最多的一个命令。

查看仓库中的具体修改

很经常的,我们对某个文件做了修改,但过不久就忘记了。这时候就可以通过 git diff 来查看具体的修改内容。

git diff    // 查看版本库中所有的改动
git diff Readme.md // 查看具体文件的改动

查看提交历史记录

有的时候,你会需要查看自己做过哪些提交,来回顾自己完成的部分。或者需要寻找某个具体的提交来查看当时的代码。这里需要用到:

git log     // 显示所有提交的历史记录
git log --pretty=oneline // 单行显示提交历史记录的内容

在 git log 的输出内容中,可以看到每次提交的 ID,是一个 40 位的字符串。

版本回退

有了 git log 来查看提交的历史记录,我们就可以通过 git reset --hard 来回退到我们需要的特定版本,然后使用当时的代码进行各种操作。

git reset --hard HEAD^        // 回退到上一个提交版本
git reset --hard HEAD^^ // 回退到上上一个提交版本
git reset --hard 'commit_id' // 会退到 commit_id 指定的提交版本

回到未来的某个提交

当退回到某个提交的版本以后,再通过 git log 是无法显示在这之后的提交信息的。但是,通过 git reflog 可以获取到操作命令的历史。

因此,想要回到未来的某个提交,先通过 git reflog 从历史命令中找到想要回到的提交版本的 ID,然后通过 git reset --hard 来切换。

 
git reflog
git reset --hard 'commit_id'

撤销修改

撤销修改同样包括两方面的内容,由于仓库中的文件在提交之前,可能在工作区中,尚未在版本控制范围内,也可能在暂存区中。

8.1 丢弃工作区中文件的修改

git checkout -- Readme.md    // 如果 Readme.md 文件在工作区,则丢弃其修改
git checkout -- . // 丢弃当前目录下所有工作区中文件的修改
注意: git checkout -- 中的 -- 是必须的

 丢弃已经进入暂存区的修改

git reset HEAD Readme.md // 将 Readme.md 恢复到 HEAD 提交版本的状态

在文件未添加到暂存区之前,对想删除文件可以直接物理删除。或者通过 git checkout -- file 来丢弃。如果文件已经被提交,则需要 git rm 来删除:

删除文件

git rm Readme.md // 删除已经被提交过的 Readme.md

注意: git rm 只能删除已经提交到版本库中的文件。其他状态的文件直接用这个命令操作是出错的。

分支管理

分支是版本控制系统中很重要的一个概念,在 Git 中新建、合并等分支的操作非常轻量便捷,因此我们会很经常的用到。

1. 查看分支

查看分支使用 git branch:

git branch        // 查看本地分支信息
git branch -v // 查看相对详细的本地分支信息
git branch -av // 查看包括远程仓库在内的分支信息

注意:在 git branch 的输出内容中,有一个分支,前面带有 * 号,这标识我们当前所在的分支。

2. 创建分支

当我们要修复一个 Bug,或者开发一个新特性,甚至是在初学的时候怕打乱原来的代码,都可以新建一个分支来避免对原来代码的影响。

git branch dev // 新建一个名称为 dev 的分支

3. 切换分支

当我们创建完分支以后,我们需要切换到新建的分支,否则,所有的修改,还是在原来的分支上。事实上,所有的改动,只能影响到当前所在的分支。

git checkout dev // 新建完 dev 分支以后,通过该命令切换到 dev 分支

4. 创建并切换分支

git checkout -b dev // 新建 dev 分支,并切换到该分支上

这个命令合并了前两个独立的命令,平常使用中一般这样使用。

5. 合并分支

当我们修复完成一个 Bug,或者开发完成一个新特性,我们就会把相关的 Bug 或者 特性的上修改合并回原来的主分支上,这时候就需要 git merge 来做分支的合并。

首先需要切换回最终要合并到的分支,如 master:

git checkout master        // 切换回 master 分支
git merge dev // 将 dev 分钟中的修改合并回 master 分支

合并回主分支的时候,后面可能会面临到冲突的问题。冲突的解决暂不在这里说明。

6. 删除分支

当之前创建的分支,完成了它的使命,如 Bug 修复完,分支合并以后,这个分支就不在需要了,就可以删除它。

git branch -d dev // 删除 dev 分支

远程仓库

上面的所有命令都是针对本地仓库的操作。当我们希望多个人来协作时,会将代码发布到一个统一的远程仓库,然后多个人在本地操作以后,在推送到远程仓库。其他人协作时,需要先同步远程仓库的内容,再推送自己的修改。

1. 从远程仓库克隆

如果你本地没有仓库,希望从已有的远程仓库上复制一份代码,那么你需要 git clone。

git clone https://github.com/git/git.git     // 通过 https 协议,克隆 Github 上 git 仓库的源码
git clone linfuyan@github.com/git/git.git // 通过 ssh 协议,克隆 Github 上 git 仓库的源码

注意: git clone 后面的仓库地址,可以支持多种协议,如 https, ssh 等。

2. 添加远程仓库

如果你已经有了一个本地仓库,如之前创建的 git-guide,然后你打算将它发布到远程,供其他人协作。那么使用:

git remote add origin your_remote_git_repo // 为本地仓库添加远程仓库

3. 推送本地的内容到远程仓库

当本地仓库中,代码完成提交,就需要将代码等推送到远程仓库,这样其他协作人员可以从远程仓库同步内容。

git push -u origin master // 第一次推送时使用,可以简化后面的推送或者拉取命令使用
git push origin master // 将本地 master 分支推送到 origin 远程分支

注意: git push -u origin master,第一次使用时,带上 -u 参数,在将本地的 master 分支推送到远程新的 master 分支的同时,还会把本地的 master 分支和远程的 master 分支关联起来。

4. 从远程仓库获取最新内容

在多人协作过程中,当自己完成了本地仓库中的提交,想要向远程仓库推送前,需要先获取到远程仓库的最新内容。

可以通过 git fetch 和 git pull 来获取远程仓库的内容。

git fetch origin master
git pull origin master

git fetch 和 git pull 之间的区别:

  • git fetch 是仅仅获取远程仓库的更新内容,并不会自动做合并。
  • git pull 在获取远程仓库的内容后,会自动做合并,可以看成 git fetch 之后 git merge。

注意:建议多使用 git fetch。

5. 查看远程仓库信息

git remote [-v] // 显示远程仓库信息

6. 建立本地分支和远程分支的关联

在本地仓库中的分支和远程仓库中的分支是对应的。一般情况下,远程仓库中的分支名称和本地仓库中的分支名称是一致的。

有的时候,我们会需要指定本地分支与远程分支的关联。

git branch --set-upstream 'local_branch' origin/remote_branch

7. 修改本地仓库对应的远程仓库地址

当远程的仓库地址发生变化时,需要修改本地仓库对应的远程仓库的地址。主要应用在工程迁移过程中。

git remote set-url origin url

忽略文件.gitignore作用:
在该文件中写入的文件或目录在push的时候不会推上去。
 附:常用命令可以学习这个网站:
https://segmentfault.com/a/1190000011673663 用-r参数删除目录, git rm --cached a.txt 删除的是本地仓库中的文件,且本地工作区的文件会保留且不再与远程仓库发生跟踪关系,如果本地仓库中的文件也要删除则用git rm a.txt

为git创建远程仓库的更多相关文章

  1. Git 创建远程仓库并克隆到本地,创建本地仓库并推送到远程仓库

    配置用户信息 配置的是你个人的用户名称和电子邮件地址.这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,会随更新内容一起被永久纳入历史记录 git config --glo ...

  2. 如何使用git创建远程仓库(供局域网多人使用)

    用git init(默认创建的是私人的仓库)创建的仓库,推送是不会成功的. 因此在git server端,我们要用 git --bare init --shared=group 来创建一个bare库, ...

  3. git 创建远程仓库

    在远程服务器上$ cd /server/path/ $ git init --bare myproject.git 在本地 1> $ cd /client/path/ 运行 git init 2 ...

  4. git在本地创建远程仓库

    类似的博文,在前面的帖子里面也提到过,当时讲述的是一个入门级别的.其URL是ssh://username@repo-host-address/repo-path这种格式. 今天再说说如何创建类似Git ...

  5. git的使用(包括创建远程仓库到上传代码到git的详细步骤以及git的一些常用命令)

    A创建远程仓库到上传代码到git 1)登陆或这注册git账号 https://github.com 2)创建远程仓库 3)打开终端输入命令 cd到你的本地项目根目录下,执行如下git命令 git in ...

  6. Git学习 -- 远程仓库

    第1步:创建SSH Key 在用户目录下的.ssh目录中,查看是否有id_rsa和id_rsa.pub两个文件,若没有则通过以下命令生成秘钥对: $ ssh-keygen -t rsa 第2步:登陆G ...

  7. github创建远程仓库

    创建远程仓库 当你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一 ...

  8. Git从远程仓库里拉取一条本地不存在的分支方法

    Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...

  9. [转]git修改远程仓库地址

    原文链接:http://www.cnblogs.com/lazb/articles/5597878.html 问:Coding远程仓库地址变了,本地git仓库地址如何更新为最新地址 git修改远程仓库 ...

随机推荐

  1. 算法与数据结构基础 - 排序(Sort)

    排序基础 排序方法分两大类,一类是比较排序,快速排序(Quick Sort).归并排序(Merge Sort).插入排序(Insertion Sort).选择排序(Selection Sort).希尔 ...

  2. Jmeter 01 Jmeter下载安装及入门

    jmeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域.--百度百科 下载 下载 ...

  3. Hive安装与部署

    进去root权限(su) 1.从https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.ta ...

  4. 100天搞定机器学习|day38 反向传播算法推导

    往期回顾 100天搞定机器学习|(Day1-36) 100天搞定机器学习|Day37无公式理解反向传播算法之精髓 上集我们学习了反向传播算法的原理,今天我们深入讲解其中的微积分理论,展示在机器学习中, ...

  5. 解决Springboot整合ActiveMQ发送和接收topic消息的问题

    环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</group ...

  6. 6.PHP操作MySQL的步骤

    第一步:PHP连接MySQL服务器 第三步:设置MySQL请求或返回数据的字符集 第四步:执行各种SQL语句 l 查询SQL语句:mysql_query(“SELECT * FROM 007_news ...

  7. (18)ASP.NET Core 基于现有数据库创建EF模型(反向工程)

    1.简介 Entity Framework Core可通过数据库提供给应用程序的插件访问许多不同的数据库.我们可以通过使用Entity Framework Core构建执行基本数据访问的ASP.NET ...

  8. 关于selenium自动化对iframe内嵌元素的处理

    今天上班闲来无聊,于是来练练自动化,结果碰上了可恶的iframe,楼主,以前也遇到过,但是一直也没搞懂怎么处理的,都是抄别人的代码,今天决定独立解决试试.首先先来认识什么是iframe,它就长下图这样 ...

  9. 100天搞定机器学习|day45-53 推荐一本豆瓣评分9.3的书:《Python数据科学手册》

    <Python数据科学手册>共五章,每章介绍一到两个Python数据科学中的重点工具包.首先从IPython和Jupyter开始,它们提供了数据科学家需要的计算环境:第2章讲解能提供nda ...

  10. PythonI/O进阶学习笔记_3.2面向对象编程_python的继承(多继承/super/MRO/抽象基类/mixin模式)

    前言: 本篇相关内容分为3篇多态.继承.封装,这篇为第二篇 继承. 本篇内容围绕 python基础教程这段: 在面向对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法.使 ...