git命令使用

git命令使用总结

本文档分为两部分:1、git命令的使用,本地git仓库管理。2、git服务端搭建和使用。

初始状态:

设置用户名和邮箱:

    git config --giobal user.name "用户名"

    git config --giobal user.email "邮箱"

一、git命令的使用,本地git仓库管理:

git基本命令:

    git init  创建版本库(repository)手动创建一个目录,进入该目录下执行该命令即可将该目录设定为版本库

    如:mkdir /gitdata cd /gitdata git init 这时会在gitdata下生成一个隐藏的.git文件

    git add  将文件添加到仓库 编写需要上传的文件,将该文件放到版本库或版本库子文件夹下,然后执行git add 文件名 即可

    如:在/gitdata下编辑了一个文件readme.txt 然后在该文件夹下执行git add readme.txt

    git commit 将文件提交到仓库 将刚才添加到仓库的文件进行提交 git commit -m "提交的描述信息"

    如:将刚才的文件进行提交:git commit -m "is a readme"

以上git add和git commit为合并使用命令,可以先用git add添加多个文件,然后执行git commit便一次性将刚才所有添加文件进行了提交。

git是分为三个部分,1、自己的文件(工作区);2、暂存区(stage);3、本地库(分支)。git add是将自己的文件添加到了缓存区,git commit将缓存区的文件提交到了本地库,git push是将本地库的修改推送到服务器仓库中。

    git log  查看git提交修改的日志 执行git log命令即可列出历史提交的详情,输入git log --pretty=oneline可以使输出更加简洁

    git reset --hard HEAD^  将文件回滚到上一次的修改状态  HEAD加一个^是回滚一次,可同时加多个^,当太多时(100次)可使用HEAD~100

文件回滚后内容也会变为上次修改之前的内容,同时git log命令也已经无法查看回滚前的信息,这时若还有回滚前的信息,可输入git reset --hard 回滚前的id,这时便以恢复到之前的最新状态。若已找不到之前最近状态的id号则可执行git reflog来查看之前所做的操作,其中记录了id号

git有关三个区域对比的命令:git diff 工作区和暂存区的对比

    git diff --cached 暂存区和分支的对比

    git diff HEAD --readme.txt(readme.txt是要做对比的文件) 工作区和分支的对比

    git checkout -- filename 当文件发生了修改但还没有git add到暂存区时执行该命令可以将修改撤销;当文件已经git add到暂存区之后又进行了修改,则该命令会将文件撤销到和暂存区一样的内容(注意--一定要有,否则会变成其他功能的命令)(当问文件还没有git add时手动把内容改回初始内容也可以起到相同的效果)(该命令其实是用暂存区的版本替换工作区的版本,无论是修改还是删除都可以还原)

    git reset HEAD filename 当文件已经git add到暂存区但是还没有git commit时用该命令可以将文件从暂存区调回工作区,这时再配合上面一个命令可将文件内容彻底撤回

    git rm 想要删除一个文件是可以用该命令,有一个文件readme.txt当你已经将该文件git commit,这时你可以先删除工作区中该文件,之后再执行git rm readme.txt,再执行git commit,这时这个文件就已经在分支中删除(git rm相当于删除了暂存区中readme.txt的镜像,然后git commit是将暂存区的所有镜像覆盖分支)

远程连接github库:

1、先创建本地私钥和公钥,然后将公钥上传到github端

    ssh-keygen -t rsa -C "851****44@qq.com"(自己创建github时的邮箱)  这时生成的私钥和公钥一般在/root/.ssh/下。打开id_rsa.pub,复制里面的内容到github网站相应位置

2、用自己的本地库连接到远端github库

在github上创建一个库,例如创建learngit

    git remote add origin git@github.com:wylqiuqiu/learngit.git  在本地运行该命令,origin是远程库的名字(git默认为改名字,可以设成别的),后为远程库的路径

3、git push -u origin master  将本地库的内容推送至远程库,因为是第一次推送,可加上-u参数,可把本地master分支和远端origin分支关联起来,往后再推送时可不再加该参数

4、git clone git@github.com:wylqiuqiu/ceshi.git  当远端库有一个ceshi的库,而本地端没有时,可以使用此命令将远端库的内容拉到本地库,并且会新建一个可远端库相同名字的本地库

git分支管理:

    git branch 分支名  创建一个分支,如:创建dev分支,可用命令git branch dev

    git checkout 分支名  切换分支,如:切换到dev分支,git checkout dev

注:可用git checkout -b 分支名  可一次创建并且切换到该分支,如:git checkout -b dev,创建dev分支并且切换到该分支

    git branch  查看当前所在分支,分支前有*号的表明当前所在分支

    git merge 分支名  合并制定分区到当前分支,如:现在在master分支,执行git merge dev,可将dev分支合并到master分支,这时便实现了两个分支的合并,这个工能是将最新版的合并到旧版,比如现在dev的分支版本领先与master分支,然后在master分支执行刚才的命令,可以将master提升支dev的版本(合并分支有时会有分支的上冲突导致合并失败,这时需要先将冲突解决后再进行合并)

    git branch -d 分支名  删除制定分支,如:git branch -d dev,删除dev分支

    git log --graph  该命令可以查看分支合并图

    git merge --no-ff -m "描述"  合并分支并且禁用fast forward(快速合并),--no-ff表示禁用快速合并功能,-m则为在合并时创建一个新的commit,这种方式可以在合并后查看到分支历史

    git stash  该命令可以将当前工作区或者缓存去还未提交的内容暂存到一个空间中,然后可以放心切换到其它分支工作,之后再切换回该分支可以将内容调回

    git stash list  查看git stash存起来的内容列表

    git stash apply  将git stash存起来的内容调回工作区,但不删除git stash list列表中的内容

    git stash drop  将git stash 列表中的内容删除,配合git stash apply使用

    git stash pop  将git stash存起来的内容调回工作区,并且删除git stash list中的内容,相当与git stash apply和git stash drop的结合

二、git服务端搭建和使用:

1、确保本机已安装git,没有的话使用以下命令一键安装

    yum -y install git

2、创建git用户,添加密码(为了安全起见最好将git用户设为不能使用/bin/bash登录)

    useradd git

    passwd git

3、在本机合适位置创建存放git服务端仓库(本次使用/var/www/git目录)

4、进入该目录(/var/www/git),创建和初始化git服务端仓库

    git init --bare ceshi.git 一般服务端仓库都以.git结尾,习惯而已,非强制要求

5、这时在/var/www/git目录下会出现ceshi.git目录,证明成功生成了服务端

6、修改ceshi.git目录权限

    chown -R git.git ceshi.git

7、直接在本机其他目录下测试git服务端仓库是否能被clone

    git clone git@ip:/var/www/git/ceshi.git

执行后会告知clone了一个空仓库,然后出现ceshi目录

8、在拉下来的ceshi目录中放入一些文件,推送到git服务端仓库

    cd ceshi

    echo "123" > ceshi.txt

    git add .

    git commit -m "first commit"

    git remote add origin git@ip:/var/www/git/ceshi.git #这一步执行报错,说远端已经存在origin,直接下一步

    git push -u origin master 将本地master分支推送到远端origin下,远端会生成master分支,-u参数会将本地master分支与远端master分支关联起来,以后直接git push origin master就行了

9、此时远端git服务端与本地git仓库就可以正常使用了,想要每次免密和git服务端交互的话,需要在git用户家目录的.ssh/authorized_keys中添加你git仓库主机的ssh公钥

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集...
    Splendid飞羽阅读 313评论 0 0
  • 什么是git Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 与常用的版本控制...
    Yinzhishan阅读 696评论 0 0
  • 一直大多数的时间都是在使用更快捷的桌面工具时候,渐渐的会失去使用命令行来进行工作部署及提交,今天就来重温一下Git...
    黄晓坚阅读 3,356评论 0 9
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,396评论 0 7
  • 原文地址主要用到的命令: git config user.name 设置用户名 git config user....
    AFinalStone阅读 458评论 0 2