您的位置:首页 > 其它

Git学习记录

2015-09-24 22:15 351 查看
之前认真的学过git,最近一直在学习其他的,没怎么用git,都有点生疏了,今天来复习一下git,加之之前学git也没有做笔记

首先讲一下工作区和暂存区,

工作区:主机上的工作目录,例如创建的一个项目目录。工作区中有一个隐藏目录
.git
,它不算工作区,而是git的版本库。

Git的版本库中存了很多东西,其中最重要的就是成为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD,如下图




把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

配置git用户信息

$ git config --global user.name "henulwj"
$ git config --global user.email "henulwj@qq.com"


初始化一个git仓库

$ mkdir mygit
$ cd mygit
$ git init


增加一个文件到仓库

$ touch reviewgit.md
$ git add reviewgit.md
$ git commit -m "add reviewgit.md file"


$ git commit -a -m "add reviewgit.md file"
#不用再执行git add了


查看当前仓库状态

$ git status


从现有仓库克隆

$ git clone git://github.com/xxx/xxx.git [user-defined directory]


忽略某些文件,编辑.gitignore文件

$ cat .gitignore
*.[oa]
!lib.a
*.~
/TODO
build/


比较当前文件与暂存区域快照之间的差异,也就是修改之后还没暂存起来的变化内容

$ git diff [filename or directory]


移除,移动文件

$ git rm [-f] [filename or directory]
$ git mv file_from file_to


查看提交历史

$ git log #列出所有的更新
$ git log -p -2 #展开显示每次提交的内容更新,-2仅显示最近的两次更新
$ git log --stat #仅显示简要的增改行数统计
$ git log --pretty=oneline #每个提交在一行显示
$ git log --pretty=format:"%h - %an, %ar : %s"  #定制显示的记录格式
#用oneline或format时结合--graph选项,可以看到开头多出一些ASCII字符串表示的图形,形象地展示了每个提交所在的分支及其分化衍合情况


取消已经暂存的修改

$ git reset HEAD filename


取消对文件的修改

$ git checkout -- filename


版本回退

$ git reset --hard HEAD^ 
#回退到上一个版本,HEAD^^上上个版本,HEAD~100往上100个版本
#HEAD^也可以替换成commit id的前七位


记录每一次命令

$ git reflog


关联远程仓库

$ git remote add origin git@github.com:henulwj/gitexercise.git


推送本地库内容

$ git push [-u] [remote-name] [branch-name] #第一次推送加上-u,之后就不用了


创建分支

$ git checkout -b dev #创建并切换到dev分支
#可以分为两步
#git branch dev #创建分支dev
#git checkout dev #切换到dev分支


合并分支

$ git merge[--no-ff] [-m "xxxx"] dev #合并dev分支到当前分支,--no-ff禁用Fast Forward模式合并


删除分支

$ git branch -[d/D] dev #删除dev分支,-D强制删除分支


保存当前工作现场

$ git stash
$ git stash list #查看保存的工作现场
$ git stash pop #恢复工作现场,同时删除stash
$ git stash apply stash@{n} #仅仅恢复工作现场,不删除stash
$ git stash drop stash@{n} #删除stash


在本地创建和远程分支对应的分支

$ git checkout -b branch-name origin/branch-name #分支名字最好一致


建立本地分支和远程分支的关联

$ git branch --set-upstream branch-name origin/branch-name


抓取远程分支

$ git pull #从远程获取最新版本并merge到本地
$ git fetch [remote-name] [branch-name] #从远程获取最新版本到本地,不会自动merge


创建一个标签

$ git tag tag-name [commit-id] #默认标签是打在最新的commit,也可以指定commit id
$ git tag #查看所有标签
$ git show tag-name #查看标签信息
$ git tag -a tag-name -m "comment" commit-id #创建带有说明的标签,-a指定标签名,-m指定说明文字
$ git tag -d tag-name #删除本地标签
$ git checkout tag-name #切换到对应tag-name
$ git push origin tag-name #推送标签到远程
$ git push origin --tags #一次性推送全部尚未推送的本地标签
$ git push origin :refs/tags/tag-name #从远程删除标签


忽略特殊文件

创建.gitignore文件,编写对应规则

配置别名

$ git config --global alias.st status #git st = git status
$ git config --global alias.co checkout # git co = git checkout
$ git config --global alias.unstage 'reset HEAD' #git reset HEAD file = git unstage file
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"


查看远程仓库信息

$ git remote show [remote-name] #查看某个远程仓库的详细信息
$ git remote rename [old-remote-name] [new-remote-name] #远程仓库重命名
$ git remote rm [remote-name] #删除远程仓库


[未完待续]~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: