git和git 本地备份 学习心得
2017-03-05 09:01
218 查看
编写软件需要软件版本控制,我原来用tortoise svn, 后来不知何故,
数据没有了。我问朋友,哪个好,他说他在用git.
这样,我就开始学习使用git, 并看git 的帮助文件。
git add
git commit
我最开始就是网上查找资料,常用命令,我开始学习的网站是
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
后来,我发现其实安装git 的时候,就按照了帮助文件。
帮助文件在哪呢? git –man-path 就会显示出来
我的显示是:c:\program files\git\mingW64\share\man
在这个目录里你可以看到各种帮助文件,简单教程,常用命令,各命令详解,不过都是英文的,估计中文版就是中文的吧,我可以看英文,就无所谓。
创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
mkdir learngit
cd learngit
pwd
/Users/michael/learngit
第二步,通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录
把文件添加到版本库
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第二步,用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m “wrote a readme file”
简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
运行git status命令看看结果
git diff顾名思义就是查看difference
版本回退
git log命令显示从最近到最远的提交日志
现在我们启动时光穿梭机,怎么做呢?
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
回退到上一个版本,就可以使用git reset命令:
$ git reset –hard HEAD^
HEAD is now at ea34578 add distributed
在Git中,总是有后悔药可以吃的。当你用 git reset –hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:
$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file
工作区和暂存区
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
每次修改,如果不add到暂存区,那就不会加入到commit中。
管理修改
第一次修改 -> git add -> 第二次修改 -> git commit
那么第二次修改就没有被保存
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
好,这样就把第二次修改提交了,保存了。
撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
在Git中,删除也是一个修改操作,如果删除一个文件,
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout – test.txt
远程仓库
在继续阅读后续内容前,请自行注册GitHub账号。由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C “youremail@example.com”
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
网上备份可以用github
本地备份怎么用了,我查了很多都说用git clone
后来终于找到本地备份应该用 git bundle
https://git-scm.com/docs/git-bundle
git-bundle - Move objects and refs by archive
SYNOPSIS
git bundle create
git bundle verify
git bundle list-heads […]
git bundle unbundle […]
数据没有了。我问朋友,哪个好,他说他在用git.
这样,我就开始学习使用git, 并看git 的帮助文件。
git add
git commit
我最开始就是网上查找资料,常用命令,我开始学习的网站是
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
后来,我发现其实安装git 的时候,就按照了帮助文件。
帮助文件在哪呢? git –man-path 就会显示出来
我的显示是:c:\program files\git\mingW64\share\man
在这个目录里你可以看到各种帮助文件,简单教程,常用命令,各命令详解,不过都是英文的,估计中文版就是中文的吧,我可以看英文,就无所谓。
创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
mkdir learngit
cd learngit
pwd
/Users/michael/learngit
第二步,通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录
把文件添加到版本库
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第二步,用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m “wrote a readme file”
简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
运行git status命令看看结果
git diff顾名思义就是查看difference
版本回退
git log命令显示从最近到最远的提交日志
现在我们启动时光穿梭机,怎么做呢?
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
回退到上一个版本,就可以使用git reset命令:
$ git reset –hard HEAD^
HEAD is now at ea34578 add distributed
在Git中,总是有后悔药可以吃的。当你用 git reset –hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:
$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
工作区和暂存区
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
每次修改,如果不add到暂存区,那就不会加入到commit中。
管理修改
第一次修改 -> git add -> 第二次修改 -> git commit
那么第二次修改就没有被保存
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
好,这样就把第二次修改提交了,保存了。
撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
在Git中,删除也是一个修改操作,如果删除一个文件,
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout – test.txt
远程仓库
在继续阅读后续内容前,请自行注册GitHub账号。由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C “youremail@example.com”
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
网上备份可以用github
本地备份怎么用了,我查了很多都说用git clone
后来终于找到本地备份应该用 git bundle
https://git-scm.com/docs/git-bundle
git-bundle - Move objects and refs by archive
SYNOPSIS
git bundle create
git bundle verify
git bundle list-heads […]
git bundle unbundle […]
相关文章推荐
- git学习心得(一)——如何关联本地库和远程
- 玩转git,让git成为个人工作备份利器(即使是电脑小白也推荐学习)
- TCP学习心得及局部类访问本地变量问题
- 【git学习二】git基础之git管理本地项目
- 【Git学习笔记】GitHub中创建仓库,将本地仓库推送到远程库
- Git 学习笔记<本地版本库的管理> (二)
- live555学习心得二(获取本地IP地址方法1)
- git学习 本地常用操作01
- Ubuntu Cocos2dx 学习笔记——使用Git管理本地代码
- git学习三(本地分支)
- Git学习心得
- Git、Gitflow、Github学习心得
- git:备份代码到github以及从github拷贝代码到本地
- git:备份代码到github以及从github拷贝代码到本地
- 个人心得记录 --学习廖雪峰的git教程
- 玩转git,让git成为个人工作备份利器(即使是电脑小白也推荐学习)
- windows下备份本地git仓库
- Git学习系列(二)创建本地仓库及文件操作
- git:备份代码到github以及从github拷贝代码到本地
- git 学习心得