GIT使用教程

1. 安装GIT

廖雪峰的官方网站
Git使用教程:超详细、超浅显、真正手把手教,包含提交远程库

1.1、 在Linux上安装Git

Debian或Ubuntu Linux,通过一条sudo apt-get install git就可直接完成Git的安装。

1.2、 在Mac OS X上安装Git

有两种安装Git的方法
第一种是安装homebrew,然后通过homebrew安装Git,具体方法请参考:http://brew.sh/。
第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

1.3、在Windows上安装Git

在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,还需要最后一步设置,在命令行输入:

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

2. 创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录(或非空):
pwd 命令用于显示当前目录。

mkdir learngit
cd learngit
pwd
/Users/michael/learngit

第二步,通过git init命令把这个目录变成Git可以管理的仓库:

git init
Initialized empty Git repository in /Users/michael/learngit/.git/

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

3. 把文件添加到版本库

首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的。
添加文件到Git仓库,分两步:
1、使用命令git add <file>,注意,可添加多个文件,实际上就是把文件修改添加到暂存区;(只有添加到暂存区的文件才会被管理,即git管理的是修改,而不是文件。即必须要先增加到缓存区)
2、使用命令git commit -m <message>,完成,就是把暂存区的所有内容提交到当前分支。
比如:

git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files."

-m后面输入的是本次提交的说明,可以输入任意内容。

要随时掌握工作区的状态,使用git status命令,让我们时刻掌握仓库当前的状态。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
git log命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数: git log --pretty=oneline

git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file

4. 版本回退

准备把readme.txt回退到上一个版本,就可以使用git reset命令。

git reset --hard HEAD^   //回退到上一个版本
HEAD is now at e475afc add distributed

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
2. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
3. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

git reset --hard 1094a   //回退到指定的版本号 1094a
HEAD is now at 83b0afe append GPL

5. 撤销修改

git checkout -- readme.txt 

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

  • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
    总之,就是让这个文件回到最近一次git commitgit add时的状态。

场景1: 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

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

6. 创建与合并分支

6.1 创建分支

在Git里,有且只有一个主分支,即master分支。HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是当前分支

git checkout -b dev     //创建并切换到 dev 分支
Switched to a new branch 'dev'

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

git branch dev    //创建 dev 分支
git checkout dev  //切换到 dev 分支
Switched to branch 'dev'

也等价于该命令: git switch -c dev。直接切换到已有的master分支,可以使用: git switch master
然后,用git branch命令查看当前分支:

 git branch
* dev
  master

git branch命令会列出所有分支,当前分支前面会标一个*号。

6.2 合并分支

git merge命令用于合并指定分支到当前分支

git merge dev 
Updating d46f35e..b17d20e
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)

合并 dev 分支到当前分支。
合并完成后,就可以放心地删除dev分支了:

git branch -d dev
Deleted branch dev (was b17d20e).

Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

7. 常见问题

7.1 提交远程仓库超时

描述:之前一样的配置,不做任何修改,在git push提交至远程仓库时报超时错误,如下
在这里插入图片描述
原因:电脑设置了/设置过代理,以至于原来的 git 代理配置不能使用,此时只需将 git 的全局代理取消即可。

// 操作如下
git config --global http.proxy   //查看git是否配置了代理
git config --global --unset http.proxy; //取消代理
//之后重新连接git远程仓库就可以了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值