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全局部署


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

本地创建ssh key


命令:

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下输入:

$$ 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

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

3 上传

$ 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形式来上传:

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

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

$ 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。

$ 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分支

$ 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教程

enjoy!

悦分享,越快乐^_^

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值