git

https://www.liaoxuefeng.com/wiki/896043488029600/902335212905824学习笔记
Git是目前世界上最先进的分布式版本控制系统。
Git跟踪并管理的是修改,而非文件。所以快
设置用户名git config --global user.name "Your Name"
设置邮箱git config --global user.email "email@example.com"

本地仓库

git init创建本地仓库。生成的.git目录是git的版本库。默认会创建一个master分支,如果没有创建其他分支,以下操作都是基于master分支。
git add <file>把文件修改添加到暂存区,可以多次add不同文件。在当前仓库创建一个readme.txt文件,git add readme.txt并添加到仓库,
git commit -m <message>把暂存区的所有内容提交到当前分支。git commit -m '初始化'这样就可以追踪到文件变化了。
每次的修改都要先add到暂存区,再commit到分支。

image.png

git log查看历史提交版本记录。git log --pretty=oneline查看简化的历史提交版本记录
git reset --hard HEAD^回退到上一个版本(上一次commit提交的版本),HEAD指向的是当前版本,上一个版本HEAD^,上上个版本HEAD^^,往上3个版本HEAD~3。如果版本回退了,在用git log查看就看不到当前版本之后的提交记录了,再想回到之前最新的版本,需要找到那条提交记录commit_id。
git reflog 查看每一次的提交记录。和git log有区别
git reset --hard commit_id回到某个版本
git status查看仓库状态,工作区是否有修改没有添加到暂存区,是否有修改没有提交到分支等
git diff HEAD -- <file>查看当前工作区和版本库中(暂存区和分支)的内容区别。
git checkout -- <file>放弃工作区的改变。1. 如果修改还未add到暂存区,就会回到和版本库一样的状态,2. 如果add后发生了修改,就会回到add后的状态。简而言之就是把工作取到的内容恢复到和版本库一样。
git reset HEAD <file>撤销暂存区的添加,撤销上一次的add
撤销add,撤销修改记录,回退版本。
当删除文件时,可以用git rm <file>,和git add <file>效果一样

撤销:

  1. 撤销commit
  • 撤销git commit,撤销git add,保留编辑器改动代码git reset --mixed <commit ID>git reset <commit ID>
  • 撤销gitcommit,不撤销git add,保留编辑器改动代码git reset --soft<commit ID>
  • 撤销gitcommit,撤销git add,删除编辑器改动代码git reset --hard <commit ID>
  1. 撤销add。add了还没提交,就使用git reset HEAD <file> 回到提交前
  2. 撤销工作区的修改。
  • 如果没有add和commit,就使用git checkout -- <file>git checkout .放弃工作区的修改
  • git clean -xdf 删除git没有追踪的文件(编译构建生成的中间文件,可以用此命令删除)

远程仓库

建立远程仓库,如github
git remote add origin git@github.com:della526/gitlearn.git把远程仓库地址关联到本地,并起个名字origin,之后在本地就可以通过origin代替一连串的远程地址。
git remote -v查看远程库信息,可以pull抓取和push推送的远程地址。如果没有推送权限就看不到push地址。
git remote rm origin删除远程仓库origin的关联。此处删除并不是删除远程库,只是删除和远程库的关联。
git push -u origin master 把当前本地版本库中当前分支的内容push到远程仓库origin的master分支。第一次push时,加上-u,之后再push推送时就直接git push不用再加<远程仓库名字> 和<远程仓库分支>了。
git push origin <分支名>对当前分支推送到远程分支
当不指定分支名直接git pushgit pull失败时,可以这样设置一下关联你指定要推送对的远程分支git branch --set-upstream-to=origin/dev dev

分支

git branch dev本地创建分支dev
git checkout dev 本地切换到/检出dev分支 新版本 git switch <name>
git checkout -b dev加上-b相当于做了两件事情,创建dev分支并切换到该分支。创建dev分支并切换到该分支。新版本git switch -c <name>
git branch查看分支,及当前分支.带*号的就是当前所在分支。

image.png

add并commit提交dev的修改内容。然后切换到 master分支。
git merge dev,把dev分支的提交内容合并到当前分支(master)。
git branch -d dev删除dev分支
git branch -D dev强行删除分支,没有被合并过的分支需要强行删除
因为创建、合并、删除分支特别快,所以在做某个任务时,检验使用分支,合并后删除分支
sourcetree中提示超前一个版本的,意思是本地版本比远程版本更新一个版本。
如果两分支在merge时发生冲突(如修改了 同一个文件同一处代码),先处理冲突,把冲突文件处理为我们想要的内容 ,再add和commit。
git log --graph --pretty=oneline --abbrev-commit查看分支合并情况。更详细内容git log --graph
image.png

git checkout -b dev origin/dev创建和远程dev相关联的本地分支dev,新来的小伙伴从远程库clone时,只能看得到master分支,他要修改dev上的内容,就得创建个本地dev分支,并且和远程dev相关联。然后add,commit提交,push推送git push origin dev
注意,的多人合作的项目,在push前先pull远程最新的代码git pull origin dev,若拉下后有冲突,先解决冲突,再add提交,push推送。

  1. 合并方式
    1、git merge默认采用Fast-forward快速合并,直接把HEAD指向被合并分支的提交,不会产生新的提交。在这种模式下,删除分支后,会丢掉分支信息,后续就看不出来是否做过合并。
    2、--no-ff强制禁用Fast forward模式,会产生新的提交。需要输入提交信息git merge --no-ff -m '提交信息' dev。即使删除被合并的分支,后续也能看到合并记录。
    image.png

    在实际开发中,master一般用于发布正式版本,dev用来开发,属于不稳定版本 ,RD创建各自的任务分支,然后合并到dev。
    image.png
  2. 储藏
    git stash储藏当前修改,如果有新增文件,必须先add再stash,stash之能存储在版本库中的文件。(场景:当前分支没做完不想提交,但又必须切到另一个分支去修改)。
    git stash list查看stash列表,在列表中找到你要取出的储藏的对应索引。
    git stash apply stash@{索引}取出储藏的修改内容,删掉该条stashgit stash drop stash@{index}
    或者直接使用git stash pop stash@{索引}(该命令做了两个操作“取出储藏和删除储藏”)。
    image.png
  3. git cherry-pick commit_id把某个分支的‘修改提交’合并到当前分支。
    当某个bug分支提交后,再合并到master,删除bug分支。此时想在dev分支也把这个bug提交的内容 合并过来,但又不想把整个master的内容合过来。此时先通过git reflog找到bug提交的commit_id,然后执行git cherry-pick commit_id,就合到dev分支了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容