git 从零开始和常见问题

git下载 https://git-scm.com/downloads

git的仓库结构

  • 本地仓库 : 用于提交本地代码 是远程代码与本地代码的中转枢纽
    • 工作目录 ------ 也就是我们使用 git init 初始化仓库的地方,在编辑器可直观显示与修改
    • 版本库 ------ 也就是我们用 git init 初始化仓库时生成的 .git 文件夹 版本库相当于一个文件的数据库,记录了文件的历史版本
    • 缓存区 ------ 缓存区介于本地仓库与工作目录之间,用于提交代码和解决冲突
  • 远程仓库 ------ 用于把本地代码存放到服务器

开始使用

配置全局用户名和邮箱

git config --global user.name "username"
git config --global user.email "email"

下拉代码

git clone 你的url  
git pull (可以拉下所有分支,方便查看和关联)

保存凭据及配置cmd使用git

git config --global credential.helper store (保存凭据,下次不用输入账号密码)
找到git目录---在系统变量的path里新增两条 目录下的对于信息C:\Program Files\Git\bin\git.exe;C:\Program Files\Git\cmd

此时git remote -v 可以看到

origin https://... (fetch)
origin  https://... (push)

添加移除origin

//普通添加 
git remote add origin "https://..."
//强制设置
git remote set-url origin "https://..."  
//移除
git remote rm origin

拉取本地不存在的远程分支(同时本地生成分支)

方法1 git checkout -b 本地分支名 origin/远程分支名 (推荐)
方法2 git clone -b 指定的远程分支名 "https://..." 

本地分支关联远程分支

git branch --set-upstream-to=origin/dev dev

查看当前分支与远程分支跟踪关系

git branch -vv

本地生成分支并且添加对应的远程分支

//创建并切换分支
git checkout -b name
//将分支推送到远程仓库
git  push  origin name
//关联远程分支
git branch --set-upstream-to=origin/name name

撤销未提交更改

git checkout -- filename 
git checkout .
git checkout HEAD -- filename (如果删除了某文件想恢复使用这个)

已经提交 版本回退

git log 查看版本号
git reset --hard 版本号

将master上的内容强制替换为dev上的内容

1. git checkout -master
2. git reset --hard dev
3. git push orgin master -f

当想用本地某个分支强制覆盖远程另一个分支(master dev举例)

1.切换到dev分支,并保证本地已经同步了远端dev的最新代码。

git checkout dev
git pull

2.把本地的dev分支强制推送到远端master

git push origin dev:master -f

3.切换到本地分支master

git checkout master

4.下载远程仓库最新内容,不做合并。

git fetch --all

5.把HEAD指向master最新版本。

git reset --hard origin/master

创建与合并分支等其他常用操作

创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name
合并某分支到当前分支:git merge name
删除分支:git branch –d name
删除远程分支: git push origin --delete name
提交暂存: git add .
提交本地: git commit - m '备注'
推到远程关联分支: git push
更改本地分支名称: git branch -m oldbranchname newbranchname

git 常见问题

执行 git pull 出现 Your configuration specifies to merge with the ref 'refs/heads/xxx' , but no such ref was fetched

出现此问题原因很可能是本地切换分支时候分支名大小出了问题,windows本地不区分大小写,git仓库会区分!
解决办法 : 重命名本地分支比 关联远程对应分支(命令上面有)

执行git pull 出现 error: cannot lock ref 'xxx': ref xxx is at (一个commitID) but expected

问题原因

原因是你这个git工程的.git/refs目录下跟踪的某些git分支,在git pull的时候,与远端的对应分支的refs对比发现不同,所以导致git pull报错。

通常产生这个问题的原因是(以分支git/yousa/feature_01为例):

有人操作git/yousa/feature_01这个分支,在git push的时候使用了git push –force,(当然这个人的git push是push不上去),导致远端分支被覆盖,你本地的refs与远端无法一致,导致问题
git分支是不区分大小写的,如果有人删除掉这个远端分支又重新新建了一个这个分支也会出现同样的问题。

解决办法

根据前面的原因有一些操作方法,基本思路就是要么,强行git pull;要么则是删除掉有问题的refs,再进行git pull(个人还是推荐第二种)(以分支git/yousa/feature_01为例)
删除有问题的refs,可以直接在.git/refs下面根据错误提示删除对应的refs文件,比如这个就是需要删除refs/remotes/origin/git/yousa/feature_01文件(嫌麻烦直接删除整个refs目录也行)
使用git命令删除相应refs文件,git update-ref -d refs/remotes/origin/git/yousa/feature_01
简单粗暴强行git pull,执行git pull -p
另一种思路
error: cannot lock ref 'xxx': ref xxx is at (一个commitID
直观得看错误信息,git本次操作是获取锁失败,git的锁是使用一个共享的文件锁,故删除对应的index.lock文件也可以解决该问题。(直接释放锁)

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

推荐阅读更多精彩内容