Git快速入门和常用命令

来源:互联网 发布:离散数据相关性 编辑:程序博客网 时间:2024/05/22 04:29

一、快速入门

本地初始化一个项目

首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中。

git config --global user.name "你的名字或昵称"git config --global user.email "你的邮箱"

然后在你的需要初始化版本库的文件夹中执行:

git init git remote add origin <你的项目地址> //注:项目地址形式为:http://git.oschina.net/xxx/xxx.git或者 git@git.oschina.net:xxx/xxx.git

这样就完成了一次版本你的初始化。

如果你想克隆一个项目,只需要执行:

git clone <项目地址>

完成第一次提交

进入你已经初始化好的或者克隆项目的目录,然后执行:

git pull origin master  #从远程仓库获取最新版本并合并<这里需要修改/添加文件,否则与原文件相比就没有变动>
git add .git commit -m "这是我第一次提交的说明"git push origin master

然后如果需要账号密码的话就输入账号密码,这样就完成了一次提交。

二、基本命令

获取与创建项目

git init    #用 git init 在目录中创建新的 Git 仓库
git clone 项目地址    #使用 git clone 拷贝一个 Git 仓库到本地

默认情况下,Git 会按照你提供的 URL 所指示的项目的名称创建你的本地项目目录。 通常就是该 URL 最后一个 / 之后的项目名称。如果你想要一个不一样的名字, 你可以在该命令后加上你想要的名称。

基本快照

添加快照:

git add    #可将该文件添加到缓存

我们可以使用 git add . 命令来添加当前项目的所有文件。当你要将你的修改包含在即将提交的快照里的时候,需要执行 git add。

查看快照信息:

git status    #列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit)的文件,-s参数可简化显示
git diff    #显示已写入缓存与已修改但尚未写入缓存的改动的区别
  • 尚未缓存的改动:git diff
  • 查看已缓存的改动: git diff --cached
  • 查看已缓存的与未缓存的所有改动:git diff HEAD
  • 显示摘要而非整个 diff:git diff --stat

组合起来用就是,git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。

提交快照:

git commit    #将缓存区内容添加到仓库中,最好使用 -m 选项以在命令行中提供提交注释

如果你觉得 git add 提交缓存的流程太过繁琐,你也可以用git commit -a参数跳过这一步。

阻止某个快照上传:

git reset HEAD --文件   #用于取消已缓存的内容

简而言之,执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。

删除快照:

git rm <file>  #从已跟踪文件清单中移除

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm -f <file>

如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可

git rm --cached <file>

递归删除整个目录中的所有子目录和文件

git rm –r * 

移动快照:

git mv  #用于移动或重命名一个文件、目录、软连接

查看配置的远程仓库

git remote    #查看当前配置有哪些远程仓库

提取远程仓库的跟新

git fetch     #从远程仓库下载新分支与数据,该命令执行完后需要执行git merge 远程分支到你所在的分支。
git merge    #从远端仓库提取数据并尝试合并到当前分支,在下面分支管理还会提到

假设你配置好了一个远程仓库,并且你想要提取更新的数据,你可以首先执行 git fetch [alias] 告诉 Git 去获取它有你没有的数据,然后你可以执行 git merge [alias]/[branch] 以将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支。

三、分支管理

创建分支:

git branch (branchname)

切换分支:

git checkout (branchname)
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

列出分支:

git branch

删除分支命令:

git branch -d (branchname)

分支合并命令:

git merge (branchname)

四、历史记录

git log    #列出历史提交记录
git log --oneline    #查看历史记录的简洁的版本
git log --oneline --graph    #查看历史中什么时候出现了分支、合并
git log --reverse --oneline    #逆向显示所有日志
git log --author=用户名 --oneline -5    #查找指定用户的提交日志,看5条
git log --oneline --before={3.weeks.ago} --after={2017-12-12} --no-merges    #查看3周前且在12月12日之后的所有提交,--no-merges 选项以隐藏合并提交

五、标签

git tag -a v1.0    #创建v1.0的标签

-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 我推荐一直创建带注解的标签

git tag    #查看已有标签
git tag -d v1.1    #删除v1.0的标签
git show v1.0    #查看此版本所修改的内容
复制代码
/*Git有commit,为什么还要引入tag?"请把上周一的那个版本打包发布,commit号是6a5819e…""一串乱七八糟的数字不好找!"如果换一个办法:"请把上周一的那个版本打包发布,版本号是v1.2""好的,按照tag v1.2查找commit就行!"所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。*/
复制代码

六、http(s)方式如何自动记住密码

https 方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受 https 带来的极速

按照以下设置记住密码十五分钟:

git config --global credential.helper cache

如果你想自定义记住的时间,可以这样:

git config credential.helper 'cache --timeout=3600' //这里记住的是一个小时,如需其他时间,请修改3600为你想修改的时间,单位是秒

你也可以设置长期记住密码:

git config --global credential.helper store

或修改仓库的地址带上你的账号密码

http://yourname:password@git.oschina.net/name/project.git //注意,当使用邮箱时,请对@符号使用%40替换

如果你原本使用的 ssh 地址想更换成 http(s) 地址,可以执行以下命令:

//删除原本的ssh仓库地址git remote rm origin //origin 代表你原本ssh地址的仓库的别名//新增http地址的仓库git remote add origin http://git.oschina.net/username/project.git

七、版本回退

回退远程仓库的版本

先在本地切换到远程仓库要回退的分支对应的本地分支,然后本地回退至你需要的版本,然后执行:

git push <仓库名> <分支名> -f

以当前版本为基础,回退指定个commit

首先,确认你当前的版本需要回退多少个版本,然后计算出你要回退的版本数量,执行如下命令

git reset HEAD~X //X代表你要回退的版本数量,是数字!!!!

需要注意的是,如果你是合并过分支,那么背合并分支带过来的 commit 并不会被计入回退数量中,而是只计算一个,所以如果需要一次回退多个 commit,不建议使用这种方法

回退到和远程版本一样

有时候,当发生错误修改需要放弃全部修改时,可以以远程分支作为回退点退回到与远程分支一样的地方,执行的命令如下

git reset --hard origin/master // origin代表你远程仓库的名字,master代表分支名
原创粉丝点击