大螃嗨

好记性不如烂笔头

用户工具

站点工具


git

Git使用记录

这个是比较完整的教程,讲解比较透彻:Pro Git

这个是廖雪峰的教程,深入简出:廖雪峰的Git教程

下面是几个重点特性:

  • Git是分布式版本控制系统
  • Linus创建了Git工具
  • 2008年Github上线

基本概念

add是把修改放入暂存区,commit是把暂存区的内容进行提交。
第一次修改 → git add → 第二次修改 → git commit
第二次修改不会被提交。

工作区(Working Directory)

本地电脑上的目录,就是我们的工作区。

仓库(Repository)

工作区目录中有一个名为.git的目录,这个目录就是Git仓库。

暂存区(Stage)

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

常用命令

创建仓库

$ mkdir ethdoc_cn
$ cd ethdoc_cn
$ pwd
/root/tempPangXie/ethdoc_cn
$ git init
Initialized empty Git repository in /root/tempPangXie/ethdoc_cn/.git/

创建仓库并关联远程GitHub

Let us say 'yourWebApp' is the folder you have your local web app. Change it to the directory

 cd 'yourWebApp'
#Init git in the folder
 git init
#Now add your github url as a remote
git remote add origin git@second.github.com:hsw625728/mengyoutu.git
#Here origin is the short name for your url
#Now pull the read me file from the github repo
 git pull origin master
#Now push your web app to the github repository
 git push origin master
#Here it is assumed that you are in your master, the default branch

切换远程仓库

$ git remote rm origin
$ git remote add origin <url>

添加文件到仓库

$ git add readme.txt

提交修改到仓库

$ git add readme.txt
$ git commit -m "添加readme.txt"
1 files changed, 3 insertions(+), 0 deletions(-)
 create mode 100644 readme.txt

查看仓库状态

$ git status

查看修改内容

$ git diff <file>

产看日志

$ git log
$ git log --pretty=oneline
411b851fab7dc122f9b815ef04ba7d8e24ac5fae 添加第四行
09d5cfe7237297b205a0b6d6cbabeb0156d90ac9 添加readme.txt

版本回滚

$ git reset --hard 09d5cfe7
HEAD is now at 09d5cfe 添加readme.txt

Git命令历史记录

$ git reflog
09d5cfe HEAD@{0}: 09d5cfe7: updating HEAD
411b851 HEAD@{1}: commit: 添加第四行

撤销修改

$ git checkout -- readme.txt

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commitgit add时的状态。

删除文件

$ git rm <file>
$ git commit -m "删除了文件<file>"

创建与合并分支

创建并切换分支

$ git checkout -b <name>
Switched to a new branch 'name'

相当于如下两条命令

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

查看分支信息

$ git branch
* dev
  master

切换分支

$ git checkout master
Switched to branch 'master'

dev分支合并到master分支

$ git merge dev

删除分支

$ git branch -d <name>

删除远程分支

$ git push origin --delete <name>

查看远程分支

git branch -r

拉取远程分支并创建本地分支

方法一

git checkout -b 本地分支名x origin/远程分支名x
#使用该方式会在本地新建分支x,并自动切换到该本地分支x。
#采用此种方法建立的本地分支会和远程分支建立映射关系。

方式二

git fetch origin 远程分支名x:本地分支名x
#使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。
#采用此种方法建立的本地分支不会和远程分支建立映射关系。
#需要使用下面的命令手动建立映射关系
git branch -u origin/addFile

查询当前远程的版本

$ git remote -v
#获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch])
$ git fetch origin master  [示例1:获取远端的origin/master分支]
$ git fetch origin dev [示例2:获取远端的origin/dev分支]

查看版本差异

$ git log -p master..origin/master [示例1:查看本地master与远端origin/master的版本差异]
$ git log -p dev..origin/dev   [示例2:查看本地dev与远端origin/dev的版本差异]

合并最新代码到本地分支

$ git merge origin/master  [示例1:合并远端分支origin/master到当前分支]
$ git merge origin/dev [示例2:合并远端分支origin/dev到当前分支]

创建TAG

$ git tag -a v1.1.0 -m 'v1.1.0审核版本'
$ git show v1.1.0
$ git push origin v1.1.0

本地分支推送到远端

$ git push origin pangxie-mobile:pangxie-mobile

暂时存储stash

#暂存现在的修改
$ git stash
#查看现有的暂存stash
$ git stash list
#恢复一个暂存头部版本(恢复但不删除)
$ git stash apply
#恢复一个暂存头部版本(恢复同时删除)
$ git stash pop

分支代码强制覆盖master

#切换到develop分支下,并保证本地已经同步了远端develop的最新代码。
$ git checkout develop
$ git pull
#把本地的develop分支强制(-f)推送到远端master。
$ git push origin develop:master -f
#切换到旧分支master。
$ git checkout master
#下载远程仓库最新内容,不做合并。
$ git fetch --all
#把HEAD指向master最新版本。
$ git reset --hard origin/master

回滚master

$ git reset --hard 297ff2dcf20605297684f296a4b4ccaa1cf4dc48
$ git push -f origin master

文件修改历史

git log --pretty=oneline 文件名
git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e
git.txt · 最后更改: 2020/07/06 07:18 由 螃蟹