Git入门

来源:互联网 发布:微信群淘宝客话术 编辑:程序博客网 时间:2024/06/03 20:16

注:本文图文参考整理自(亲测没有问题)
菜鸟教程:
http://www.runoob.com/w3cnote/android-tutorial-git-repo-operate.html
廖雪峰的官方网站:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013752340242354807e192f02a44359908df8a5643103a000

由于主要图文皆来自以上两个网站,故设为转载。

一、创建本地仓库

1.先从网络上下在一个Git For Window
地址: https://git-for-windows.github.io/ 点击 Download,跳转到 Github ,下载对应安装包即可!


2.安装完毕后,鼠标右键可看到Git Bash,如图

这里写图片描述


3.点击打开后,进行身份配置(方便后期在提交代码时,知道是谁提交了代码)
输入:(修改为你自己的name及email)

git config --global user.name "coder-pig"git config --global user.email "779878443@qq.com"

输入完毕后,可输入:

git config --global user.name

然后回车,正常情况下,会返回你刚才输入的name(即上方的coder-pig)


然后可以先关闭Git Bash,在你想要创建Git仓库的地方,创建一个文件夹,并在文件夹内右键,点击Git Bash,输入:

git init

此时文件夹内应该会多了一个.git的文件,此时仓库已建立(如果没看到,可能是被系统隐藏了)。
注:接下来要存进仓库的文件需与.git文件在同一个目录下(在项目移进来,或者在项目内执行 git init)。


用于测试,我们在.git同一个目录下,创建一个readme.txt文件
在Git Bash中输入:

git add readme.txtgit commit -m "Wrote a readme file"

便可将readme.txt文件提交到本地仓库。
注:-m 后面的文字为本次提交的声明(类似代码里注释),可修改为其他文字。
又注:可以add多个文件后,再进行commit提交。或者使用:

git add.

将目录下的全部文件一次添加,如果有部分长期固定不变的文件,我们可以在代码仓库的根目录下创建一个名为.gitignore的文件,然后编辑里面的内容,把不需提交的文件忽略掉!
这里写图片描述

接着输入要提交时忽略的文件内容即可!
这里写图片描述


4.查看修改的内容

当我们提交项目后,再进行修改,可以通过git status查看修改的部分,比如,我们删掉MainActivity.java里的菜单的代码以及多余的菜单相关的包!

git status

这里写图片描述

他就会提示我们哪些文件发生了改变,但是还没有提交,如果我们想看下具体更改了什么,我们可以用到git diff命令,另外,按Q可以退回命令行输入!

git diff

这里写图片描述


5、查看提交记录
当然随着我们项目的深入,Commit的次数也会越来越多,可能你早已忘记每次提交都修改了什么内容, 没事,Git帮你记着呢,使用git log即可查看历史提交信息!输入:

git log

这里写图片描述

我们取其中一小部分来分析:

commit defd8af52be5183dfceb3e5cf23f78ea47d013b0Author: coder-pig <779878443@qq.com>Date:   Fri Jun 19 17:00:36 2015 +0800MainActivity Delete Menu

依次是:

·此次提交对应的版本号·提交人:姓名 邮箱·提交的时间·提交版本修改的内容:就是我们commit -m "xxx"里的xxx

6.撤销未提交的修改
比如我们刚提交了一个版本,然后又乱七八糟地写了一堆东西,突然发现不小心误删了一些东西,然后ctrl + s保存了,这个时候是不是欲哭无泪,不过有Git,只需一个checkout命令即可撤销更改,当然是你还没add的情况,比如我们在MainActivity里随便添加一条语句,保存。
这里写图片描述

然后输入:git diff

这里写图片描述

如果只有少量的代码当然可以手动修改,但如果改动的地方多了,这时候可以输入:

git checkout src/com/jay/example/testforgit/MainActivity.java

然后会神奇的发现,我们新写的代码没了!duang一下就没了,不信你可以自己试试
这里写图片描述

当然,如果我们已经add了的话,那么checkout是没任何作用的,我们要先取消添加才可以撤回提交,使用下述指令:

git reset HEAD src/com/jay/example/testforgit/MainActivity.javagit checkout src/com/jay/example/testforgit/MainActivity.java

这里写图片描述

6.版本回退

第五点我们教了大家撤销未提交的修改,但加入提交了,我们想回退到之前的某一个版本怎么办? 第四点中我们可以通过git log查看我们的提交记录,我们需要从这里获取一个版本号, 一般我们只需要前七位字符就够了;另外在Git中,用HEAD代表当前版本,上一个版本就是HEAD^, 再上一个版本就是HEAD^^依次类推!我们先Git Log看下版本历史先!
这里写图片描述

我们回到前一个提交的版本吧,依次键入下述指令:

 git reset --hard HEAD git reset --hard HEAD^ git log

这里写图片描述

可以看到我们已经回退到了前一个版本了,当然你可以直接这样写:(ad2080c为版本号)

git reset --hard ad2080c

就是这么简单!回退后,你突然后悔了,想回退回新的那个版本, 可是遗憾的是,你键入git log却发现没有了最新的那个版本号,这怎么办呢… 没事,Git中给你提供了这颗”后悔药”,Git记录着你输入的每一条指令呢!键入:

git reflog

你会发现,版本号就在这里:
这里写图片描述

git reset --hard ad2080c

可以看到我们又回到了最新的那个版本了,就是这么溜!
这里写图片描述


二.本地仓库与GitHub(下载及提交)

1.首先要注册github账号,并创建一个空的仓库,具体这里不再多提。

2.本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

第1步:创建SSH Key。在用户主目录下(即:C:\Users\Administrator),看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Git Bash,创建SSH Key:

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

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,点击头像→setting→SSH and GPG keys,点击New SSH keys,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
这里写图片描述

点“Add Key”,你就应该看到已经添加的Key:

这里写图片描述

3.点击新仓库
这里写图片描述

目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

git remote add origin git@github.com:michaelliao/learngit.git

请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin masterCounting objects: 19, done.Delta compression using up to 4 threads.Compressing objects: 100% (19/19), done.Writing objects: 100% (19/19), 13.73 KiB, done.Total 23 (delta 6), reused 0 (delta 0)To git@github.com:michaelliao/learngit.git * [new branch]      master -> masterBranch master set up to track remote branch master from origin.

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

这里写图片描述

从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

SSH警告

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.RSA key fingerprint is xx.xx.xx.xx.xx.Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝出生四天不喝母乳怎么办 我的奶水不足怎么办 乳牙长得不整齐怎么办 新生儿只吃奶粉怎么办 小孩不肯吸母乳怎么办 三个月宝宝不吃奶粉怎么办 宝宝不爱喝水怎么办 崔玉涛 小孩身体铅过高怎么办 疫苗引起的发烧怎么办 婴儿不吃米糊怎么办 宝宝米糊不吃怎么办 换奶瓶宝宝不吃怎么办 小孩不会吃奶瓶怎么办 百天不吃奶瓶怎么办 1岁宝宝积食怎么办 宝宝退烧后流汗怎么办 宝宝高烧后出汗怎么办 发烧出汗不退烧怎么办 婴儿发烧不出汗怎么办 婴幼儿发烧不退怎么办 宝宝突然不吃饭怎么办 宝宝吃饭到处跑怎么办 宝宝不吃奶瓶怎么办崔玉涛 八个月母乳不足怎么办 八个月宝宝厌食怎么办 婴儿辅食便秘怎么办 婴儿被食物卡住怎么办 婴儿食物卡喉咙怎么办 婴儿食物蛋白过敏怎么办 小孩喉咙卡鱼刺怎么办 六个月宝宝腹泻怎么办 断奶后不吃奶粉怎么办 段奶不吃奶粉怎么办 婴儿不肯吃米粉怎么办 小孩皮肤不白怎么办 七个月宝宝挑食怎么办 宝宝不喝米粉怎么办 宝宝一岁半体检缺钙怎么办 1岁宝宝不喝药怎么办 孩子不愿喝奶粉怎么办 小孩断奶后不喝奶粉怎么办