Git的基本了解与使用、向github提交代码

#Git的基本了解与使用、向github提交代码
- git:是一个版本控制系统。
- github:一个代码托管提供商、开源网站、是一个面向开源及私有软件项目的托管平台,因为支持Git作为唯一的版本库格式进行托管,故名为github。
- 刚开始我对两者的关系很困惑、其实就是你可以在github上面创建一个项目,然后将github提供的git克隆到本地,然后再提交给github。
> 这是向github上面提交项目的步骤:

- git clone [email protected]:iOSaFei/CoreImage.git //将远程仓库的项目克隆到本地

- cd CoreImageGit(down的文件夹,把要上传的项目拖进来)

- git add .(将目录中所有的内容添加到源里面去)

- git commit -m “描述性文字” //将缓存区的项目加到本地仓库

- git push -u origin master //上传

> 如果你只是想使用github、这么多就足够了,但是下面的内容还是很有必要看的:

- git:分布式版本控制系统(分布式版本控制系统(Distributed Version Control System,简称DVCS)。

- 这是一个可以不依赖中央服务器的的版本控制系统、每个终端都有完整的备份。而且git存储当前版本的所有内容、而不是和上一次的差异。

- 这两点是和git和集中式版本控制系统(svn等)的显著差异。除此之外git可离线完成大部分操作,更快更强更优雅

> 接下来步入正题,先说本地git的使用:

- Xcode自带git,只不过可能不是最新版本,只需在创建项目的时候,勾选上创建即刻。
如果你想使用最新版本,可以去下载:git-scm.com,下载完成后:

- which -a git //查看本地所有的git

- git --version //查看当前使用的git

- vim .bash_profile //在此文件中输入指定的git

- source .bash_profile//载入该文件

> git的基本配置(在每一次提交的时候都会用到):

- git config --global user.name iOS_aFei // 配置作者的名字(如果以前有责替换)

- git config --global user.email [email protected] // 配置作者的邮箱

- git config --global --add user.name miaomiao //添加作者的名字

- git config user.name //获取作者的名字,获得是最后添加的

- git config --list --global //获取本地用户的信息

- git config --global --unset user.name miamiao //删除指定的用户名

- git config --help // 查看帮助文档

> git的使用

- cd 项目文件夹

- git init //初始化一个空的源,.git子目录已经被创建

- git add . //将目录中所有的内容添加到源里面去

- git commit -m ‘Initial commit‘ //重启xcode即可

> 由于是本地的、比上述往github上面提交少了上传到远程服务器;而且第一步是创建的git,而不是clone的。
> 或许应该简单的说明一个git的原理了,不然命令很难记住:

- Git的有4个区域:工作区(编辑代码的地方)、暂存区域(中间的缓存)、仓库

- 工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。

- 已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间 后,它们的状态可能是未更新,已修改或者已放入暂存区。

- 而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。

- 初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。

- git status //查看文件处于什么状态
#####效果:

git status

#nothing to commit (working directory clean) //说明没有修改的文件,且没有任何处于未跟踪的新文件

# Untracked files://未跟踪的文件

# Changes not staged for commit//内容发生了变化,但还没有放到暂存区。

#Changes to be committed: //已暂存状态


- git add 文件名 //可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等

- git commit // 提交更新

> 尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁琐。Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交

- git commit -m “描述” //也可以用 -m 参数后跟提交说明的方式,在一行命令中提交更新:

> 这些是git的一些其它操作、整理的有点乱、可以用到时再看。
- git rm //删除文件

- git rm -f 文件名 //如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项

- git rm --cached 文件名 //我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。

- git mv file_from file_to //修改文件名

- git log //在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看。

{
> 我们常用 -p 选项展开显示每次提交的内容差异,

> 用 -2 则仅显示最近的两次更新:

> --stat,仅显示简要的增改行数统计:

}

- git commit --amend //有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作

- git reset HEAD 文件 //取消暂存

- git checkout -- 文件名 //撤销上一步对文件的修改

> 打标签还是很有必要的

>Git 也可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做

- git tag//列出现有标签

{

> 创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可

> **git tag -a v1.4 -m ‘my version 1.4‘**

> **如果你有自己的私钥,还可以用 GPG 来签署标签,只需要把之前的 -a 改为 -s (译注: 取 signed 的首字母)即可**

**git tag -s v1.5 -m ‘my signed 1.5 tag‘**

}

> 后期加注标签

- git tag -a v1.2 9fceb02

> git log --pretty=oneline获取提交对象的校验和

- git push origin v1.5//默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 即可:

- git push origin --tags//如果要一次推送所有本地新增的标签上去,可以使用 --tags 选项

- git show //命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

{

> git show v1.4

}

> **现在看博客开始往github提交的命令就很简单了。**

1、git clone [email protected]:iOSaFei/CoreImage.git //将远程仓库的项目克隆到本地

2、cd CoreImageGit(down的文件夹,把要上传的项目拖进来)

3、git add .(将目录中所有的内容添加到源里面去)

4、git commit -m “描述性文字”//将缓存区的项目加到本地仓库

5、git push -u origin master//上传

>第一步中的[email protected]:iOSaFei/CoreImage.git是SHH类型的链接、也可以使用HTTPS链接的,区别在于你使用SHH类型的不必每次输入github帐号密码,而使用SHH类型的链接要为github帐号添加SSH keys,否则会报错:

{

>Permission denied (publickey).

>fatal: Could not read from remote repository.

>Please make sure you have the correct access rights

>and the repository exists.

}

这时需要在本地创建SSH key,然后将生成的SSH key文件内容添加到github帐号上去

{

- ssh-keygen -t rsa -C "[email protected]” 然后输入自己要设置的sshkey的密码(不一定是github密码)

- "$(ssh-agent -s)”//保存密码

- ssh-add~/.ssh/id_rsa 然后输入刚刚那个密码

- vim ~/.ssh/id_rsa.pub 复制里面的内容粘贴到gitHub

- ssh -T [email protected]//验证一下

}

或许你不会看到这里了,即使看到这里也没耐心了,因为我都不想写了:
> 但是git的分支是git的必杀技:

#####Git分支

> 假设你们团队有个地址为 git.ourcompany.com 的 Git 服务器。如果你从这里克隆,Git 会自动为你将此远程仓库命名为 origin,并下载其中所有的数据,建立一个指向它的 master 分支的指针,在本地命名为 origin/master

- git branch testing// 创建一个新的分支testing、这会在当前 commit 对象上新建一个分支指针、看图:加载中...

> Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针、HEAD指针指向正在当前工作的分支。

- git checkout testing//转换到 testing 分支

> 由于 Git 中的分支实际上仅是一个包含所指对象校验和(40 个字符长度 SHA-1 字串)的文件,所以创建和销毁一个分支就变得非常廉价。说白了,新建一个分支就是向一个文件写入 41 个字节(外加一个换行符)那么简单,当然也就很快了。

- git checkout -b iss53 //这相当于执行下面这两条命令:

- $ git branch iss53

- $ git checkout iss53

- git merge hotfix//master 分支并把hot fix合并进来、

- git branch -d hotfix//hotfix 已经完成了历史使命,可以删掉

#####推送本地分支

> 要想和其他人分享某个本地分支,你需要把它推送到一个你拥有写权限的远程仓库。你创建的本地分支不会因为你的写入操作而被自动同步到你引入的远程服务器 上,你需要明确地执行推送分支的操作。换句话说,对于无意分享的分支,你尽管保留为私人分支好了,而只推送那些协同工作要用到的特性分支。

- git push origin serverfix

- git push origin serverfix:awesomebranch 上传我本地的 serverfix 分支到远程仓库中去,称它为 awesomebranch 分支

> 接下来,当你的协作者再次从服务器上获取数据时,他们将得到一个新的远程分支 origin/serverfix,并指向服务器上 serverfix 所指向的版本:值得注意的是,在 fetch 操作下载好新的远程分支之后,你仍然无法在本地编辑该远程仓库中的分支。换句话说,在本例中,你不会有一个新的 serverfix 分支,有的只是一个你无法移动的 origin/serverfix 指针。如果要把该远程分支的内容合并到当前分支,

可以运行 git merge origin/serverfix。如果想要一份自己的 serverfix 来开发,可以在远程分支的基础上分化出一个新的分支来:

- git checkout -b serverfix origin/serverfix

> 这会切换到新建的 serverfix 本地分支,其内容同远程分支 origin/serverfix 一致,这样你就可以在里面继续开发了。

删除远程分支

- git push origin :server fix

时间: 2024-10-29 03:55:15

Git的基本了解与使用、向github提交代码的相关文章

使用Git向GitHub提交代码

安装Git 下载对应的Git工具,附下载地址 打开命令提示附输入 git --version 说明git安装成功 配置Git git config --global user.email "github邮箱" git config --global user.name "github名字" 配置ssh 打开文件夹 cd ~/.ssh 如果出现以上提示,则还需要进行下面两步操作,手动创建相应文件夹 cd ~ mkdir .ssh ssh-keygen -t rsa -

【转载】从0开始学习 GITHUB 系列之「向GITHUB 提交代码」

转载自http://stormzhang.com 之前的这篇文章「从0开始学习 GitHub 系列之「Git速成」」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作,教你们向 GitHub 上提交你们的第一行代码! 1. SSH 你拥有了一个 GitHub 账号之后,就可以自由的 clone 或者下载其他项目,也可以创建自己的项目,但是你没法提交代码.仔细想想也知道,肯定不可能随意就能提交代码的,如果随意可以提

Github提交代码的流程

1.生成密钥公钥文件 ssh #检查是否安装SSH ssh -keygen -t rsa #指定RSA算法生成密钥,紧接着按连续3个enter键(不需要输入密码),就会生成id_rsa和id_rsa.pub文件,一个密钥,一个公钥 MeWifi:demo cjy$ ssh usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file]

GitHub 系列之「向GitHub 提交代码」

1.SSH 你拥有了一个 GitHub 账号之后,就可以自由的 clone 或者下载其他项目,也可以创建自己的项目,但是你没法提交代码.仔细想想也知道,肯定不可能随意就能提交代码的,如果随意可以提交代码,那么 GitHub 上的项目岂不乱了套了,所以提交代码之前一定是需要某种授权的,而 GitHub 上一般都是基于 SSH 授权的. 那么什么是 SSH 呢? 简单点说,SSH是一种网络协议,用于计算机之间的加密登录.目前是每一台 Linux 电脑的标准配置.而大多数 Git 服务器都会选择使用

github提交代码时,报permission denied publickey

在像github提交代码时,报permission denied publickey. 查找了一下,可能是因为github的key失效了. 按照以下步骤,重新生成key. ssh-keygen 一路默认下去. 会在home目录的.ssh文件夹下生成两个文件: id_rsa 和id_rsa.pub id_rsa是私钥,需要保存在本地的.id_rsa.pub是公钥,需要上传到github. 在github的右上角edit your profile 里找到ssh key,然后add ssh key,把

如何使用git工具向github提交代码

大致分为以下几个步骤 安装git环境,工具使用msysgit github上的账号 首先在github上点击头像旁边的加号 add new ,选择new Repository,自己创建一个名字,假设取名为 hevily 线上的github结束了. 开始设置本地的 mysysgit与线上关联,首先是 ssh本的pub文件与线上的ssh key关联 //注意这里的-C中的C是大写 ssh-keygen -t rsa -C "你的gtihub的邮箱" 设置之后,进入命令提示的目录,默认为 c

通过Git向Github提交代码(Windows系统)

1.新建项目 在GitHub选择并创建一个项目.首先,登录 GitHub,单击页面右上角加号"+" ,选择"New repository" 选项. 填写项目名称及描述,默认项目为"Public",如果想创建"Private"项目,GitHub需要收费.最后单击"Create repository"完成项目的创建 成功创建一个项目后,github给出 3种提交代码的方式 2.提交代码 首先进行初始化配置:设置

github提交代码——步骤备忘

打开git客户端,cd到要上传的项目文件夹下.   输入git init命令,回车,用来在当前项目的目录中生成本地的git管理库,我们可以发现在当前目录下多了一个.git的隐藏文件夹.   输入git add . 命令,回车,将项目中所有的文件添加到仓库中.如果想添加特定文件,把.换成对应的文件名就行了. 注意add后面有一个点,若是提交单独的文件,则可输入文件名.   输入git commit -m "first commit" 命令,本次提交的注释,双引号中的字符自定义修改.  

mac 使用命令行向 github 提交代码

让 mac 本地和自己的 github 网站建立连接(ssh) 下载安装 git 网址: https://git-scm.com/downloads 查看安装是否成功: git -version $ git version git version 2.15.1 (Apple Git-101) chengyuandeMBP:.ssh chengyuan$ 创建 ssh 密钥:查看是否有 ssh $ cd ~/.ssh $ ls id_rsa id_rsa.pub known_hosts 建议不管有