Git介绍和常用指令
介绍:Git和SVN一样都是版本控制工具。不同的是Git是分布式的,SVN是集中式的。Git开始用可能感觉难点,等你用习惯了你就会觉得svn是有点恐怖。(如果一个项目有好多人一起开发,有好多分支切来切去,如果用SVN就会让你崩溃的)集中式大概就是有一个中心代码库,大家改完代码以后都忘这个代码库提交,同样都在这里更新代码。
分布式就是没有中心数据库每个人的电脑上都有一个完整的本本库,大家可以相互推送代码和更新(为了方便也会建立一个中心库,大家都通这个中心库进行交互)。
安装git:从git官网下载git。选择命令行模式,然后基本上next 就行了。
介绍下git的常用概念:
本地仓库:在本地存放各个版本分支的地方,像一个仓库,只要你提交的东西他都会保存下来。
远程仓库:可以和你本地仓库进行交互的另一仓库。可以是别人的仓库也可以是大家都用的一个中心的仓库。
工作区:就是我们看到的当前分支和版本的代码的区域,就是存放我们当前正在修改的代码的地方。
索引区:存放已经在git管理中的代码的区域,通过提交指令添加到仓库。
常用指令:
1、 关于仓库:
查看远程仓库:git remote –v (-v表示显示详细信息)显示为仓库别名和仓库地址,远程仓库的默认别名为origin。
添加远程仓库:git remote add {url}
重命名:git rename {oldname} {newname}
删除:git rm {remotename}
剩下的就自己查看帮助吧:git remote –help
初始化本地仓库:到你想作为仓库的路径,然后执行git init。就会发现在当前目录下多了个.git目录。发现git自动显示在maser分支上。然后添加一个远程仓库git remote add origin (这里是github上我的仓库地址)然后更新合并代码。
也可以克隆远程仓库到本地:跳转到相应目录执行git clone 。这时候查看仓库可以看到 origin仓库。
2、 查看状态:查看当前工作的状态 git status显示如下图:
其中标注为Changes to be committed:的绿色显示部分是已经add到索引区的修改,提示我们可以用git reset撤销。
标注为Changes not staged for commit:的是修改过没有添加到索引区的,提示我们可以通过git add添加到索引区或者通过git checkout 重置已经修改的文件。标注为Untracked files:是不在git的检查中的文件比如新建的文件。可以add添加到索引区。
3、将改变添加到索引区:git add [path]
4、比较不同: git diff [path],是比较工作区间与索引区的不同,当有参数—catch的时候就是比较索引区与仓库的不同,当有参数 commitid的时候就是比较工作区间与仓库指定版本的不同。例子:git diff --cached 索引区与仓库的不同,
git diff HEAD工作区间与仓库间的不同。
git diff commitid 工作区间与仓库指定版本号的间不同。
git diff --cached HEAD^ 索引区与上一次提交的不同。
git diff commitid1 commitid2 仓库指定两个id的版本之间的不同。
git diff branch1 branch2 比较两个分支间不同 (--stat参数列举简单信息)
git diff branch1:path branch2:path 比较两个分支间指定文件的不同
git diff master.. origin/master 比较本地master 和远程master的区别。
5、撤销:git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD] 这个指令有四中模式,
先说—mixed模式,因为他是默认模式,是最常用的模式,就是当用git reset –mixed [path]就是说将索引区的文件重置,撤销add的指令。
git reset –hard commitid,回滚到指定版本号,并且重置工作区间和索引区,就是说在某个版本号之后的修改都会丢弃,而且是找不回来的。
git reset –soft commitid 将当前版本指向指定版本号,这个版本号之后的提交都会被撤销到索引区,工作区和索引区的不变。
git rm --cached 文件名:将文件从索引中删除变成Untracked 。
--merge和--keep用的不多。
git revert 也是撤销命令,区别在于reset是指向原地或者向前移动指针,git revert是创建一个commit来覆盖当前的commit,指针向后移动,就是不是真的撤销而是有一次提交得到撤销的效果。
6、关于分支指令:git branch +[branchname]新建分支,
git checkout [branchname] 切换到相应分支,
git checkout –b [branchname] 创建并切换到新的分支。
切换到别的分支之后执行git branch –d [branchname]删除分支
git branch 查看分支,
git branch –a 或者(git branch --remote)查看远程分支
git marge [branchname]合并指定分支到当前分支。
git fetch [remotename]更新远程仓库的分支,可以指定分支名或者更新全部,括号内为远程分支的别名。
git pull [remotename] [ branchname] 更新并合并远程分支,默认是origin仓库的master分支。
git push [remotename] [ branchname]将本地仓库的更改推送到远程分支,可以使用-u参数指定默认的推送的分支,之后就可以直接使用git push指令推送。
git branch [remotename] –delete [branchname]删除远程分支
git branch –d [branchname]删除本地分支。
7、查看日志:git log
git log -p 显示详细信息,git log 路径 显示该路径下的日志 ,git log --no-merges 不显示合并版本的信息,git log --since="2 weeks ago" 显示最近两周的日志
8、其他关于设置全局变量等指令使用较少不做介绍,可以按提示操作即可。并且要学会多使用—help这个帮主指令。