本文假定读者对GIT有一定的基础,仅供大家在工作中碰到问题时参考所用。
Git简介
重要的术语
术语 |
定义 |
仓库 Repository |
一个仓库包括了所有的版本信息、所有的分支和标记信息。 在Git中仓库的每份拷贝都是完整的。仓库让你可以从中取得你的工作副本。 |
分支 Branches |
一个分支意味着一个独立的、拥有自己历史信息的代码线(code line)。你可以从已有的代码中生成一个新的分支 ,这个分支与剩余的分支完全独立。默认的分支往往是叫master。用户可以选择一个分支,选择一个分支叫做checkout. |
标记 Tags |
一个标记指的是某个分支某个特定时间点的状态。通过标记,可以很方便的切换到标记时的状态,例如2009年1月25号在testing分支上的代码状态。 |
提交 Commit |
提交代码后,仓库会创建一个新的版本。这个版本可以在后续被重新获得。每次提交都包括作者和提交者,作者和提交者可以是不同的人。 |
URL |
URl用来标识一个仓库的位置 |
修订 Revision |
用来表示代码的一个版本状态。Git通过用SHA1 hash算法表示的id来标识不同的版本。每一个 SHA1 id都是160位长,16进制标识的字符串.最新的版本可以通过HEAD来获取.之前的版本可以通过"HEAD~1"来获取,以此类推。 |
补丁 |
指的是一个包含对源代码进行修改的文本文件。你可以将这个文件发送给某人,然后他就可以应用这个补丁到他的本地仓库。 |
索引 |
Git 需要将代码的变化显示的与下一次提交进行关联。举个例子,如果你对一个文件继续了修改,然后想将这些修改提交到下一次提交中,你必须将这个文件提交到索引中,通过git add file命令。这样索引可以保存所有变化的快照。 新增的文件总是要显示的添加到索引中来。对于那些之前已经提交过的文件,可以在commit命令中使用-a 选项达到提交到索引的目的。 |
HEAD指针 |
Git 是如何知道你当前在哪个分支上工作的呢?它保存着一个名为 HEAD 的特别指针。在 Git 中,它是一个指向你正在工作中的本地分支的指针(当前分支的别名)。 |
命令大全
配置部分
配置用户名和Email |
git config --global user.name "Example Surname" git config --global user.email "your.email@gmail.com" # Set default so that all changes are always pushed to the repository git config --global push.default "matching" |
获取Git配置信息 |
git config --list |
配置终端高亮 |
git config --global color.status auto git config --global color.branch auto |
忽略特定的文件 |
可以配置Git忽略特定的文件或者是文件夹。这些配置都放在.gitignore文件中。这个文件可以存在于不同的文件夹中,可以包含不同的文件匹配模式。为了让Git忽略bin文件夹,在主目录下放置.gitignore文件,其中内容为bin。 同时Git也提供了全局的配置,core.excludesfile。 |
使用.gitkeep来追踪空的文件夹 |
Git会忽略空的文件夹。如果你想版本控制包括空文件夹,根据惯例会在空文件夹下放置.gitkeep文件。其实对文件名没有特定的要求。一旦一个空文件夹下有文件后,这个文件夹就会在版本控制范围内。 |
新增部分
创建仓库 |
git init |
添加文件 |
git add . |
提交更改 |
git commit -m "Initial commit" git commit -a -m "These are new changes" #将未添加到索引的文件也提交 git add . && git commit -m "message" |
添加远端仓库 |
git remote add origin ../remote-repository.git |
提交到远端 |
git push origin master |
创建一个标记 |
git tag version1.6 -m 'version 1.6' |
创建一个新的分支 |
git branch testing git branch <branchname> [<start_point>]
#创建新的分支,但是不会切换到新建的分支上,如果没有指定start_point,默认#从HEAD指向的提交创建分支。 git push origin develop #提交分支到远端 |
切换分支 |
git checkout testing git checkout -b myfeature develop #创建及切换分支 git checkout -b newbranch [<start_point>] #b代表branch的意思,newbranch 是新分支的名称,如果没有指定提交点(start_point),默认从HEAD指向的提交创建分支。 |
合并两个不同分支的结果 |
#Merge通过所谓的三路合并来完成。分别来自两个分支的最新commit和两个分支的最新公共commit git merge testing |
创建补丁 |
git branch mybranch git checkout mybranch touch test05 echo "New content for test01" >test01 git add . git commit -a -m "First commit in the branch" # Create a patch --> git format-patch master git format-patch origin/master # This created patch 0001-First-commit-in-the-branch.patch git checkout master git apply 0001-First-commit-in-the-branch.patch git add . git commit -a -m "Applied patch" rm 0001-First-commit-in-the-branch.patch |
查看部分
查看修改记录(未提交) |
git log |
查看提交记录 |
git diff |
查看哪些文件做过变动(未提交) |
git status |
图形查看变更历史 |
gitk --all |
显示已有的远端仓库 |
git remote |
克隆仓库 |
git clone git@github.com:vogella/gitbook.git git clone origine |
拉取(Pull)更改 |
git pull origin master |
查看文件内容 |
less test01.txt |
列出所有的标记 |
Git tag |
列出所有本地分支,当前所在的分支前带有*号 |
git branch |
看远端仓库的分支 |
git branch -a |
修改部分
更正提交的信息 |
git commit --amend -m "More changes - now correct" |
还原更改(已加入索引) |
#如果在你的工作副本中,你创建了不想被提交的文件,你可以丢弃它。 git clean -n git clean –f # Now delete |
提取老版本的代码(把commit的内容复制到index和工作副本中) |
git checkout commit_id #通过commit ID。git log命令可以查看commit _id git revert commit_id |
还原所有未加入到索引的更改 |
#如果你还未把更改加入到索引中,你也可以直接还原所有的更改 #即使你删除了一个未添加到索引和提交的文件,你也可以还原出这个文件 git checkout test01.txt # checkout后如果没有commit id号,就是从index中拷贝数据到工作副本 |
还原HEAD所指commit |
#复制HEAD所指commit的test01文件到index中 git reset HEAD test01 #复制index中test01到工作副本中 git checkout test01 |
还原文件夹 |
如果你删除了文件夹且尚未提交,可以通过以下命令来恢复这个文件夹。译者注:即使已经提交,也可以还原 git checkout HEAD -- your_dir_to_restore |
恢复到一个标记 |
git checkout <tag_name> |
推送(push)一个分支到远端仓库 |
git push origin testing git push origin testing testing git push origin testing:testing |
解决合并冲突 |
git mergetool |
合并多个commit为一个 |
git rebase -i HEAD~7 |
Rebasing多个分支 |
#使用merge和rebase,最后的源代码是一样的,但是使用rebase产生的commit历史更加的少,而且历史记录看上去更加的线性 git branch testing git checkout testing echo "This will be rebased to master" > test01 git commit -a -m "New feature in branch" git checkout master git rebase master |
删除部分
删除文件 |
git commit -a -m "removed" git add -A . && git commit -m "removed" |
删除索引中文件(取消删除动作)。 |
如果你已经添加一个文件到索引中,但是未提交。可以通过git reset file 命令将这个文件从索引中删除 git reset incorrect.txt |
删除分支 |
git branch -d testing git push origin :branch-name #把一个空分支push到server上,相当于删除该分支(冒号前面的空格不能少)。
|
删除远端仓库引用 git remote remove origin
管理部分
谁创建了或者是修改了这个文件 |
git blame filename |
以上上个commit信息为起点,创建一条新的分支 |
git checkout -b mybranch master~1 |
附录:
1、github生成非对称密钥对命令:ssh-keygen -t rsa -C your_email@youremail.com
相关推荐
以下是对Git常用命令的详细整理,包括配置、基本操作、分支管理、合并、标签、回滚以及日志和远程操作。 1. **配置操作** - `git config --global user.name "Your Name"`:进行全局配置,设置Git的用户名。 - `...
本篇文档主要介绍了一套由国外开发者整理的Git常用命令速查表,旨在帮助用户快速掌握并应用Git的基础操作。通过这些简洁明了的命令,即使是Git新手也能迅速上手进行版本控制。 #### 二、创建与初始化 ##### 1. ...
### git常用命令总结 #### 一、概述 在日常工作中,`git` 是必不可少的版本控制工具之一。本文档旨在汇总个人使用过程中遇到并频繁使用的 `git` 命令,便于查阅与学习。 #### 二、核心命令及用法详解 **1. git ...
通过本文档,用户能够了解如何在Linux环境下安装并配置Git服务器,掌握常用的Linux命令以及Git命令,从而更好地利用Git工具管理项目版本。 #### 安装Git及SSH服务 在Ubuntu系统上安装Git及其所需的SSH服务是搭建...
总的来说,Git 是一种强大的工具,它通过提供版本控制和协作功能,帮助开发者有效地管理项目,确保代码的质量和一致性。对于多人协作的项目来说,Git的分布式特性使其成为理想的选择,因为它允许开发者独立工作,并...
### Git常用命令详解 #### 一、初始化与配置 **标题和描述中提及的知识点**:本节将详细介绍如何初始化Git仓库以及进行必要的用户配置。 - **初始化设置**: - **创建仓库并配置用户名**:`git config --global ...
以下是对标题"常用命令整理.zip"中涉及的几个主要领域的命令进行详细讲解。 1. **Git** Git是分布式版本控制系统,用于跟踪文件的修改历史。一些常用命令包括: - `git clone <url>`:克隆远程仓库到本地。 - `...
本文将深入探讨Git的基本结构、Git与代码托管平台的关系、常用的Git命令行操作、gitFlow工作流以及如何搭建gitLab服务器。 首先,Git的核心结构由三部分组成:工作区(Working Directory)、暂存区(Index / Stage...
### Git命令大全知识点详解 #### 一、概述 在软件开发过程中,版本控制工具是必...以上就是根据提供的内容整理出的Git常用命令及相关知识点详解。掌握这些命令可以帮助开发者更加高效地管理版本,提高团队协作效率。
18.1 代码管理之殇/ 253 18.1.1 发布分支/ 253 18.1.2 特性分支/ 256 18.1.3 卖主分支/ 257 18.2 分支命令概述/ 258 18.3 “Hello World”开发计划/ 259 18.4 基于特性分支的开发/ 260 18.4.1 创建分支 user1/getopt...
在Git中,rebase、merge、cherry-pick和rm是四个常用的操作命令,用于处理版本合并和版本历史的管理。 rebase是用于调整提交历史的一种工具,它会把当前分支上的每个提交都拿到目标分支上重新应用一遍,这样可以...
安装Git只是开始,学习和掌握Git的常用命令同样重要。例如,`git clone`用于克隆远程仓库,`git add`将更改添加到暂存区,`git commit`保存工作到本地仓库,`git push`将本地提交推送到远程仓库,`git pull`则用来...
在实际开发中,Git的常用命令包括: - `git clone`:克隆远程仓库到本地。 - `git add`:将更改添加到暂存区,准备提交。 - `git commit`:保存工作区的更改到版本库,通常会附带一个提交信息。 - `git push`:将...
这份压缩包"日常运维常用笔记总结(Linux,Mac 命令,开发相关工具以及指令.zip"包含了丰富的资料,主要关注Linux和Mac操作系统中的命令行操作以及与开发相关的工具和指令。下面将对这些知识点进行详细解释。 首先,...
对于Linux系统,尤其是CentOS,安装和使用Git显得尤为重要,因为它是开发者进行源代码管理不可或缺的工具。 Git的手册页(manpages)是Linux系统中用于提供命令行工具详细信息的重要资源。在这个名为"git-manpages-...
本资料“Linux命令整理.rar”是一个压缩包,包含了对Linux常用命令的详细梳理,特别关注了与Git、Python、PHP和MySQL相关的操作。下面我们将深入探讨这些关键知识点。 1. **Linux基础命令** - **ls**:列出目录...
根据给定文件的信息,我们可以提炼出以下与前端开发相关的Git知识点: ...这些知识点涵盖了Git的基础概念、常用命令以及如何高效地管理版本控制流程等方面的内容,对于前端工程师来说具有较高的实用价值。
- 也可以通过`git alias`创建快捷方式,简化常用命令。 6. **版本控制最佳实践**: - 使用`--amend`来修正最近的提交,避免频繁提交小改动。 - `git rebase`用于整理历史,保持提交历史的整洁。 - `git stash`...
Git笔记主要涵盖了Git的基本概念、常用命令、工作流程以及一些高级用法。通过学习Git,开发者可以有效地管理代码版本,协同开发,防止数据丢失,并实现代码的版本回溯。 1. Git基本概念: - **仓库(Repository)*...
Git是世界上最流行的分布式版本..."Git-cheat-sheet"将这些常用命令整理成简洁的参考表,方便快速查阅,是Git初学者和日常开发者的好帮手。在学习过程中,不断实践和理解每个命令的作用,会使你在Git的世界里游刃有余。