Git命令整理

由于Git命令较多,将常使用的Git命令做一下整理与总结。

实际工作中大体也会用到这样的工作流程:
开发某个网站。
为实现某个新的需求,创建一个分支。
在这个分支上开展工作。
假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照下面的方式处理:

返回到原先已经发布到生产服务器上的分支。
为这次紧急修补建立一个新分支,并在其中修复问题。
通过测试后,回到生产服务器所在的分支,将修补分支合并进来,然后再推送到生产服务器上。
切换到之前实现新需求的分支,继续工作。

Git初始化设置
git config --global user.name "xxx"
git config --global user.email "519401502@qq.com"

pwd 查看当前路径

git init 将当前目录变成git可以管理的仓库

git init newrepo 指定目录变成可以管理的仓库

git add text.txt 告诉git,把text.txt文件添加到仓库。注意:每次可以多次添加。

git commit -m "update" 提交add所添加的内容到git仓库
git commit -a 跳过使用暂存区域的方式,直接提交
git commit --amend 撤销提交操作,如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。

解决合并代码冲突:
git stash
git pull
git stash pop

git status 查看当前仓库的状态
git status -s 加了-s 参数,以获得简短的结果输出。

git branch -r 查看远程分支
git checkout -b 本地分支名x origin/远程分支名x 拉取远程分支内容

git diff --cached 已经暂存起来的文件和上次提交时的快照之间的差异。
git diff text.txt 查看做了哪些修改

git log 查看我们提交内容的历史记录
git log --pretty=oneline 查看我们提交内容的历史记录,简约出现

git reset --hard head^ 退回上个版本
git reset --hard head^^ 退回上上个版本
git reset --hard head~100 退回100次之前的版本

git rm -r --cached . 删除本地缓存,改变成未track状态。如果添加了忽略文件,通常需要执行以下这个命令才会生效。

cat text.txt 查看内容

vim text.txt 编辑text内容

git reset --hard cb926e7ea50ad11b8f9e909c05226233bf755030 退回到指定版本,序列是提交序列号

git reflog 命令输入记录

git commit --amend 修改提交说明。

git checkout -- text.txt 撤销,恢复到上个状态

把一个分支中的修改整合到另一个分支的办法有两种:merge 和 rebase。

ssh-keygen -t rsa -C "youremail@example.com" 创建id_rsa和id_rsa.pub这两个文件,这是绑定GITHUB的需要用的密钥

git add . 添加所有文件,很方便,经常使用。
git add *.c 添加以.c结尾的文件

git remote add origin git@github.com:你的账号/learngit.git 关联GITHUB。
码云版:git remote add origin git@gitee.com:liaoxuefeng/learngit.git 关联码云

git clone git@github.com:你的账号/gitskills.git 克隆github的项目到本地

git push -u origin master 把本地库上传到github,并关联github
git push -u origin master -f 强推,注意:会覆盖远程库
git push origin serverfix:server 将本地serverfix分支推送到server远程库分支上。

git push origin master 把本地库上传到github,origin表示远程库的名字,可以根据git remote -v命令查看远程库名,master表示当前本地的分支,可以根据git branch 查看。

git remote rename oldname newname 修改远程仓库名的简称

git remote -v 显示远程库地址。

git remote show [remote-name] 查看远程库信息

git pull -u origin master:master 更新代码,master是分支的名称。

git push origin clien:serverfix 将本地clien分支内容推送到远程库serverfix上。

git checkout -b dev 切换并创建本地分支到dev
git checkout -b origin/text 切换远程库分支,origin是远程库名字。

git branch (当前分支前面会标一个*号)查看分支

git checkout <name> 切换分支
git merge <name> 合并某分支到当前分支
git branch -d dev 删除dev分支
git branch -D feature-vulcan 强制删除分支
git branch -m devel develop 重命名分支。
git branch --set-upstream dev origin/dev 本地dev分支与远程库dev分支建立联系
git branch dev 创建分支
git branch -r 查看远程分支

git pull 更新代码到最新
git pull github master:text 从远程库master分支拉取数据到本地text分支
git pull gitee master 指定远程仓库名,指定本地分支。

git remote -v 查看远程库信息

git log --graph命令可以看到分支合并图
git log --oneline 简洁的日志
git log -2 显示最近两次的记录。

简单介绍一些 git log 命令支持的选项:

-p  按补丁格式显示每个更新之间的差异。
--word-diff 按 word diff 格式显示差异。
--stat  显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status   显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty    使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
--oneline   --pretty=oneline --abbrev-commit 的简化用法。

git config --list 配置信息

git stash 存储当前工作现场
git stash list 查看工作现场
git stash apply 恢复,但是恢复后,stash内容并不删除
git stash drop 删除工作现场
git stash pop 恢复并删除

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

git remote -v 查看远程库详细信息,上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

git mv README README.md 重命名。

git tag v1.0 打上标签
git tag 查看标签
git tag v0.9 6224937 指定commit id打上标签
git tag -d v0.1 删除标签
git tag -l 'v1.4.2.*' 只对 1.4.2 系列的版本感兴趣,可以运行这个命令

git show v1.4 显示v1.4版本的详细信息
git push origin :refs/tags/v1.0 从远程删除远程库中的标签
git push origin --tags 推送本地所有标签到远程库。
git push origin v1.0 默认情况下,git push 并不会把标签传送到远端服务器上,推送某个标签到远程。
git push origin --tags 一次性推送全部尚未推送到远程的本地标签

git tag -a <tagname> -m "blablabla..."可以指定标签信息;

git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;

git remote rm origin 删除关联

git push -f 强推,注意:会覆盖远程库

git config --global alias.st status 设置别名,给status设置别名为st。

git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit 查看提交历史树。

git remote set-url --push [name] [newUrl] 修改远程仓库

git tag -a [name] -m 'yourMessage' 创建带注释的tag

git reset head . 从暂存区撤销
git reset HEAD text.txt 将单个文件撤销

git push --delete origin devel 删除远程库分支
git push origin :devel 删除远程库分支serverfix - 第二种方法
git push origin text 创建远程库分支,将本地当前分支提交到远程text分支中, 远程若没有text分支,则会自动创建。

问题解决(! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@git.oschina.net:519401502/text.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:
1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
git push -f
2,先把git的东西fetch到你本地然后merge后再push
git fetch git merge
这2句命令等价于
$ git pull

忽略某些文件上传 步骤如下:
1.cat .gitignore 先创建名为 .gitignore的文件。
2.内容对应的git过滤含义:
①:.[oa] 忽略所有以 .o 或 .a 结尾的文件
②:
~ 忽略以~结尾的文件
③:doc/*.txt 忽略 doc/ 目录下所有扩展名为 txt 的文件
④:!lib.a lib.a除外
3.gitignore 的格式规范如下:
①:所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
②:可以使用标准的 glob 模式匹配。
③:匹配模式最后跟反斜杠(/)说明要忽略的是目录。
④:要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

git reflog使用、查看历史版本记录,此命令可以救命!!当你强行切换分支但忘记提交代码时造成代码丢失,可以根据此命令回退。

最后分享一张常用命令图标(摘自网络)


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