Git

来源:互联网 发布:计算机通信与网络 pdf 编辑:程序博客网 时间:2024/06/03 21:31

本文是学习廖雪峰的git教程和网上其他教程后,整理出的笔记。包括了git的安装(windows)和一些在实际开发中常见情况下的常用基本命令。
廖雪峰的官方网站

Git配置

安装git

Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Cygwin的安装和配置都比较复杂,不过msysgit已经完成了这些事,我们只要安装它就好。msysgit是Windows版的Git,从git for windows下载。网速慢的人,可以在CSDN下载频道下载。

安装流程

配置账号

打开Git Bash,在命令行输入

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

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。用了git config命令的–global参数,表示你这台机器上所有的Git仓库都会使用这个配置。

链接远程仓库

GitHub用来提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以在注册了github账号后,还要创建SSH Key。

在用户主目录(C:\Users\Administrator)下,查看.ssh目录下是否存在id_rsaid_rsa.pub两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Git Bash,创建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

创建过程全部使用默认设置,在C:\Users\Administrator.ssh目录下会生成id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥。此时如网上所说,还会生成know_hosts文件,但我在实践中并没有,什么时候会生成,后面会说到。

登陆GitHub,打开“Settings”—“SSH and GPG keys”页面

点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

点“Add Key”,你就应该看到已经添加的Key

验证链接远程仓库是否成功,在命令行输入

$ ssh -T git@github.com The authenticity of host 'github.com (192.30.252.129)' can't be established.RSA key fingerprint is 16:27:xx:xx:xx:xx:xx:4d:eb:df:a6:48.Are you sure you want to continue connecting (yes/no)? yes #确认你是否继续联系,输入yesWarning: Permanently added 'github.com,192.30.252.129' (RSA) to the list of known hosts.Enter passphrase for key '/c/Users/xxxx_000/.ssh/id_rsa':  #生成ssh kye是密码为空则无此项,若设置有密码则有此项且,输入生成ssh key时设置的密码即可。Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. #出现词句话,说明设置成功。

前面说到的know_hosts文件这时候也会在用户主目录中生成。

Git常用命令

创建版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

打开Git Bash,进入到我们需要Git管理的文件夹,在命令行输入

$ git init

这样仓库就创建好了,当前目录下会多一个.git的目录,这个目录是Git来跟踪管理版本库的。

提交文件修改

在介绍提交命令之前,我们先了解一下git的粗略工作过程。

这里写图片描述
工作区(Work Directory):就是电脑上我们平常使用的目录
版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库Git的版本库里存了很多东西,其中最重要的就是称为stage的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

我们在工作区新建了一个readme.txt文件,要进行提交。
首先执行git add,将文件修改添加到暂存区

$ git add readme.txt

然后执行git commit提交更改,实际上就是一次性把暂存区的所有修改提交到HEAD指针指向的分支

$ git commit -m "say something"

修改文件版本

HEAD指向的版本就是当前版本,因此,Git允许我们使用命令git reset在版本的历史之间穿梭。

当我们想退回到之前某个commit版本的时候,用git log可以查看提交历史,以便确定要回退到哪个版本

$ git log$ git log --pretty=oneline

在获取commit id后就可以使用git reset来回到指定版本

$ git reset --hard <commit_id>

另外,我们还可以利用之前的HEAD指针

#返回上一个版本$ git reset --hard HEAD^#返回上100个版本$ git reset --hard HEAD-100

当我们想回到未来的某个commit版本的时候,用git reflog查看命令历史,以便确定要回到未来的哪个版本

$ git reflog

撤销修改

撤销文件的修改,存在两种情况:

  1. 仅在工作区进行了修改
  2. 在工作区完成修改后,使用了git add,推送到了暂存区

对于第一种情况,我们可以手动将修改的内容复原,但很容易出现错误。Git为我们提供了git checkout命令,来丢弃工作区的修改,文件回到最近一次git commitgit add时的状态

$ git checkout -- <file>

对于第二种情况,我们可以使用命令git reset把暂存区的修改撤销掉,重新放回工作区

$ git reset HEAD <file>

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

添加远程仓库

我们在本地有了一个本地仓库,如果在GitHub上再创建一个Git仓库,并且让这两个仓库进行远程同步。那么,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。

首先,登陆GitHub,创建一个新的仓库

然后在Repository name填入和本地仓库相同的文件名,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库

接着打开Git Bash,进入到本地Git仓库,在命令行输入

$ git remote add origin git@github.com:<github_name>/<repository_name>.git

添加后,远程库的名字就是origin,这是Git默认的叫法

下一步,就可以把本地库的所有内容推送到远程库上

$ git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来

从现在起,本地就可以通过以下命令提交

$ git push origin master

克隆远程仓库

添加远程仓库是先有本地库,后有远程库,然后两者进行关联。如果从零开发,那最好的方式是先创建远程库,然后,从远程库克隆。

首先,登陆GitHub,创建一个新的仓库

勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件

接着打开Git Bash,使用命令git clone克隆一个本地库

$ git clone git@github.com:<github_name>/<repository_name>.git

分支功能

查看分支,当前分支前面会标一个*号

$ git branch

创建dev分支

$ git branch <branch_name>

切换分支,此时HEAD就会指向< branch_name >代表的分支分支

$ git checkout <branch_name>

git checkout命令加上-b参数表示创建并切换

$ git checkout -b <branch_name>

合并分支,将指定分支合并到当前分支

$ git merge <branch_name>

合并分支时,强制禁用Fast forward模式

$ git merge --no-ff -m "say something" <branch_name>

查看分支合并情况

$ git log --graph --pretty=oneline --abbrev-commit

隐藏当前分支

$ git stash

显示当前分支的隐藏分支

$ git stash list

恢复某个隐藏分支

$ git stash apply <stash_id>

删除某个隐藏分支

$ git stash drop <stash_id>

恢复某个隐藏分支并删除

$ git stash pop <stash_id>

删除分支

$ git branch -d <branch_name>

强行删除分支

$ git branch -D <branch_name>

标签功能

查看当前分支标签

git tag

当前分支创建标签

git tag <tag_name>

某个commit创建标签

git tag <tag_name> <commit_id>

删除标签

$ git tag -d <tag_name>
0 0
原创粉丝点击