git的使用

来源:互联网 发布:js 强制转换字符串 编辑:程序博客网 时间:2024/06/10 07:41

git的使用

1. git基础

第一次使用git前的配置

配置用户名和邮箱,每次Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录。例子如下:

git config --global user.name "John Doe"git config --global user.email johndoe@example.com

git config 的选项有:
- –global 表示全局的配置,去掉该选项表示在当前库进行配置
- -l or –list 展示配置

克隆远端仓库

git clone url

查看clone到本地的库中的文件状态

git statu

git statu 展示的更改类型有以下几种:

  • 尚未跟踪的文件,即没有加入到版本控制的文件

  • 尚未暂存(stage)以备提交的变更,即没有放入暂存区的变更

  • 需提交的变更,即已经暂存的变更,即已经放入暂存区的变更,且可以提交给分支的变更

查看历史提交记录

使用git log可以查看本地库的提交记录(即还没有push到远程库的更改,进为commit到本地库的更改) + 远程库的提交记录。gitlog的选项有很多,详见参考文献4。

git loggit log  --pretty=oneline # 展示简略的loggit log file #仅仅查看某个文件的commit记录

另外,git reflog [file]可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录.

提交更改

提交更改到本地库

无论是尚未跟踪的文件或者尚未暂存的变更,使用如下命令进行提交更改:

git add filegit commit -m '提交注释'

而对于已经暂存的变更,直接使用如下命令进行提交变更:

git commit -m '提交注释'

提交更改到远程库

例子如下,其中在push之前,推荐必须pull一下,因为假设远程库有别人新提交的更新,你木有pull下来的话,直接push你自己的更改会报错的。

# 先把更改提交到本地库# 可参考提交更改到本地库的命令# 然后先pull 再 push到远程库git pull origin master # 先进行pull(同步或者说拉取)git push origin master # 再进行推送

.gitignore的使用

对于一个.gitignore文件,用于排除掉不需要提交的文件或者文件夹,如下所示,其中“#”后面为注释:

# 忽略一个文件夹.idea/# 忽略一个某种类型的文件*.pyc

撤销更改与版本回退

http://git.mydoc.io/?t=83149
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。 git checkout其实是用版本库或者暂存区中的版本替换工作区的版本,无论工作区是修改还是删除(删除也算一种修改),都可以“一键还原”。另,就是让这个文件回到最近一次git commit或git add时的状态

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file(将该文件的更改拉回到工作区,即原本在暂存区的更改变成在工作区的更改),就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库

git reset --hard 版本号 # 回退到固定版本git reset --hard HEAD^ # 回退到上一个版本git reset --hard HEAD^^ #回退到上上个版本,以此类推

git reset 另外的用法:

git reset 版本号 # 回退到某一版本但工作区保存自该版本起的修改git reset HEAD^ # 回退到某一版本但工作区保存自该版本起的修改git reset HEAD^^ file # 仅仅回退某个文件

–hard应该为放弃所有修改,包括工作区和暂存区的。

git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

如何处理代码冲突

git diff : 查看工作区 与 最近一次git commit或git add时的区别

其他

本地库结构

需要理解工作区、版本本库中的暂存区(stage),修改的文件需要首先加入暂存区,才能够commit到分支。
本地库结构

  • 工作区: 就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。
  • 版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

2. 例子

如何初始化项目

假设你在本地已经写好了项目的一部分,然后想利用git来进行版本管理。那么首先登陆进码云,创建一个库,名为“deep_face_reco”,然后在自己的本地使用如下命令,将项目提交给远程库,完成初始提交:

#git 全局配置git config --global user.name "tugh"git config --global user.email "guanghuitu@foxmail.com"#项目初始提交cd deep_face_recogit inittouch README.mdtouch .gitignoregit add .git commit -m "first commit"git remote add origin https://git.oschina.net/tugh/deep_face_reco.gitgit push -u origin master

参考文献

[1]码云帮助文档
[2]Pro Git中文版
[3]Git教程-廖雪峰
[4]git log的使用