Git 学习之路

常用单词

  • HEAD --> 当前版本(HEAD^ --> 上一个版本,HEAD^^ --> 上上版本,HEAD~100 --> 上100个版本)
  • Working Directory --> 工作区(电脑里面的目录)
  • Repository --> 版本库
  1. stage(/index) 暂存区----git add 就是把文件修改添加到暂存区
    2.master 自动创建的第一个分支----git commit就是把文件修改提交到分支
  • origin(远程仓库) --> 运行Git的服务器,如Github
  • stash --> 可以把当前工作储藏起来

Git 安装

  • 简单的一句命令行 sudo apt-get install git
  • 安装完成之后需要自报家门
    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"
  • Github是通过SSH来管理设备的
    $ ssh-keygen -t rsa -C "youremail@example.com"

git提交

  • git init --> 在文件夹底下运行这条命令,会是此文件夹变成Git可以管理的仓库
  • 将文件放到Git仓库所需要的步骤
  1. git add 文件名(当全部上传仓库时:git add .)
  2. git commit -m "xxxx"(将文件提交到仓库)
  3. git push origin master 推送到远程仓库

Git管理

  • git status 可以让我们掌握仓库的状态
  • git diff 查看difference
  • git log 查看历史记录(log中commit是版本号)
  • git reset --hard HEAD^(HEAD也可以换成版本号) 回退到上个版本
  • git reflog 记录每一次的行为,里面包括版本号
  • git checkout -- file 把file文件再工作区的修改全部撤销(1.当工作区的修改还没有放到暂存区,撤销到和版本库一样的状态。2.当工作区的修改已经添加到暂存区,撤销到添加暂存区后的状态)
  • git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区
  • git rm “file”从版本库中删除文件,然后commit

远程仓库

  • 在远程仓库里克隆新的仓库(如Github)
    $ git remote add origin git@github.com:XXXXXX/xxxxxx.git
  • 我们一般先创建远程仓库,再从远程仓库克隆
  • git remote 查看远程仓库信息(远程仓库默认名一般为origin)
  • git remote -v 显示更详细的信息

分支管理

步骤 参考

  • (提交点我的理解就是提交的代码节点)一开始的时候,master分支是一条线,Git用master指向最新的提交点,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
  • 当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交点,再把HEAD指向dev,就表示当前分支在dev上。不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。
  • 假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。
  • 合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支。

代码

  • git checkout -b <name> 创建并切换分支(git checkout -b dev 创建并切换dev分支,相当于git branch dev ,git checkout dev)
  • git checkou <name>切换分支(git checkout master 切换回master分支)
  • git branch 查看当前分支,会列出所有的分支,×代表当前分支。
  • git merge <name>合并name分区到当前分支(git merge dev 合并dev到当前分区)
  • git branch -d <name> 删除分区(git branch -d dev 删除dev分区)

冲突管理

  • Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们手动修改后add,commit。
  • git log --graph 查看分支合并图。

分支策略管理

  • git merge --no--ff -m “注释” <name> 禁用Fast forward(在这个模式下合并分区之后无法查找分支信息)。

Bug分支

  • git stash 储藏工作
  • Bug在哪个分支上,就从哪个分支上创建临时分支修复。修复完成之后,切换到相应分支,合并删除临时分支。
  • git stash list 查看stash
  • git stash apply 恢复(恢复后stash内容并不删除,需要用git stash drop来删除)
  • git stash pop 恢复的同时,也把stash删了。
  • git stash apply stash@{0} 恢复到制定的stash

Feature分支

  • 开发一个新feature,最好新建一个分支。
  • 如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

推送分支

  • git push origin <name> 把该分支上所有的远程操作提交到远程。
  • 在Git中分支可以在本地藏着玩,是否推送到远程视心情。

抓取分支

  • 当小伙伴从远程仓库clone时,默认只能看到本地的master。
  • git checkout -b dev origin/dev 创建远程origin的dev分支到本地。

当遇到冲突时

  • git branch --set-upstream dev origin/dev 建立本地dev分支与远程origin/dev分支的链接
  • git pull 把最新的代码抓下来,在本地合并之后,再推送。

多人协作的工作模式

因此,多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
  5. 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

标签 不详细,参考

  • 切换到相应分支
  • git tag <name> 打标签
  • git tag 查看标签

搭建Git服务器 搭建Git服务器

重新修改.gitignore使其重新生效

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

推荐阅读更多精彩内容