git简介:
Git是目前世界上最先进的分布式版本控制系统,管理代码贼6,目前很多编译器都支持git,是一个很好的团队开发工具。
一、下载git
Windows:
官网下载: https://git-scm.com/downloads
国内镜像下载:https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fgit
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
这个地方的git bash操作类似于Linux上的命令行操作,我在自己搭建的Linux系统服务器上研究过,用来同步服务器和本机代码。
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
Linux:
$ sudo apt-get install git //或 $sudo yum install git
Mac Os X:
(没钱买,没用过,这里借用了廖雪峰网站里面的教程)
一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/。
第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。
Xcode是Apple官方IDE,功能非常强大,是开发Mac和iOS App的必选装备,而且是免费的!
二、创建版本库(命令行窗口里粘贴快捷键是shift+ins)
(windows版本作为介绍,Linux类似,需要用命令找到合适的路径,然后直接输入git命令就好)
1、找到合适的地方用作版本库
这个目录就是你的代码库的位置,一般就是一个单独的项目作为一个版本库,不一定要是空文件夹
创建版本库的方法很简单,找到项目目录,然后鼠标右键调出git bash窗口
2、以当前文件夹作为版本库的命令
$ git init
命令执行前后的对比(多了个叫.git的隐藏文件夹,这就说明ok了,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了)。 Linux下执行命令 ls -a可查看是否有这个.git文件夹。
注:路径中不要有中文汉字,避免各种乱七八糟的问题。
三、版本提交,版本回退,管理修改,撤销修改,删除文件
1、版本提交
$ git add 文件名或文件夹名称
$ git commit -m "这次的提交描述"
如git add ./就是上传所有代码,这个地方要注意的就是有的框架里会有个叫.gitignore的文件,里面的内容会让git在上传代码的时候忽略掉一些框架本身的东西,如果你是从github上下载的代码,很多时候就需要自己再去下载个框架填进去。
git commit -m""就是将这次的git add 的内容提交到一个叫commit的快照里面。一次commit可以提交很多个add的内容。
2、版本回退
回退到上一个版本(可以多次使用)
$ git reset --hard HEAD^
回退到上两个版本
$ git reset --hard HEAD^^
git log查看提交历史,然后git reset 回退到指定版本 。这也是每次commit -m" "中写内容的重要性,说不定什么时候就拯救了你写了好几天的代码。hard后面跟的版本号没必要全部写出来,git会自动去补全匹配。
$ git log
$ git reset --hard d954ae
3、管理修改(引用廖雪峰的git教程)
我们来一个操作,第一次修改 -> git add
-> 第二次修改 -> git commit
然后git status查看状态,
咦,怎么第二次的修改没有被提交?
Git管理的是修改,当你用git add
命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit
只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。
提交后,用git diff HEAD -- readme.txt
命令可以查看工作区和版本库里面最新版本的区别。
那怎么提交第二次修改呢?你可以继续git add
再git commit
,也可以别着急提交第一次修改,先git add
第二次修改,再git commit
,就相当于把两次修改合并后一块提交了:
第一次修改 -> git add
-> 第二次修改 -> git add
-> git commit
4、撤销修改(引用廖雪峰的git教程)
自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt
中添加了一行:
$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
My stupid boss still prefers SVN.
在你准备提交前,一杯咖啡起了作用,你猛然发现了stupid boss
可能会让你丢掉这个月的奖金!
既然错误发现得很及时,就可以很容易地纠正它。你可以删掉最后一行,手动把文件恢复到上一个版本的状态。如果用git status
查看一下:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
你可以发现,Git会告诉你,git checkout -- file
可以丢弃工作区的修改:
$ git checkout -- readme.txt
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
现在,看看readme.txt
的文件内容:
$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
文件内容果然复原了。
git checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout
命令。
5、删除文件(引用廖雪峰的git教程)
在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt
到Git并且提交:
$ git add test.txt
$ git commit -m "add test.txt"
[master b84166e] add test.txt
1 file changed, 1 insertion(+)
create mode 100644 test.txt
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm
命令删了:
$ rm test.txt
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status
命令会立刻告诉你哪些文件被删除了:
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
:
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
现在,文件就从版本库中被删除了。
四、添加远程库
1、绑定ssh kyes(不能忽略的步骤!)
本机上创建ssh key,如果你的用户目录下已经有.ssh目录并且有这两个文件的话,跳过生成这一步,直接去绑定。
$ ssh-keygen -t rsa -C "youremail@example.com"
用记事本打开pub这个文件,复制里面的内容。
打开GitHub节目,设置里面,ssh and gpg keys 里面 new ssh key
输入标题,然后再key里面粘贴刚刚复制的ssh key即可。
2、添加到github远程库
在GitHub里面创建一个新的repository
目前,在GitHub上的这个test仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的learngit
仓库下运行命令:
$ git remote add origin 你自己github上面看到的那个ssh链接
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
提交后看到的github项目里面就会有你本地的文件,
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
过程中第一次提交的话ssh会给你一个警告,就是是否相信这个链接,点确定就好,问题不大。
五、从远程仓库下载
1、机器里添加版本库,GitHub账号
里添加机器的ssh key
方法上面有介绍,这里不再重复介绍,一台机器只需要添加一回,我这里指的是没添加过的需要添加,否则就会失败。
2、克隆下来
$ git clone 刚刚那个链接,类似git@github.com:yourname/test.git的
慢慢的等着就好了,
更多的内容就不写了,如分支管理,标签管理啥的,还有码云,可以参考廖雪峰的教程:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
注:本博客仅供学习交流使用,内容有借用廖雪峰网站中部分内容,如有侵权请联系我删帖,谢谢。