git
来源:互联网 发布:修改手机机型软件 编辑:程序博客网 时间:2024/06/14 05:39
基本概念:
~、工作目录(working diretory)
对文件进行编辑目录
~、暂存区域(staging area)
”所谓的暂存区域只不过是个简单的文件,一般都放在git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。“-- 《pro git》
~、Git 的本地数据目录(git directory - repository)
”Git 用来保存元数据和对象数据库的地方,该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据“ -- 《pro git》
~、文件状态(file state)
”我们可以从文件所处的位置来判断状态:如果是git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次
取出后,作了修改但还没有放到暂存区域,就是已修改状态。" --《pro git》
命令介绍:
clone url 将服务器端的仓库克隆到本地,并使用git对起进行版本控制,(clone = init + remote add url)
init 将当前目录进行版本控制
add
add <filenam> 将文件加到缓存区(Index / stage);
add . 将工作区所有文件加到缓存区(.gitignore文件起效);
commit 就是提交修改到本地版本库中;
-a
--all
自动保存被改动和被删除的文件(已经被保存在缓存区),但是新创建的、还没有告诉git的文件不会受影响
push 就是将本地修改的代码提交到远程服务器中;
git push origin master:gh-pages 将本地master分支体提交到远端gh-pages分支
git push origin :gh-pages删除远端分支
git push origin gh-pages 将当前分支提交到gh-pages分支参考
pull 是将远程版本库的新变更下载合并到本地;(pull = fetch + merge)
checkout 切换分支;
checkout -b 选项可以创建并切换 到新分支。
checkout --orphan xxx 创建一个独立的xxx分支
chechout -b release develop 从develp分支上创建一个release分支,如果当前分支就是develop分支,那develop可以不写。
checkout 签出一个分支或进入一个将要工作的目录checkeout讲的比较细
branch:列出本地已经存在的分支,并且在当前分支的前面加“*”号标记
branch branchName 以此名字创建一个分支。只创建不切换分支。
branch -r列出远程分支
branch -a列出本地分支和远程分支
branch -d | -D删除分支
branch -m | -M oldBranch newBranch 重命名分支。-M 强制重命名
remote 列出所有设置的远程源,eg:
git remote//it will be show:origineotherNameremote add remoteName url 添加一个远程源,(相当于给服务器端某仓库地址起了个别名,以后提交代码的时候只需要使用 origin别名即可)eg:
git remote add origin git://github.com/someone/another_project.git
status 查看文件状态
rm
rm --cached <file> . 清空缓存区,文件变成 unstage状态
rm、git rm、git commit -am "..." 联系:http://yang3wei.github.io/blog/2013/02/03/git-rm-he-rm-de-qu-bie/
log 显示更为全面的commit 日志信息。显示结果eg:
commit fba638f1270683c45477b3e68480c60bbe4aec93Author: yongpeng yang <bugknightyyp@gmail.com>Date: Thu Jul 11 20:28:35 2013 -0700 Initial commit
reflog 查看commitid 以及HEAD编号。显示结果eg:
fba638f HEAD@{0}: reset: moving to fba63cfc216d HEAD@{1}: revert: Revert "Initial commit"fba638f HEAD@{2}: initial pull
这个知识点来自:技术之旅 - GIT恢复删除的提交
revert 还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值
reset
reset -q | --quiet 只返回错误信息
reset --mixed 重设HEAD 和 index(缓存区)
reset --soft 只重设HEAD
reset --hard 重设HEAD、index、源代码
reset HEAD <path> git index中path内容删除,重新放回working directory中
tag:
git tag v0.1 创建tag
$ git push --tags push (所有) tag 到 github(push tag 后github 就会出现该tag 的下载包)
配置/设置:
~、在windows下的文件的权限因为无法和linux上完全一致,所以用Git检出的文件权限可能显示为被更改。 另外因为windows下的换行和linux上也不一样,协作开发时也容易出问题。所以在windows上使用Git的同学需要加上以下2行配置参数:
git config --global core.filemode falsegit config --global core.autocrlf true第一句是忽略文件权限的改动。第二句是将文件checkout时自动把LF转成CRLF,check in 时自动把CRLF转成LF这个知识点是来自:唐巧的技术博客-git使用感受
~、设置常用命令的别名
[alias] st = status -s ci = commit l = log --oneline --decorate -13 ll = log --oneline --decorate co = checkout br = branch rb = rebase dci = dcommit这个知识点是来自:唐巧的技术博客-git使用感受
小技巧:
~、stash应用场景技巧
>、本地工作区还有未提交的内容时,不能pull?
可以先用 git stash 将内容暂存,然后再pull,成功后再git stash pop将修改恢复。
这个知识点是来自:唐巧的技术博客-git使用感受
>、git stash:保存当前工作状态,这个命令可以保存当前本地工作区和暂存区中没有提交到本地仓库的改动,当你需要紧急切到其它分支但又不想提交改动的时候就用到它了。
这个知识点来自:窦圣伟 - git总结
~、如何用Git将一个文件的历史提交恢复?
上次遇到一个问题,我某次提交改动了很多文件,但是其中有一个是不应该改的。所以我需要把这次提交中关于那个文件的改动撤销。直接用git checkout命令可以检出某一个文件的历史版本,然后就可以将对这个文件的改动取消了。如下:
git checkout CommitId fileName git ci -m "revert a file modification"这个知识点是来自:唐巧的技术博客-git使用感受
~、搭建自己的远程仓库
搭建一个Git远程仓库相当简单,直接在一台带SSH的服务器上用git init –bare dirname即可。本地可以用git remote命令来设置多个远程分支。另外,第一次提交的时候,因为远程仓库中没有任何分支,需要用如下指令建立master分支:
git remote add origin yourname@yourhost.com:~/path/repository_namegit remote add add2 yourname@yourhost.com:~/path/repository_namegit push origin mastergit push add2 master// 如果git remote add设置地址写错了,可以用git remote set-url更改:git remote set-url origin yourname@yourhost.com:~/path/repository_name这个知识点是来自:唐巧的技术博客-git使用感受
~、删除不在git管理下的文件
如果你需要删除Git下没有加入到版本库中的文件,可以使用:
git clean -nd 测试删除git clean -fd 真实删除这个知识点是来自:唐巧的技术博客-git使用感受
注意点:
~、一个分支就是独立的一条版本库演化路径,版本库默认只有一个 master 分支,我们可以基于一个已存在的分支创建新的分支。
~、已经commit的文件即使在.gitignore中也会被跟踪,因为被缓存了,所以清除缓存,再commit一次就有效了,使用如下命令清楚缓存的文件:
git rm --cached xxx文件
~、cvs和svn的版本控制原理是:每次的更改文件只保存变化量,git是会吧有变动的文件内容全部保存下来,2者相同的是:不变的文件,只保存指向前一版本里相应文件的应用。
相关资料:
直接拿来用!10段超有用的Git命令行代码
参考:
Git 常用命令详解(二)
阳志平的博客
挑战书-git快速入门
.gitignore文件语法
- git
- git
- Git
- Git
- Git
- Git
- git
- git
- Git
- GIT
- git
- GIT
- Git
- git
- git
- Git
- GIt
- git
- .NET深入解析LINQ框架(二:LINQ优雅的前奏)
- 程序员的学习和积累 .
- Java乔晓松-js解析xml文件实现select二级联动
- C#构建二叉查找树
- .NET深入解析LINQ框架(三:LINQ优雅的前奏)
- git
- 让你的博客支持手机等移动终端浏览器的访问
- .NET深入解析LINQ框架(四:IQueryable、IQueryProvider接口详解)
- MySql常用命令总结-精华
- 冒泡排序,快速排序,插入排序以及二叉树查找的O级时间的比较
- .NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)
- 云计算在检验医学中的应用
- 困了我一天的bug (赢在细节)
- shared memory realm does not exist