Get Git
Posted 面具人生lql
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Get Git相关的知识,希望对你有一定的参考价值。
Get-Git
名词释义
版本库(Repository):
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
分支:
一个版本库中可以存在多个分支,Gitc创建版本库时会为我们自动创建一个分支master。当git切换到哪一个分支的时候,你在工作区看见的就是这个分支的状态 (比如大家在开发时会在版本库里面创建几个名为dev、future、bugs的分支,当开发的时候切换到dev,程序添加新功能的时候切换到future分支,需要修复bug的时候切换到bugs分区,程序发布版本的时候切到master分支)
HEAD:
可以理解为一个指针,指向当前版本库中当前分支的最新提交记录
工作区(Working Directory):
就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区
暂存区
对分支的每一个操作记录在没有commit之前都会记录在暂存区
Git自定义配置
git里面一共有3个配置文件
1.版本库(Repository)级配置文件: 该文件位于当前仓库下,路径.git/.gitconfig,这个配置中的设置只对当前所在仓库有效
2.全局级(global)配置文件: cd ~
即可,win7下面路径,在用户目录下,其路径为:C:\\Users\\username.gitconfig
3.系统(system)级配置文件: 本地git的安装目录下,例:D:\\Program Files\\Git\\etc.gitconfig
设置命令
git config --<参数>
可选参数:
–global use global config file
–system use system config file
–local use repository config file
-f, --file use given config file
–blob read config from given blob object
设置用户名&邮箱
git config --global user.name "username"
git config --global user.email "email"
别名配置
(将一条很长很难记的命令设置成自己容易记住的命令)
格式化显示日志的别名
gitgit 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"
其他命令别名
br = branch
rlg = reflog
ss = status
ch = checkout
mergeff = merge --no-ff -m
cm=commit -m
ca=commit -a
Git Quick Start
创建库
mkdir learngit
cd learngit
git init
Clone项目到本地
git clone
添加文件到暂存区
git add <file or folder>
提交暂存区的内容到分支
git commit -m ""
推送到远程版本库master分区
git push origin/master
查看
查看当前工作区状态
git status
查看工作区与暂存区状态差异
git diff
查看commit日志
git log
查看已回滚的commit日志
git reflog
查看本地分支
git branch
查看远程分支
git remote -v
查看远程分支(本地+远程)
git remote -a
查看汇总显示工作区、暂存区与HEAD的差异
git checkout
同上
git checkout HEAD
Git提交
1.先将修改的记录或新添加的文件添加到暂存区
git add (或者使用 git add -A 添加全部修改)
2.然后提交到本地分支
git commit -“提示信息”
1+2 = git commit -a "提示信息"
Git撤销
撤销工作区的修改
从指定commit点检出文件覆盖工作空间和暂存区的文件,如果不加commit-id则从暂存区检出覆盖工作区
git checkout [] – …
git checkout -- .
或写作 git checkout .
这条命令最危险!会取消所有本地的 修改(相对于暂存区)。相当于用暂存区的所有文件直接覆盖本地文件
撤销添加到暂存区的记录
```git reset HEAD – ``
(将添加到暂存区的修改记录撤销到上一次状态)
撤销已commit的记录
git reset --hard <commit-id> | <HEAD> | <HEAD^>
–hard 将commit记录+工作区内容重置到某一次提交点
–hard 将commit记录重置到某一次提交点,工作区内容不变,仅回滚记录
commit-id commit的id,一个hash值,可以通过git log或者git relog查看
HEAD^ HEAD指上一次提交,HEAD^^上两次 … HEAD~100上100次
Git删除
删除工作区(删除工作区文件之后git status 会提示和版本库文件不一致,使用git checkout -- fileName
能使用版本库的文件恢复工作区)
rm fileName
删除版本库文件
git rm fileName(执行之后git status 会提示在暂存区有一条delete记录)
1.这时候git commit 提交之后会将分支里面文件删除
2.如果不想删除了,使用git add fileName 能重新添加到暂存区,再commit
分支操作
查看本地分支
git branch
查看远程分支
git remote -v
查看远程分支(本地+远程)
git remote -a
创建分支(从当前分支clone)(start_point为可选,指定一个commit ID)
git branch <branchName> [<start_point>]
切换分支
git checkout
创建并切换分支
git branch -b
删除分支
git branch -d
重命名分支
git branch -m
合并分支
git branch merge
合并分支&&commit
git merge --no-ff -m “merge with no-ff”
设置同步分支
git branch --set-upstream origin/
拉取分支(前提已经设置同步分支,拉取之后可能产生冲突)
git pull
推送当前分支到远程指定分支
git push origin
小结:
查看远程库信息,使用git remote -v
;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name
,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
Git标签
查看
git tag
打标签
git tag tagName
(git tag -a v0.1 -m "version 0.1 released"
-a指定标签名,-m指定说明文字)
查看标签信息
git show tagName
Git stash(暂存)
git stash
git stash pop
git stash list
Git 忽略文件
创建一个.gitignore文件
将不需要git trace的文件或一类文件添加到里面
比如:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa
Windows Git Bash 中文乱码
git config --global core.quotepath false
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8
以上是关于Get Git的主要内容,如果未能解决你的问题,请参考以下文章