git学习笔记

来源:互联网 发布:ubuntu ibus 系统设置 编辑:程序博客网 时间:2024/06/07 07:14
关键词:
工作区:                             working directory(.git的父目录,如本例test)
版本库:                             respository(其实就是.git隐藏目录,虽然.git在工作区目录下,但是.git不算工作区)
暂存区:                             staged(或者叫index,git add的东西都在这,然后git commit把暂存区的数据提交到当前分支)


关键概念理解:
HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。如果我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。
merge时如果没冲突会出现:Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。


git在未进行commit操作之前,存在三种状态:
Untracked files未被加入待提交清单,可以使用git add 命令将其加入待提交清单中,通过“git rm --cached README.txt”命令,可以将文件状态还原为未暂存状态,即回到“Untracked files”文件状态。
Changes not staged for commit:表明文件已经修改,但是还没有放入暂存区域,也就是没生成快照。如果现在进行commit操作,只是将修改之前的文件快照提交到了git目录,通过使用git add更新修改的内容(注意此文件之前已经执行过git add命令,只是因为对其进行了修改所以此处说是更新,即:use "git add<file>..." to update what will be commited);use "git checkout -- <file>" to discard(放弃) changes in working directory
Changes to be committed:暂存状态(待提交状态)


初始化一个git仓库:                                            git init
把READ.md添加到待提交清单中:                     git add README.md
提交READ.md:                                                  git commit -m"添加README.md文件"


查看提交记录详细信息:                                     git log
查看提交记录:                                                   git log --pretty=oneline


回退:                                                                 git reset --hard HEAD^(HEAD^回到上一个版本HEAD^^回到上上一个版本HEAD~100回到100个版本之前)
                                                                            git reset --hard 3628164(回到该commit指向的HEAD)


查看所有的HEAD记录:                                     git reflog


查看未add的修改:                                            git diff(查看当前处于工作区(未被git add操作)的修改内容)
查看已经add但是未commit的修改:                  git diff --cached
查看工作区和暂存区的修改:                             git diff HEAD


撤销暂存区地修改:                                           git reset HEAD README.md
撤销工作区的修改:                                           git checkout --README.md(“--”,如果没有这个符号则代表切换分支)

删除文件:                                                          git rm test.txt

git log --graph --pretty=oneline --abbrev-commit


生成ssh密钥对:                                                 ssh-keygen -t rsa -C "youremail@example.com"
本地仓库关联git仓库:                                        git remote add origin git@github.com:michaelliao/learngit.git
推送本地内容到远程库:                                     git push -u origin master(由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。)
克隆一个远程项目到本地仓库:                          git clone git@github.com:runnerFeng/gitskills.git


查看分支:                                                          git branch
新建分支:                                                          git branch dev
切换分支:                                                          git checkout dev
新建并且切换到dev:                                            git checkout -b dev

合并分支:                                                          git merge dev(dev分支内容合并到当前分支上)

分支合并情况查看:                                            git log --graph --pretty=oneline --abbrev-commit


储藏当前分支:                                                   git stash(这是用于有临时bug要修复时,储藏当前分支)
查看当前储藏分支:                                            git stash list
恢复储藏分支:                                                   git stash pop


强行销毁分支:                                                   git branch -D feature-vulcan
查看远程分支信息:                                            git remote -v
推送master分支到远程:                                     git push origin master
推送dev分支到远程:                                          git push origin master
在本地创建和远程分支对应的分支:                   git checkout -b branch-name origin/branch-name(本地和远程分支的名称最好一致)
设置远程dev关联本地dev分支:                         git branch --set-upstream dev origin/dev
拉取远程分支并且合并到本地分支:                   git fetch(该命令等价于git fetch和git merge两个命令,git pull会自动合并,后两个命令是分开操作)


给当前分支打一个v1.0的tag:                                git tag v1.0(默认标签是打在当前分支最新提交的commit上的)
查看所有tag:                                                         git tag
给某个commit打tag:                                              git tag v0.9 6224937(注意,标签不是按时间顺序列出,而是按字母排序的)
查看tag信息:                                                       git show v1.0
创建带有说明的标签:                                             git tag -a v0.1 -m "version 0.1 released" 3628164(-a指定标签名,-m指定说明文字)
删除tag:                                                                 git tag -d v1.0
推送tag:                                                                 git push orgin v1.0
推送所有tag:                                                       git push orgin --tags
删除远程tag:                                                          git tag -d v0.9(先删除本地分支)
                                                                              git push origin :refs/tags/v0.9(再删除远程分支) 
强制添加某个文件:                                              git add -f App.class
查看.gitignore是否有问题:                                   git check-ignore -v App.class

原创粉丝点击