git使用之一——git的基本使用

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917
博客园: 追风917

git使用之一——git的基本使用
git使用之二——.gitignore文件详解
git使用之三——.git文件夹详解
git使用之四——windows下github桌面版的安装
git使用之五——Github上fork项目后与原项目保持同步
git使用之六——github协同工作的Fork+Pull Request
git使用之七——Android Studio下git的正确使用

git初识


git是一种分布式版本控制系统,有linux内核开发者,著名的黑客 Linus Torvalds 大神编写。

比传统的svn优势明显,详细请参考这里:百度百科:git

几个常用名词:

1 init:新建一个Git管理项目。

2 add:添加新的文件(文件夹)到Git项目中,如果添加文件夹,该文件夹下所有文件将被包含。同时可以使用rm,mv从git项目中删除或是重命名文件(文件夹)。

3 commit:提交到仓库,告诉Git你想要记录现在的操作,Git会保留一个当前修改过文件的快照。

4 reset:如果你正在编辑的文件乱了,可以选择从上一次的commit的点重新开始编辑,通常是选择恢复到上一个编辑点。

5 check out:一般是在branch间切换。

6 branch:分支,master就是其中一个。

7 merge:合并分支,如果我正在编辑一个版本a,别人在编辑版本b,我们想把两个版本合成一个,就可以用merge。当然,合的过程中,有时候会检出有哪些地方不一样,询问到底要保留哪一个,需要手动处理不同的地方。事实上,这更像一个审查的过程。

8 diff:找出两个文档或目录的不同。

9 revert:回滚到指定的commit的点。

和远程仓库的互动:

10 clone:从远程仓库得到整个项目的拷贝。

11 pull:类似与SVN中的update动作,如果你之前clone得到某项目的一份拷贝,用pull可以更新到最新版本。相当于fetch + merge

12 push:把本地仓库的这份拷贝push到服务器。

13 HEAD:这就是一个指针,可以有任意指向,默认指向master分支的最后一次commit的点,这货控制着后面的发展,可以使用checkout更改HEAD指向。

14 master:这是系统默认生成的本地分支,当然你可以自定义,这只是方便操作而已

15 working tree:刚check out过来,并未修改的文件,也就是你在对哪些文件进行操作。

16 index(staging area):有修改但是还没有commit的文件,新加进来的文件也在这里,就是暂存区咯

17 git directory(repository):修改并commit后,一个文件快照被推送到这里,被保存起来,就是本地仓库

易混淆名词对比

1 log和status:log是查看commit的历史;status是查看是否有文件未commit,没有的话,当前的Git project是clean的。

2 reset和revert:首先,‘reset –hard’到某commit点后,用log查看,该点后所有commit都看不到了,文件被恢复到commit点时的样子;而revert到某commit点之后,用log查看,可以看到多了一个commit点,查看文件内容,被恢复到commit点。还有,必须是project clean时,才能执行revert。

git中文件的几种状态

1 unstaged:git仓库中没有此文件的相关记录

2 modified:git仓库中有这个文件的记录,并且此文件当前有改动

3 staged:追加,删除或修改的文件被暂时保存,这些追加,删除和修改并没有提交到git仓库

4 commited:追加或修改的文件被提交到本地git仓库(git仓库中大部分都是这种文件,所以git status不显示这些文件)

git全局部署


1
2
$ git config --global user.name "your name"  
$ git config --global user.email "your_email@xx.com"

本地创建ssh key


命令:

1
ssh-keygen -t rsa -C "your_email@xx.com"

完成后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹。进去,打开id_rsa进去,打开id_rsa.pub,这就是我们需要的ssh key。回到github,进入Account

添加key到github


打开github,进入Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴key。为了验证是否成功,在git bash下输入:

1
$$ ssh -T git@github.com

如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。

提交、上传


1 创建仓库

到你的github页面,创建一个仓库,比如HelloWorld

2 提交

本地新建一个文件夹HelloWorld(和你的github里的仓库名称一致),进入该文件夹,右键git bash,初始化git,添加文件并提交commit

1
2
3
4
5
$ git init //初始化git,创建.git文件夹
$ git add README.md //建立一个待提交的文件README.md
$ git add . //把所有文件都加入本地缓存,待提交commit
$ echo "hello world!" >> README.md //文件里写点东西,问候下美好的世界
$ git commit . -m "first commit" //提交文件,.是当前目录,就是提交所有文件

3 上传

1
2
$ git remote add origin git@github.com:yourName/yourRepo.git
$ git push -u origin master //可能需要输入用户名密码之类哦

origin可以是任意名字哦,是你远程仓库名,当然你可以添加多个哦,push的时候指定一个就可以。后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git文件夹,打开config文件,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。

当然后面的地址是ssh形式,前面没有部署密钥的话是出错的哦,你也可以用https形式来上传:

1
$ git remote add origin https://github.com/yourName/yourRepo.git

这样你就会在你的github对应的仓库下看到对应的文件了哦。
git push命令会将本地仓库推送到远程服务器。git pull命令则相反。

1
$ git pull -u origin master //从远程服务器更新到本地仓库,相当于git fetch + git merge

修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。

.gitignore文件


见我之前的博文:

tag标签


tag的最主要作用是记录软件版本号,比如版本号更新的时候可以建一个“v2.0”、“v3.1”之类的标签,这样在以后回顾的时候会比较方便。tag的使用很简单,主要操作有:查看tag、创建tag、验证tag以及共享tag。

1
2
3
4
5
6
7
8
9
10
11
$ git tag v0.1 //给上一次提交添加标签v0.1
$ git tag -d v0.1 //删除标签v0.1
$ git tag v2.4 9aaa93e //给版本号9aaa93e,这是一个索引哈希值,添加标签v2.4
$ git tag //查看所有本地tag

$ git push origin tag v0.5 //push本地标签v0.5到远程仓库
$ git push --tags // push所有本地标签到远程仓库
$ git fetch --tags //把所有的远程仓库的tag拉到本地仓库
$ git fetch origin tag v0.5 //把远程仓库origin主机的tag v0.5拉到本地仓库
$ git push origin --delete tag v0.5 //删除远程仓库的v0.5的tag
$ git push origin :refs/tags/v0.5 //push一个空的tag到v0.5,相当于删除远程仓库的v0.5的tag

git分支

1
2
3
4
5
6
7
$ git branch jp //创建一个新的分支jp并切换到jp分支,-b参数就是切换到新建的分支
$ git checkout -b jp //新建分支并切换到jp分支
$ git checkout jp //切换到分支jp
$ git branch -av //查看分支,-a查看所有分支,-v包括分支索引和提交信息
$ git branch -D jp //删除分支jp
$ git branch -m jp jp1017//重命名,把jp分支重命名为jp1017
$ git merge jp //合并jp分支

常用远程仓库


1 github:代码多的很
2 gitcafe:有私有库,但是收费
3 oschina:私有库免费,稳定快速,赞,大力推荐。
4 coding.net:私有库免费
5 gitlab:国内速度超级慢

继续深造


1 git官方中文文档
2 廖雪峰老师git教程
3 易百网git教程

分享是一种美德,更是一种生活方式!!

也许你会说我是一个梦想者,但我不是唯一的一个。

悦分享,越快乐^_^

欢迎交流,转载请注明出处,谢谢!

文章目錄
  1. 1. git初识
    1. 1.1. 几个常用名词:
    2. 1.2. 易混淆名词对比
    3. 1.3. git中文件的几种状态
  2. 2. git全局部署
  3. 3. 本地创建ssh key
  4. 4. 添加key到github
  5. 5. 提交、上传
  6. 6. .gitignore文件
  7. 7. tag标签
  8. 8. git分支
  9. 9. 常用远程仓库
  10. 10. 继续深造
,
Fork me on GitHub