git
目录
Git使用记录
这个是比较完整的教程,讲解比较透彻:Pro Git
这个是廖雪峰的教程,深入简出:廖雪峰的Git教程
下面是几个重点特性:
- Git是分布式版本控制系统
- Linus创建了Git工具
- 2008年Github上线
基本概念
工作区(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 commit
或git 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 由 螃蟹