Git常用操作和命令

本篇结构:工作流+单独命令
以使用频率排序

一.工作流

1.pull代码,开新分支,开发完成,push代码

添加远程URL
git remote add origin url
git clone url 一样的效果 克隆远端仓库代码)
拉取最新的dev代码
git pull origin dev
开启并切换到feature分支
git checkout -b feature
在feature 分支完成开发后
将修改的代码添加到暂存区
git add .
查看修改 刚刚修改的文件是否被追踪到
git status
将暂存区的代码提交到本地仓库 写入信息
git commit -m "this is a commit message"
将本地仓库的代码push到远程
git push origin feature

最后可以在远程管理页面中加入pull request

2.commit的合并

https://www.jianshu.com/p/29bbZZ983ec48a
//查看提交日志
git log

image.png

//比如我们需要合并前3个commit
git rebase -i HEAD~3

1572235007(1).jpg

(进入vi模式 输入i进入编辑模式 esc退出编辑模式 输入wq保存退出 或者q!不保存退出 或者ZZ保存退出)
在不需要的commit之前 把pick改为squash或者s
然后Esc+ZZ保存退出
git会自动合并并且弹出合并信息
此时我们可以选择是否要保留message 不保留的话则在message之前加#号 注释起信息
image.png

完成注释后:
Esc+ZZ
合并完commit后
强制push
git push -u origin frature -f

3.衍合分支 rebase

比如我要将YIT-3872分支合dev进行衍合
(YIT-3872是从dev开出来的 但是后来 dev的代码又发生了改变 所有此时如果直接push YIT-3872时 需要将最新的dev代码衍合进来 否则会失败)
第一步:
在衍合之前要将YIT-3872的代码 commit 并且 push 到远端库 我里commit给是message是 “qqq”
因为rebase 是一个相对来说比较危险的操作 很容易出错 所以在push代码作为一个备份

当前分支YIT-3872
git rebase dev
执行过程中可能会有代码冲突 依据YIT-3872的commit一个个对比
比如我这里:

image.png

BackupPhotoPresent.kt这个文件中出现了代码冲突 需要我手动取解决
打开IDE android studio 找到这个文件 看冲突的地方:
image.png

这里我们可以看到最新的dev代码HEAD和我们本地commit的代码有冲突
我们依据实际情况选择保留哪个
dev代码是等号上方
qqq本地代码是等号下方
也可能是所有都要保留

解决完成所有冲突后
git add .
将刚刚的修改加入缓冲区
git status
查看修改的文件是否被追踪到
然后
git rebase --continue
继续YIT-3872的下一个commit和 dev HEAD进行对比
如果没有冲突 则会返回以下结果
Applying: qqq
此时表示衍合完成
衍合完成最后一步:
强制push
git push origin YIT-3872:YIT-3872 -f

4.暂时隐藏修改

git stash 将原本的分支修改保存隐藏起来
然后切换分支修改其他小bug
要回来继续最开始的分支时:
git stash list 查看所有存储的修改
git stash apply stash@{0} 恢复显示list中的第一个修改
git stash drop stash@{0} 删除list中的存储的第一个数据

5.添加忽略文件

1.将.idea目录加入ignore清单:
echo '.idea' >> .gitignore
2.从git中删除idea:
git rm -r --cached .idea
3.将.gitignore文件加入git:
git add .gitignore
4.提交.gitignore文件,将.idea从源代码仓库中删除:
git commit -m '忽略.idea'
5.Push到Git服务器:
git push

6.将本地项目上传到github库

cd "E:\Study\Project\TomatoStudy"进入项目文件地址
git init初始化git
git add .添加缓冲区
git status查看文件追踪情况
git commit -m"my first commit finish TomatoStudy"将文件添加到本地仓库
添加远程仓库地址
git remote add origin https://github.com/yuqiaodan/TomatoStudy.git
保存到远程仓库
git push -u origin master

二.单独命令

git reset --hard放弃本地修改
git branch 查看所有分支
git branch -d dev删除指定分支dev
git clone -b dev URLclone指定分支
git checkout -b dev origin/dev不是从原分支切出dev,而是从远程仓库拉下dev分支并切换

git commit --amend修改commit信息 修改完成后强制push

git push -u origin dev -f强制push

大写I进入编辑模式
编辑模式按ESC+大写的两下Z就可以保存并退出

三.不常用命令 作记录

基本命令 https://www.cnblogs.com/ldj3/p/9172804.html
分支详解 https://www.cnblogs.com/matengfei123/p/8252128.html
创建版本库:
git init (初始化本地版本库)
git clone <url> e/myproject (克隆远程版本库 到指定位置)
将文件从工作区添加到暂存区:
git add 目录 /file.name: 添加整个目录下的文件或添加一个文件

将暂存区的文件commit到本地仓库:
git commit -m"First commit": 将暂存区的文件commit到本地仓库。
(-m “message” 信息参数用于说明)
配置远程origin的一些命令:
git remote add origin url (添加远程origin)
git remote -v:查看当前的origin是什么
git remote rm origin:删除远程origin

将本地仓库的代码push到远程仓库(慎重慎重):

git push -u origin master(第一次push的时候要- u)
git push origin master

获取代码:
git pull origin master (获取代码并快速整合)
git fetch origin (从远端库获取代码)

合并与衍合:
git merge <branch> # 合并指定分支到当前分支
git merge --abort # 取消当前合并,重建合并前状态
git merge dev -Xtheirs # 以合并dev分支到当前分支,有冲突则以dev分支为准给i他
git rebase <branch> # 衍合指定分支到当前分支

git branch -d dev 删除指定分支

git branch 查看所有分支

commit和push的区别:
commit操作的是本地库
push操作远程库
git clone顾名思义就是将其他仓库克隆到本地
git pull是拉取远程分支更新到本地仓库的操作
git pull = git fetch + git merge

四.Git小知识

4.1 开发过程中master发生重要修改时该怎么办

遇到的问题:我在我的分支dev上进行开发,但开发过程中,master分支产生了非常非常重要的修改,需要将修改内容合并到我的dev分支,再继续开发。
解决办法:首先明确一点,我们不能操作master,但是可以在master现有的基础上开启一个新的分支future,然后将future分支合并到dev,这时可能会有冲突需要解决,解决完成后,可以删除掉future分支,直接继续在dev进行开发就行。

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