Git 常用命令

Git 简介

  • 一个开源的分布式版本控制系统
  • 版本控制?比如我在 A1A2A3A4 处分别修改了文件,那我可以随时随地回到任意 AX

Git 安装和配置(windows)

  • 下载安装exe,官网太慢,所以建议用淘宝镜像
  • 安装完毕,找到 Git -> Git Bash ,打开
  • 全局配置用户名和邮箱
    • $ git config --global user.name "Your Name"
    • $ git config --global user.email "email@example.com"
    • 局部配置把 --global 去掉即可

Git 的 工作区 、 暂存区、 master

工作区即打代码的地方,暂存区又叫stage,index用来暂时存放工作区中修改的内容,就是一个中转站,master是项目主分支,HEAD是指针



我最常用的命令

git add .
git commit -m 'update'
git push origin master
git fetch origin master

如果 fetch 合并远程库报错,提示 error: Your local changes to the following files would be overwritten by merge 说明文件有改变,解决:

  • 如果想改变本地库,保留远程库,执行 $ git reset --head ,彻底回退上一个版本,使用 $ git pull 将远程库覆盖本地库
  • (未测试过)如果想保留远程库的修改,只将本地库的新内容添加至远程库,执行 $ git stash,$ git pull,$ git stash pop

Git 常用命令

文件夹中打开Git方式: 文件夹中右键 -> Git Bash Here

  1. 初始化

    • $ git init 初始化,将这个目录变成Git可管理的仓库 ,.git文件夹 - 用来跟踪管理版本库
    •  windows系统自带的记事本在开头添加了0xefbbbf字符(16进制字符),所以网页打开第一行可能会显示一个 '?' ,所以能不用尽量别用
  2. 增加、删除文件

    • $ git add [file1] [file2] 添加指定文件到暂存区
    • $ git add [dir] 添加指定目录到暂存区 ( 包括子目录 )
    • $ git add . 添加修改和新建的文件到暂存区,但不包括被删除的文件
    • $ git add -u 更新所有变化的文件,即提交工作区所有变化的文件到暂存区
    • $ git add -A 提交已被修改和已被删除的文件,但不包括新的文件
    • $ git rm [file1] [file2] 删除工作区文件,并把它放入暂存区
    • $ git rm --cached [file] 停止跟踪指定文件,该文件在工作区位置不变
    • $ git mv [file] [file-rename] 重命名文件,并把改名操作放入暂存区
  3. 提交

    • $ git commit [file1] [file2] -m "message" 提交暂存区中指定文件到仓库中
    • $ git commit -m "message" 提交暂存区所有内容至仓库中
    • $ git commit -a 提交工作区自上一次commit以后的变化文件,至仓库中
    • $ git commit --amend -m "message" 用新的commit,替代上一次提交和提交信息
    • $git commit -v 提交时显示diff(文件差异)信息
  4. 分支

    • $ git branch 显示分支列表和当前分支(带*号的)
    • $ git branch -a 显示本地分支列表和远程分支列表和当前分支(带*号的)
    • $ git branch [branch] 新建分支
    • $ git checkout [branch] 切换分支
    • $ git checkout -b [branch] 新建并切换分支
    • $ git checkout - 切换至上一个分支
    • $ git merge [branch] 合并指定分支到当前分支
    • $ git merge --no-ff -m "message" [branch] 用普通模式合并,合并后的历史中有分支信息,而fast forward ( 默认 ) 合并在历史中是看不出曾经做过合并
    • $ git branch -d [branch] 删除一个分支
    • $ git rebase 作用 : 使提交历史干净,整洁

合并分支时,如果没有文件冲突可正常合并,如果有冲突文件(比如两个一样的),Git会告诉我们,Automatic merge failed; fix conflicts and then commit the result 文件合并冲突,必须手动解决以后再提交,这时在Git会在文档中用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,,修改时注意他们只能留一个,箭头和等号要删除。然后提交,合并完成。

  1. 撤销
    • $ git checkout [file] 撤掉暂存区指定文件到工作区
    • $ git checkout . 撤销暂存区所有文件到工作区
    • $ git reset [file] 重置暂存区指定文件,与上一次commit一致,但工作区不变
    • $ git reset --hard 重置暂存区与工作区,与上一次commit一致
    • $ git reset --hard [HEAD] 回退到某个版本,同时也会重置暂存区和工作区,HEAD代表指针,其值可以是,HEAD^ 上一个版本,HEAD^^ 上两个版本, ... ,HEAD~100 上100个版本,或者指定版本号 8817bcf
    • $ git stash 用于保存工作进度,暂存区和工作区的改动将保存起来,当前将是一个干净的工作区,比如用于修复bug时,把文件先保存起来,这时可以在另外的分支或当前分支处理bug
    • $ git stash list 查看stash队列
    • $ git stash apply 恢复队列中第一个记录 $ git stash drop 删除stash里的内容 $ git stash pop 恢复并stash里的内容
    • $ git stash apply [stash] 恢复指定的记录,可以在列表中查看,比如: stash@[0] ,把 apply 换成 pop 可以恢复并删除

当你改乱了工作区某个文件时,想要撤销修改可使用 $ git checkout [file]
当你不但改乱了工作区某个文件,还添加到了暂存区时,想要撤销时分两步,重置暂存区文件 $ git reset [file] ,撤销工作区修改$ git checkout [file],或者一步到位重置暂存区与工作区 $ git reset --hard
当你改乱了,还添加到暂存区,还提交到仓库了,想要撤销需要使用版本回退,比如回退到上一个版本 $ git reset --hard HEAD^

  1. 查看信息

    • $ git status 获取仓库当前状态
    • $ git log 查看当前分支的版本历史
    • $ git reflog 查看所有版本号,由此可以穿梭未来,回到过去
    • $ git log -S [keyword] 根据关键词,搜索提交历史
    • $ git log -[n] --pretty --oneline 以简写的形式显示过去n次的提交信息,显示所有去掉 -[n],显示完整的版本号 --pretty=oneline
    • $ git diff 显示暂存区和工作区的代码差异
  2. 远程仓库

    • $ git remote 查看远程库信息,后面加 -v 查看详细信息
    • $ git remote add origin git@github.com:username/projectname.git 把本地项目与远程项目关联
    • $ git push origin [branch-name] 把本地项目推送至远程项目对应的分支上,origin是默认的主机名,第一次使用会提示验证,输入yes即可
    • $ git push origin --delete [branch] 删除远程分支
    • $ git clone git@github.com:username/projectname.git 把远程项目克隆至本地,git支持多种协议,默认的git://使用ssh协议,也可使用https协议,但传输速度要慢
    • $ git checkout -b [branch-name] origin/[branch-name] 在本地创建和远程分支对应的分支,使用时,本地和远程分支的名称最好一致
    • 如果与远程库相连? 1. 在 c盘 -> user > .ssh > 找到 id_rsa.pub 这是公钥,还有一个是秘钥,右键记事本打开复制,粘贴到 github -> 设置 -> ssh key -> 新建一个 名称随意,内容粘贴。如果没有秘钥使用 $ ssh-keygen -t rsa -C 'YourEmail@example.com' 生成,再没有卸载Git重装 2. 项目关联或者克隆随意 3. 公钥的位置要在环境变量中配置好才能生效,所以生成秘钥最好在默认的位置。
    • 关联失败? 可能是远程库创建时生成了RENAME文件造成内容与本地库不符,使用 $ git pull origin master 抓取远程库与本地库同步
    • 一个项目关联 github 和 gitee ? 先把公钥配置好,然后删除现有的origin的远程库 $ git remote rm origin ,再使用 $ git remote add origin git@github.com:username/projectname.git 分别连接 github 和 gitee ,修改 origin 为 github 执行一次,再修改为 origin 为 gitee 再执行一次,查看 $ git remote -v 时可以看到有两个远程库,推送时需要给定特殊的名称,ex:$ git push github master
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容