git的基本使用

!(http://upload-images.jianshu.io/upload_images/3780525-5ba3c246a7db25e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
注:图片链接http://www.ruanyifeng.com/blog/2014/06/git_remote.html。 侵权删

本地项目上传到 Github
例如:使用命令行工具创建一名为 blog的project,推送到自己的 Github

1.新建本地blog仓库

mkdir blog
cd blog
touch readme.txt

//以上三步操作的是workspace

git init
git add readme.txt  //git add .提交当前文件前所有新增文件
git commit readme.txt -m "commit log description" //可提交多个文件

//以上操作是将workspace的文件上传到本地仓库

  • git init 将woksapce变成repository,当前文件下多了.git文件夹。**clone远程代码仓库到本地的时候,自带.git文件夹,不再需要git init **
  • git add 把文件添加到暂存区index(俗称stage)
  • git commit 提交更改,把暂存区的所有内容提交到当前本地repository

与SVN比较
git是commit到本地仓库,svn是commit到远程服务器。svn没有上图中pull、fetch/clone、push、Repository。git的优势在于,当远程服务器duang掉时,任何本地仓库可以通过push操作恢复远程服务器上的仓库。但是svn没有这样的恢复机制

2.在github上新建一个同名的远程仓库,并复制仓库地址

注:创建完成后,github显示仓库里面是空的,什么都没有,只有当你将本地仓库的文件上传,才会显示文件夹

3.把本地仓库推送到远程仓库

把本地仓库文件推送到远程仓库的必要条件是要将暂存区文件清空。可以用commit命令将暂存区文件提交到本地仓库,也可以用reset撤销add的操作,将文件从暂存区移除

//本地仓库连接到remote仓库,并给remote地址取别名叫origin,以后推送就不需要再使用远程地址
git remote add origin remote仓库名
//把本地仓库的文件推送到远程仓库。-u(--set-upstream)设置push分支,设置以后可直接使用git push命令
git push -u origin master

  • git remote -v //查看origin对应名称
  • git push remote地址 master //不使用别名的推送命令
  • git remote set-url origin remote地址 //给origin重新定位

从远程仓库中下载项目文件到本地

git clone 远程仓库名
git pull origin master 相当于svn的update,在git里面相当于执行了git fetch之后与workspace代码合并

创建branch

git branch 项目分支名    //创建分支
git checkout 项目分支名    //切换到刚刚新建的分支。本次仓库也会自动切换。这样就不需要为同一项目上衍生的多个小项目新建仓库。svn就需要建立多个本地文件夹
git branch    //查看当前分支
git branch -a    //查看所有的分支
git push origin 项目分支名  //将新建分支推送到远程仓库

删除文件

git rm filename
git add -A .
git commit -m "commit log descripition"
git push origin master  //同步远程仓库

:本地错误删除使用git reset --hard HEAD恢复文件

合并branch

git checkout master
git merge 项目分支名    //将新的分支合并到master分支
git push origin master    //将合并后的master分支提交到远程仓库

代码回退

//暂存区回退
git checkout -- filename  //文件一经修改就进入暂存区。此命令是恢复文件,清除修改
//本地仓库回退
git reset HEAD filename
git reset --hard HEAD    //对未commit的被git接管的修改文件,不经过checkout直接回到本地仓库当前版本,当前修改丢失
git reset HEAD指针    //回退到本地仓库指定版本。未commit的被git接管的修改文件,修改内容不会丢失
//本地回退后,同步远程
git push origin master  //协作开发时需谨慎


1.HEAD指针在commit时会改变,通过git log命令查看之前的HEAD指针。用reset命令回到以前版本,用checkout命令撤销在当前版本上还未commit的修改。
2.git reset HEAD filename命令在文件第一次add进暂存区,还未commit时有效,相当于解除git对该文件的管理。已经在git管辖范围里,对修改的文件进行撤销无效,因为文件没有commit,HEAD指针没有改变。此时的撤销修改请用git checkout命令.

//远程仓库回退

常用查看信息的命令

  • git status 随时关注当前文件夹下文件的修改状况
    • 增加了新文件
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
//未追踪文件
Untracked files:
//使用命令git add将新文件add进需要commit的阵列
  (use "git add <file>..." to include in what will be committed)
        test.txt
//没有文件需要commit,但是有还没有确定路径的文件,请用git add添加
nothing added to commit but untracked files present (use "git add" to track)
  • 修改了原来已有的文件(相当于把文件从本地仓库移到了暂存区),但是还未commit
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
//使用git add命令更新需要commit的文件
  (use "git add <file>..." to update what will be committed)
//使用git checkout命令撤销修改
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   index.html
//没有新文件需要add,然后commit
no changes added to commit (use "git add" and/or "git commit -a")

注:
1.新增文件第一次add之后,还没commit之前,可用git reset HEAD filename命令撤销,解除新增文件和git之间的关系,新增文件从暂存区移除,即把staged文件变为untracked文件
2.已经被git接管的文件,一经修改,该文件进入暂存区,提交到本地仓库时,可以不需要再使用add命令。
3.已经被git接管的文件,修改后,没commit之前用git checkout -- filename命令撤销本地文件修改,即将暂存区的文件恢复到之前状态,清空暂存区

  • git diff 顾名思义就是查看difference,显示的格式正是Unix通用的diff格式。
  • git log 命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。
  • git reflog 所有改动日志

文章著作权归本人所有,转载须说明来源。以上命令均为测试所得,如有出入,望指正。

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

推荐阅读更多精彩内容

  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,638评论 4 54
  • 经过一下午的git学习,感觉受益匪浅,不扯淡了,直接进入主题吧,以下是小二对git的一些见解。 首先取得项目的gi...
    走在路上的小二阅读 420评论 0 3
  • Git的使用心得 由于公司对我的代码管理不严谨,所以荒废了好久的Git,一直就没怎么用,后面也多忘光了,所以再次重...
    IUVO阅读 285评论 0 1
  • 【三件事】 1. [ ] pm课程学习11/90 2. [ ] 得到直播例会 3. [ ] 继续补大学问90% 4...
    伽蓝214阅读 146评论 0 0
  • 烦恼俱乐部(2)无种族开放日 “你的眼睛像撒旦的葡萄,你的身体像恶魔的围脖,你的血液像冰镇的毒酒,欧耶耶……我死于...
    雨落荒原阅读 1,366评论 5 15