git学习总结

                                       Git for windows

本文只是自己的一些学习总结,方便自己查看,如果对您阅读不适,抱歉!!!

常用命令(省略$):git --help(查看命令);mkdir (创建目录);

git init (将文件变成Git可管理的仓库);

ls -ah(查看.git隐藏文件); pwd(当前目录); git add(添加文件到仓库);

git commit -m(上传文件到仓库); git diff(查看修改内容);

git status(查看当前状态); git log(查看版本); git log --pretty=oneline(查看版本);

git reflog(查看历史版本); git reset --hard HEAD^(返回到上一个版本);

cat mygit.txt(查看当前版本内容);git checkout -- mygit.txt(未add撤销修改);

git reset HEAD mygit.txt->git checkout -- mygit.txt(add后撤销修改);

rm mygit.txt -> git checkout -- mygit.txt(撤销删除);

rm mygit.txt -> git rm mygit.txt -> git commit (删除文件);

$ git remote add origin git@github.com:lxh597/learngit.git(关联github);

$ git push -u origin master(上传到github仓库);

$ git push origin master(本地修改后推送到github);

$ git clone git@github.com:lxh597/warehouse.git(克隆到本地);

$ git checkout -b dev(创建并切换至dev分支,相当于git branch dev + git checkout dev); $ git branch(查看当前分支);

$ git branch dev(创建dev分支); $ git checkout dev(切换至dev分支);

$ git merge dev(讲dev分支合并到当前分支); $ git branch -d dev(删除dev分支);

$ git merge --no-ff -m “msg” dev(不适用fast forword合并,log能看出曾经合并过);

$ git stash(储存当前工作现场); $ git stash list(查看储存列表);

$ git stash pop(恢复并删除stash list内容);

$ git stash 可多次储存,用git stash list查看,然后使用git stash apply stash@{0}恢复,使用git stash drop删除;

$ git remote -v(查看远程仓库信息)

$ git tag v1.0(创建标签);

$ git log --pretty=oneline --abbrev-commit -> $ git tag v0.9 53ef5ce (根据commit id);

$ git tag(查看标签); $ git show v1.0(查看标签信息);

$ git tag -a v0.1 -m “version 0.1” 3a9175f (-a 标签名 -m说明);

$ git push origin v1.0(推送标签到远程);

$ git push origin --tags(所有未推送的标签推送到远程);

$ git tag -d v1.0(删除标签);

$ git push origin :refs/tags/v0.9(删除推送到远程的标签);

$ git push origin -d tag v0.1(同上);

一、下载安装

1、github 搜索git for windows

2、选择第一个waylau/git-for-win


3、选择Git for windows Setup下载


4、下载完成后看到如下图标 双击安装


5、点击下一步


6、最后True Type font为可选项(字体)


7、点击下一步


8、此项无影响,默认勾选第一个


9、选择换行符风格

1)checkout为windows换行符,commit为Unix风格;

2)checkout时不做任何处理,commit为Unix风格;

3)文件的换行符不做任何处理;


10、选择MinTTY窗口,美观;


11、默认设置即可;


12、点击install安装;最后点击finish即可;


13、安装完成后开始菜单会看到;目录下shift+右键也会看到Git Bash 和Git GUI 选择Git Bash;


二、创建版本库

安装完成后打开git命令行输入:

$git config --global user.name  “ your name”

$git config --global user.email  “ 123456789@qq.com”  (你的邮箱地址)

因为git是分布式版本控制系统,每台机器都必须有自己的名字和邮箱;--global表示此设备上的所有Git仓库都会使用这个配置,也可以为不同仓库指定不同的用户名和email地址;

选择一个合适地方创建一个空文件夹

$ mkdir filename (创建一个空文件夹)

$ cd filename (进入该文件夹目录)

$ pwd (查看当前目录)

$ git init (将这个目录变成Git可以管理的仓库)出现如下信息表示创建成功,并为一个空仓库

Initialized empty Git repository in F:/learngit/learn/.git/

此时该目录下多了一个.git的隐藏目录,此目录是Git跟踪管理版本库的,切勿修改,可能会破坏Git仓库;此文件可以设置显示隐藏文件或者输入ls -ah命令查看;

在配置好的Git仓库目录下新建一个mygit.txt文件(名字随意),我使用的sublime,字符编码设置为utf-8;切勿使用windows文本文档(原因百度);

内容(随意):Git is a version control system.

Git is free software.

一定要放到配置的Git仓库文件目录下,不然Git找不到文件;

$ git add filename.txt

将文件添加到Git仓库;执行以上代码没有任何提示,表示添加成功,Unix哲学“没有消息就是好消息”;

添加文件可以一次添加多个(如:$ git add filename1.txt  filename2.txt)

将文件提交到仓库,输入如下命令:

$ git commit -m “wrote a mygit file” (-m后面是提交说明,建议输入一些有意义的内容,方便自己或者别人阅读)


上面提示告诉你一个文件改动(添加mygit.txt文件),插入两行内容(文件有2行内容)

$ git add 可以一次添加一个也可以添加多个文件,可反复多次使用,$ commit 一次将所有文件提交完成;

三、基本操作

Git is a distributed version control system.

Git is free software.

修改mygit.txt文件如上,命令行输入$ git status


$git status可以查看仓库当前的状态,上面告诉我们mygit文件被修改过,但是还没有被提交;

但$ git status不能查看具体被修改的内容,如果不记得上次怎么修改的mygit文件,可以使用$ git diff命令查看;


-为被删除的内容 +为新增内容 白色为未修改内容;

使用$ git add mygit.txt将修改过后的文件提交,没有任何提示


再次输入$ git status,最后一行提示将要被修改的文件包括mygit.txt


下一步使用$ git commit -m ”update mygit.txt”提交修改


一个文件被修改,插入一行,删除一行;

使用$ git status 查看当前状态


上面提示告诉你没有需要提交的修改,工作目录是干净的;

要随时使用git status掌握工作区状态,如果告诉你有文件被修改过,可以使用$ git diff查看

再次使用修改文件内容如下并保存:

Git is a distributed version control system.

Git is free software distributed under the GPL.

$ git add mygit.txt;

$ git commit -m “update twice”;

使用$ git log可以查看修改文件的信息(从近到远),如下:


也可使用$ git log --pretty=oneline,结果如下:


后面为commit -m“”引号中的说明(所以前面说到最好输入有意义的内容),前面为commit id,即为版本号(如下图);表示为当前版本;上一个版本为HEAD^,上上个版本为HEAD^^,上100个版本为HEAD100个^。。。(HEAD-100)

使用$ git reset --hard HEAD^ 回退到上一个版本:


使用$ cat mygit.txt查看当前版本内容为上一版本内容:


而你的文件里面也会变成这样:


使用$ git log查看,发现最新版本已经被删除:


如果第二天你突然又想恢复到前面最新的版本,这是你发现你已经找不到这个版本的commit id;你可以使用:$ git reflog


然后 $ git reset --hard 9899562


使用 $ cat mygit.txt 然后你的文件也会变成这样:


四、管理修改

将mygit文件修改,添加两段内容:

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes.

依次使用$ cat mygit.txt ; $ git add mygit.txt ; $ git status输出如下内容:


然后再次修改mygit文件:

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes of files.

输入$ cat mygit.txt 输出:


使用$ git commit -m “change threetimes” 提交修改,然后查看状态$ git status:


此处提示有未提交的修改balabala

输入$ git diff HEAD --mygit.txt 查看工作区(文件)和版本库(.git隐藏文件)中最新版本的区别:


此时文件中是这样:


而版本库中是这样:


可见第二次修改并没有被提交,因为git版本库分为暂存区和master分支,HEAD为指向master分支的指针即当前版本的指针,使用git修改文件时,git add是将文件添加到暂存区,而git commit -m是将暂存区的修改提交到master分支;

第二次修改时未add到暂存区,所以不会被提交。

所以正确的操作方式应该是:

第一次修改->add->第二次修改->add->commit;

五、撤销修改

git撤销修改分两种,第一种是没有add到暂存区,第二种是已经add到暂存区的,下面我们在mygit文件中添加一行(可用cat 命令查看):

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes of files.

oh shit.

此时修改未被add,可使用$ git checkout -- mygit.txt,这样修改就被撤销掉了:


如果修改后的文件已经被add,但没有commit,此时可使用$ git reset HEAD mygit.txt将文件从暂存区的修改撤销掉,如图1倒数第二行提示,$ git reset HEAD mygit.txt 后使用第一步的$ git checkout -- mygit.txt,即可将文件修改撤销,如图2:


六、删除文件

首先在工作区新建一个delete.txt文件,并且add commit:


使用rm delete.txt命令删除文件,此时你在工作区中已经看不到此文件,但是你使用git status命令,会出现如下提示:


此时分两种情况,误删或者确认删除:

如果是误删可使用$ git checkout -- delete.txt ,同时你发现文件回到了工作区:


如果确定要删除此文件在rm mygit.txt 之后输入 git rm mygit.txt 然后commit提交:


七、Github远程仓库

首先注册一个github账号,进入setting中的SSH KEY页面,在git bash中输入cd ~/.ssh查看是否有.ssh文件,如果有,输入ls -a会输出(下图),然后使用$ clip  <  ~/.ssh/id_rsa.pub,将文件内容复制到剪切板,如果没有.ssh文件,输入$ ssh-keygen -t rsa -C "youremail@example.com"(邮箱地址),然后一路回车,出现下图2:

按照前面操作执行:


在github SSH KEY页面中随便输入一个title,然后右键点击粘贴,提交,然后github远程仓库就配置成功了:


点击创建一个新的仓库,名字设为learngit,其他默认设置,点击创建:


根据github提示在本地learngit仓库输入如下命令:

$ git remote add origin git@github.com:lxh597/learngit.git(lxh597改为你的github账号名,用于关联远程库);origin为远程库名字,git默认;

然后:git push -u origin master


第一次push会出现提示:输入yes就ok了:


然后你的github上就会出现你上传的文件了:


说明:git push实际上是把当前分支master推送到远程,第一次推送master分支时,加上-u参数,git不但会把本地master分支推送到远程新的master分支,还会讲其关联起来,后面的推送或者拉区就可以简化命令;

现在只要本地做了提交,就可以通过$ git push origin master 把本地master分支推送到github

八、远程克隆

登陆github创建一个新的仓库,取名warehouse,勾选下方自动生成一个readme文件:


输入$ git clone git@github.com:lxh597/warehouse.git(注意修改账号名),cd进入查看:


九、分支管理

当你开发一个新功能而又不能在短时间内完成,这时你又不能提交未完成的文件,因为这样可能会使别人无法正常工作,如果代码全部写完再进行提交,又可能会有丢失进度的风险;

你可以创建一个属于你自己的分支,别人看不到,想提交就提交,等你把工作做完,再把这个分支合并到原来的分支上,这样既安全又不影响他人工作;

使用$ git checkout -b dev(创建一个名为dev的分支并切换至dev分支),相当于$ git branch dev,$ git checkout dev;使用$ git branch 查看当前分支:


在README文件中添加一行代码,然后add commit 提交:


切换回master分支:git checkout master,然后使用git merge dev将dev合并到当前分支,然后使用git branch -d dev删除dev分支:


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

推荐阅读更多精彩内容