Git 常用指令

版本库操作

git init # 把当前的目录变成可以管理的git仓库,生成隐藏.git文件(但要commit一次以后才会创建master分支)

git clone <director of project> # 从远程主机克隆版本库到本地,-o指定远程主机名

git remote # 查看所有远程主机,一般是origin

git remote –v # 查看远程主机的网址

git remote show # 查看远程主机详细信息

git remote add <主机名> <网址> # 添加一个远程主机,如 git remote add origin url地址

git remove rm <主机名> # 删除远程主机

git remote rename <原主机名> <新主机名 # 重命名远程主机

分支操作

git branch # 查看本地分支,-r远程分支,-a所有分支,-vv分支最近一次提交记录

1. 分支创建、切换、删除

git branch <本地分支名> # 创建本地分支

git checkout <本地分支名> # 切换本地分支

git checkout –b <本地分支名> # 等于前面两个指令,创建并切换到新分支上

git branch --track <本地分支名> origin/<远程分支名> # 根据远程分支创建一个本地分支

git branch --set-upstream-to=origin/<远程分支名> # 设置本地分支和origin/<远程分支>的追踪关系

git branch –d dev 删除dev分支

git branch -D <本地分支名> # 强行删除本地分支

2.拉取远程仓库

git fetch # 取回所有分支更新,不影响本地开发代码,通常用来查看其他人进程

git fetch <远程主机名>(origin)<分支名> # 拉取特定分支更新,还需merge或rebase进行合并

git pull <远程主机名> <远程分支名>:<本地分支名> # 取回origin主机的远程分支,与本地分支合并,等于git fetch origin加git merge origin/<远程分支>

git pull # 本地分支与远程分支建立追踪关系后可用,拉取远程分支更新、合并本地分支

3. 分支合并

git merge <要合并的分支名> # 合并分支到当前分支

git merge –no-ff -m “注释” # 保存你之前的分支历史,能够查看 merge历史和branch 状态

git cherry-pick # 单独把其他分支上的 commit 合并到当前分支

git rebase <要衍合分支名> # 把当前分支的提交记录衍合到目标分支,生成干净的提交记录(把当前分支上的提交记录跟在目标分支的记录后面,而不像merge按时间),不会产生merge的commit,就好像是在目标分支上提交的一样

git rebase --continue # 当衍合冲突,解决冲突以后,先git add再执行该指令。不需要commit

git rebase --abort # 终止rebase的操作,回到rebase开始前的状态

git rebase -i HEAD~3 # 修改最近三次提交,可以撤销或者合并/拆分提交记录

4. 分支改名

git branch -m <现有的分支名> <改的分支名>

5.Git 清理无效的远程追踪分支

http://blog.csdn.net/u010544187/article/details/71404523

git remote prune origin

本地仓库文件操作

git status # 查看分支状态

git add XX # 把xx文件添加到暂存区去。

git commit –m “XX” # 提交文件到本地仓库 –m添加注释,--amend修改最近一次提交记录,并产生新的提交记录

git diff XX # 查看XX文件当前修改的内容

git checkout — XX # 把XX文件在工作区的修改全部撤销

git checkout . # 把本地分支上有所修改全部撤销

git rm XX # 删除文件,同时还会将这个删除操作记录下来

git mv <文件名> <改后文件名> # 文件重命名后跟踪,当于运行了下面三条命令: mv README.md README git rm README.md git add README

远程仓库分支同步

git push origin <本地分支名>:<远程分支名> # origin是远程主机名,如果远程分支不存在会自动创建分支,如果不填本地分支名会删除远程分支

git push origin --delete master # 等同于git push origin :master,删除远程分支

git push –u origin <本地分支名> # 把本地分支推送到远程主机,此后可以直接使用git push

git push --set-upstrean origin <远程分支名> # 推送远程分支并做关联,此后可以直接git push

git push origin master -f # -f 参数是强制提交,因为reset之后本地库落后于远程库一个版本,因此需要强制提交

git revert <哈希值> # 放弃指定提交的修改,生成一次新的提交

git revert <哈希值> -m <parent number> # 当撤销的commit是一次merge操作,其包含两个parent(合并的两个分支),-m 指定保留内容的parent,另一个分支内容被revert。parent number的顺序是从左到右,左1右2

image.png

git revert HEAD # 撤销前一次 commit,HEAD^是撤销前前一次 commit

查看记录与回退

git log # 查看提交记录,按 q退出,回车输出更早commit历史记录

git log <fileName> # 查看文件历史记录,按 q退出,回车输出更早commit历史记录

git reflog # 查看历史记录的版本号id

git show <哈希值> # 查看某次提交的修改记录

git reset -hard <哈希值> # 回退到commit版本

git reset –hard HEAD^ # 回退到上一个版本,git reset –hard HEAD~5往上5个版本

缓存操作

git stash # 把当前的工作隐藏起来 等以后恢复现场后继续工作

git stash list # 查看所有被隐藏的文件列表orginal

git stash apply # 恢复被隐藏的文件,但是内容不删除

git stash apply stash@{0} # 恢复 git stash list中的第一个工作现场

git stash drop stash@{0} # 删除第一个工作现场

git stash pop # 恢复第一个工作现场,同时也删除记录

标签管理

git tag # 查看所有标签

git tag <tag名> # 打一个新标签,-a指定标签名,-m指定说明文字

git tag <tag名> <commit id> # 根据commitId创建tag

git show <tagname> # 查看标签信息

git tag -d <tag名> # 删除标签

git push origin <tagname> # 推送某个标签到远程

git push origin :refs/tags/v0.9 # 删除远程v0.9tag,删除远程tag前先删除本地tag

生成 SSH key

设置Git的user name和email

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

git config --global user.email "email"

生成SSH密钥

cd ~/.ssh # 查看是否已经有了ssh密钥

ssh-keygen -t rsa -C "emial" # 生成密钥

pub后缀文件保存了公钥,登录网站添加ssh

测试

ssh git@github.com

Git相关资源

廖雪峰-最浅显易懂的Git教程https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

使用原理视角看 Git https://blog.coding.net/blog/principle-of-Git

Git Community Book 中文版 http://gitbook.liuhui998.com/index.html

25个 Git 进阶技巧 https://linux.cn/article-5418-2.html

其他命令

mkdir XX # 创建一个空目录 XX指目录名

mv XX # 文件重命名

type XX # 查看XX文件内容

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

推荐阅读更多精彩内容

  • 1) 远程仓库相关命令 检出仓库: 检出仓库: 直接检出分支 2.0.0,指定远程仓库名称为 github (默认...
    gavinDu阅读 383评论 0 0
  • 由于git的使用通常伴随着linux的常用指令,因此下面记得也有linux常用的操作,如果学习git确实应该也学习...
    fwfaef阅读 243评论 0 0
  • Git常用命令总结 Git常用命令总结 git init 在本地新建一个repo,进入一个项目目录,执行git i...
    猿ape阅读 233评论 0 1
  • 出于安全考虑,js不可能跨域访问。一个请求是否跨域,看它发送请求的协议、域名、端口是否和页面的协议、域名、端口是否...
    wu53阅读 170评论 0 0
  • 郑毅伸出手来,一双手保养得洁净、红润,年近60岁的人了,可是“指甲每天都要剪”,他告诉我。这是必修课,为的是能专心...
    a83dcd5a612f阅读 263评论 0 0