赞
踩
在安装完成Git后,开始正式使用前,是需要有一些全局设置的,如用户名、邮箱等。
设置全局配置的主要命令是git config
git config --global user.name "your name" //设置全局用户名
git config --global uer.email "your email" //设置全局邮箱
其中,--global
指定全局配置,不使用该参数,则为当前所在仓库配置。
除了用户名、邮箱之外,还有很多的配置可以用来定义Git
git config --global color.ui true // 让Git显示不同的颜色
git config core.ignorecase true // 让 Git 对仓库中的字符大小写敏感
查看所有的已设置的配置:
git config -l
在本地创建Git版本库,使用git init
命令。
首先,需要先新建一个存放版本库的目录,然后进入该目录所在路径,然后执行版本初始化命令。
git init
在目录当中,会出现一个.git
的文件,这就说明创建版本库成功了。
要将一个文件加入到版本管理,首先需要将文件提交到暂存区,然后才能提交到仓库当中。
git add Readme.md // 添加单个文件到暂存区
git add . // 将当前目录下所有修改添加到暂存区
注:在每一个版本库当中都会有一个Readme文件,用于说明版本库,及时记录版本库的更新、修改。
git commit // 如果暂存区有文件,则将其中的文件提交到仓库
git commit -m 'your comments' // 带评论提交,用于说明提交内容、变更、作用等
在提交或者修改了文件后,有会需要查看版本库的状态,可通过下面的指令查看。
git status
在向本地缓存提交后,可以通过git diff
来查看具体修改的内容。
git diff // 查看提交的所有改动
git diff Readme.md //查看文件的具体改动
查看提交的历史记录,或者寻找某个具体的提交来查看当时的代码。
git log // 显示所有提交的历史
git log --pretty=online // 单行显示提交历史记录的内容
每一次提交都会生产一个40为字符串的哈希值。
通过每一次的哈希值,可以根据这个哈希值来回退到历史版本。
git reset --hard HEAD^ // 回退到上一个提交版本
git reset --hard HEAD^^ // 回退到上上一个提交版本
git reset --hard 'commit_id' // 根据哈希值回退到指定版本
当回退到某个提交的版本后,再通过git log
是无法显示在这之后的提交信息的,但通过git reflog
可以获取到操作命令的历史。
回到未来的某个版本时,首先通过git reflog
从历史命令中找到想要回到的哈希值,再通过git reset --hard
来切换。
git reflog
git reset --hard 'commit_id'
撤销修改同样包括两方面的内容,由于仓库中的文件在提交之前,可能在工作区当中,或者也有可能在版本控制范围内,也可能在暂区当中。
git checkout -- Readme.md // 如果Readme.md 文件在工作区,则丢弃其修改
git checkout -- . // 丢弃当前工作区当中的文件修改
注:在git checkout --
中--
是必须的。
git reset HEAD Readme.md // 将 Readme.md 恢复到HEAD 提交版本的状态
在文件未添加到暂存区之前,对想删除的文件可以直接物理删除。或者通过git checkout -- file
来丢弃。如果文件已经被提交,则需要git rm
来删除:
git rm Readme.md // 删除已经被提交过的 Readme.md
注:git rm
只能删除已经提交到版本库中的文件。其他状态的文件使用这个指令会出错。
分支管理是版本控制系统当中很重要的一个概念,在Git中新建、合并等分支的操作非常轻量便捷,这样的分支管理,更加便于控制版本、修改等。
git branch // 查看本地分支信息
git branch -v // 查看相对详细的本地分支信息
git branch -av // 查看包括远程仓库在内的版本分支信息
注:在git branch
的输出中,有一个分支的名字前带有*,这标识是当前所在的分支。
当修改一个Bug或开发新功能时,通常会先创建一个分支,用于避免对生产当中的版本的影响。
git branch 'name' // 创建一个分支,name为分支名称
当创建了一个分支后,需要切换到创建的分支上,需要使用切换分支的指令,在分支上开发。
git checkout 'name' // 切换到'name' 的分支
git checkout -b 'name' // 新建完分支后,切换到新建的分支上
当在一个分支上开发完成之后,会将这个分支合并到主分支上。
git checkout master // 切换回主分支
git merge dev // 将dev分支合并到master分支上
注:这里可能会有坑,因为在两个合并时,可能会面临冲突的问题。冲突的问题在后续也会写到。
当之前创建的分支开发完成之后,分支不需要了,就可以删除了。
git branch -d dev // 删除 dev 分支
在上面当中介绍的都是为本地工作区的操作,在提交到了本地的工作区后,可以推送到远程仓库。
git clone hhtps://github.com/git/git.git // 通过https协议,克隆Github上git仓库的代码
git clone test@github.com/git/git.git // 通过ssh协议,克隆Github上git仓库的代码
将本地库,添加到远程库
git remote add origin your_remote_git_repo // 本地库添加远程库
将本地库的提交内容推送到远程库,供别人协作。
git push -u origin master // 第一次推送时,可以简化后面推送或拉取命令的使用
git push origin master // 将本地的master推送到origin远程分支
注:git push -u origin master
,第一次使用时,带上 -u
参数,在将本地的 master 分支推送到远程新的 master 分支的同时,还会把本地的 master 分支和远程的 master 分支关联起来。
在多人协作开发当中,当自己完成了本地仓库中的提交时,在向远程仓库提交前,需要先获取到远程仓库的最新内容。
git fetch origin master
git pull origin master
git fetch
和 git pull
之间的区别:
git fetch
是仅仅获取远程仓库的更新内容,并不会自动做合并。git pull
在获取远程仓库的内容后,会自动做合并,可以看成 git fetch
之后 git merge
。git remote [-v] // 显示远程版本库信息
git branch --set-upstream 'local_branch' origin/remote_branch
当远程仓库迁移时,需要修改本地仓库对应的远程仓库的地址。
gir remote set-url origin url
在项目开发时,每提交一次版本,可以将提交的版本打上一个标签,便于后续的检索以及对版本的管理。
git tag -a 'tagname' -m 'comment' 'comment_id'
-a
参数指定标签名, -m
添加备注信息, ‘commit_id’ 指定打标签的提交。
git tag // 查看本地仓库当中的所有标签
git show tagname
git tag -d tagname
git push origin :refs/tags/tagname
git push origin --delete tagname
git push origin :tagname
git push origin tagname
git push origin --tags
git tag -d tagname
git push origin :refs/tags/tagname
git push origin --delete tagname
git push origin :tagname
git push origin tagname
git push origin --tags
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。