git学习总结

(参照莫烦教程morvanzhou.github.io/tutorials/others/git/

1.windos下安装

git为windows提供了.exe的安装包,进入https://git-scm.com/download/win,选择对应的版本,按照默认安装参数安装即可。成功安装后,会在所有程序中出现一个git文件夹,里面有一个Git Bash,之后的命令行操作都可以在这个Git Bash下完成。

git文件夹


2.创建git版本库

init

首先选择要对那个文件夹进行git管理,创建一个文件夹stud,打开Git Bash窗口,cd到stud目录下

使用git config 添加name和email,这样可以更好的记录每一个记录每一个修改的人

使用git init 对该文件进行git管理

提示已经建立了一个空的git管理库

创建一个1.py文件, .git文件夹下存放的为git的一些配置管理文件

status

使用git stauts 可以查看当前版本库的状态

on branch master 提示当前分支在master上,红色的1.py表示1.py的文件还未被加入版本库,提示使用git add <file>添加至版本库

add

使用git add 1.py将1.py文件添加至版本库,还可以使用git add .命令,表示一次性添加所有未被添加的文件

可以看到使用git add 1.py之后再使用git status查看出现了绿色的1.py,表示1.py已添加至版本库

commit

使用git commit -m "creat 1.py"将添加至版本库的1.py文件提交,-m参数表示为此次更改添加的注释

可以看到提示1 file changed

3.修改日志、查看修改内容(log、diff)

log

使用git log 命令可以查看提交的修改记录,可以看到commit的id号有二三十位字母加数字组成,Author为log config 中配置的name和email,date和注释。git log --oneline查看提交修改记录,显示为一行commit id这里只取7位,注释。

编辑1.py加入a = 1,然后git status查看状态,git add . 添加改动至版本库,git commit -m "change 1"提交修改至版本库,使用git log 可以查看到所有提交修改的信息。

diff

修改1.py ,a = 2 b = 1。

没有使用git add .之前,查看1.py与上次commit的1.py的不同使用git diff 查看,红色的-a = 1表示删除了 a = 1,绿色的+a = 2 +b = 1表示添加了a = 2 b = 1

使用 git add .添加1.py至版本库之后,1.py变成了可提交状态,此时使用git diff --cached查看1.py与commit之前的1.py的不同,可以看到此时使用git diff没有任何返回。

再次修改1.py 添加c = b,此时a = 2, b = 1已结通过add添加至版本库,c = b的修改未add,使用git diff HEAD 可以查看这种类型的未commit和commit的不同,下图对比了三种diff的不同

git diff HEAD --filename查看工作区(未add到暂存区)和本地版本库最新修改的文件不同                   git diff --filename 查看工作区和版本库的文件不同                                                                                         git diff --cached  --filename 查看暂存区和版本库的文件不同

修改已commit 的版本

复制1.py文件,重命名为2.py,想要吧2.py也写进之前的commit进change2中怎么做呢,可以使用git commit --amend --no-edit (--no-edit不编辑直接合并到上一个commit)

回到过去reset

回到add之前

有时add了修改,又想回到add之前在添加一些修改,可以使用git reset 命令。

编辑1.py,添加d = 1,git add添加至版本库,然后使用git reset 1.py命令可以回到add之前

git status -s直接显示文件的状态,是否添加至版本库,绿色的M表示添加至版本库,红色的M表示未添加至版本库

回到commit之前

每个commit都有一个id号,HEAD是一个指针,指引当前状态是哪个commit,要想回到commit之前,需要让HEAD回到过去,并reset到之前的HEAD。

git reset --hard HEAD会把当前工作目录中未提交的所有内容清空,git reset --hard HEAD^或git reset --hard id号回到上一个commit

可以看到change2消失了

恢复change2,git reflog 查看所有分支的操作记录,使用git reset --hard id号可以恢复change2

回到从前(checkout针对单个文件)

上面做的都是让整个版本库回到commit 之前,只想让某单个文件回到commit之前,可以使用git checkout id号 -- 文件名

git checkout id -- 1.py之后可以看到1.py回到了上次commit的内容,git status看到此时相当于change2中1.py有修改可以提交,使用git commit -m ""back to change ”提交修改,提交之后之前的change2还存在,又产生了一个新的commit记录,但是1.py文件的状态已经回到了c1a24fc时的状态,这就是与reset的区别,reset之后整个版本库会回退至c1a24fc的状态,change2的commit记录会消失

分支

git branch dev 新建名为dev的分支,git branch查看分支, git checkout dev 切换分支,git checkout -b+分支名,可以直接创建和切换分支,git branch -D dev 删除某个分支

在分支中修改文件和在master中修改文件是一样的, -am add所有改变并直接commit

将dev的修改merge推送至master,先使用git checkout master从dev切换分支master,再git merge dev,使用git merge dev 在git log 下不会有commit信息,使用git merge --no-ff -m "keep merge info" dev可以保留merge的commit 信息

merge 分支冲突

可能会有这样的情况,当你在dev分支上进行开发,有人在master上更改了遗留的bug,这个时候当你开发完dev想merge dev到master的时候就会出现冲突了

merge的时候提示出现冲突了

之所以冲突是因为1.py在master和dev上是不同的,打开1.py可以看到git已经把冲突的部分帮我们标记出来了,手动修改下1.py文件

git标记的1.py冲突部分

手动解决冲突之后的1.py

这个时候再进行merge,可以看到这次可以成功merge

rebase分支冲突

rebase也可以进行合并,当有一个共享的分支master和一个当前正在开发的dev分支,当master分支修改了之前遗留的一些bug后,我想试试看修复这些bug之后的版本是否和我的dev分支兼容,这个时候可以使用rebase.(rebase相当于提取了当前的修改,然后将其复制到了目标分支之后,这样可以在dev分支上看到之前发生在master上面的修改log)

在master分支下使用git reset --hard id命令回到之前未merge的状态

可以看到这时,1.py在master和dev中都有不同的修改,因为我们想在dev上rebase master,使用git checkout dev切换至dev分支,这时通过rebase进行合并,可以看到提示文件冲突了,这个时候使用git branch可以看到此时不在HEAD即不在dev也不在master上

vi 1.py 去手动处理掉冲突,然后 git add . 再git rebase --continue可以看到此时rebase成功了,使用git log --oneline可以看到,dev里面加入了master的commit记录,这里和merge不同,merge会创建一个新的commit记录去进行base、目标分支的合并。

使用rebase时只能在自己的分支下面rebase,不可以在共享的分支下进行rebase,这样的话会将master中的commit历史改变

stash

git stash用来暂存当前工作区的内容,让工作区的内容回到和上一次commit的内容一致。这个时候就可以在当前分支下新建一个新的分支内容和当前分支内容一致了

git stash list 用来查看当前stash中的缓存,git stash pop用来提取之前暂存的内容

git下忽略文件

在创建的git仓库文件夹下新建一个.gitignore文件。
# 忽略*.o和*.a文件
*.[oa]
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
# 忽略dbg文件和dbg目录
dbg
# 只忽略dbg目录,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/
# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg

github

注册自己的github账号,在git bash中生成一对秘钥,在github setting 中添加ssh key

在github上创建一个仓库,在本地新建一个文件,使用git bash cd进这个文件,然后创建一个README.md文件,使用git config 命令添加name和email,git init 对该文件进行git 管理,使用git commit -am 提交新添加的README.md文件,使用git remote add origin +git仓库url(第一次提交项目需使用这行命令将本地仓库与远程的仓库建立一个链接,origin相当于是仓库url的别名)

git push -u origin master将修改提交到远程仓库(这里的-u参数相当于指定origin为默认的主机)

git push -u origin dev提交dev分支到远程仓库

git branch -D dev 删除本地dev分支,git push -u origin :dev删除远程仓库中的dev分支(:+分支名表示删除分支)

git clone +git仓库url,下载整个项目

git pull -u origin master 将当前master分支的更改更新到本地

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

推荐阅读更多精彩内容

  • Git for windows 本文只是自己的一些学习总结,方便自己查看,如果对您阅读不适,抱歉!!! 常用命令(...
    Lxs_597阅读 331评论 0 0
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,632评论 9 163
  • 昨天开始学习git,摸索一天,记下若干要点,权当学习笔记,以备查漏补缺。 GIT配置 ** 安装 **window...
    风间莫一阅读 207评论 2 1
  • 世间最幸福的事,莫过于我想和你在一起,而你也是一样。 1 L君,原是一名大学老师,因为教学出色成为该所大学最年轻的...
    小文青年阅读 648评论 11 15
  • 2017/5/21 好久没有存款了,今天好想存款。 给天父: 我的心哪,你当默默无声,专等候神,因为我的救恩,我的...
    挑战30天李海华阅读 261评论 0 1