Git常用命令总结

最近在整理项目,需要用到git,于是问题就出来了:究竟是用GUI版还是命令行?不过经过实践,命令行真好用,哈哈!
所以,这篇文章激流勇进,其实吧主要是记录一下,在项目中用到的命令行以及git命令行。

命令 说明
创建版本库 命令行相关
ls 查看文件夹下文件
ls -ah 查看文件夹下文件(包含隐藏文件)
mkdir 文件名 创建文件夹
pwd 命令用于显示当前目录
cd 文件名 进入某文件夹
cd .. 退出到上一级目录
cd\ 退出到根目录
cat 文件名 查看文件
vim 文件名 打开文件编辑
按住 esc + shift + :
之后输入 wq
保存并推出
git init 把这个目录变成 Git 可以管理的仓库
git add 文件名 把文件添加到仓库,可以多次add不同的文件,例如:git add file2.txt file3.txt
git commit -m "提交的说明" 把文件提交到仓库,-m 后面输入的是本次提交的说明
版本回退 git相关
git status 查看仓库当前的状态
git diff 查看 difference,显示的格式正是 Unix 通用的diff格式
git diff HEAD -- 文件名 查看工作区和版本库里面最新版本的区别
git diff '提交地址1' '提交地址2' >> 文件名.txt 检出 diff 文件(再用 open . 可打开文件所在位置)
git log 查看 git 提交的历史记录
git log --pretty=oneline 按时间顺序,查看 git 提交日志
git reset --hard HEAD^ 回退到上一个版本
git reset --hard "版本号" 指定回到未来的某个版本,版本号没必要写全,前几位就可以了
git reflog 查看命令历史
撤销修改 git相关
git checkout -- 文件名 让这个文件回到最近一次 git commitgit add 时的状态
git reset HEAD <文件名> 暂存区的修改撤销掉(unstage),重新放回工作区
删除文件 git相关
rm 文件名 删除指定文件
git rm 文件名 从版本库中删除指定文件
添加远程库 git相关
git remote add origin git@server-name:path/repo-name.git 关联远程库
git push 把当前分支推送到远程
git push -u origin master -u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令
git push origin master 把本地 master 分支的最新修改推送至 GitHub
从远程库克隆 git相关
git clone "远程库地址" 克隆仓库
创建与合并分支 git相关
git branch 查看当前分支,会列出所有分支,当前分支前面会标一个 *
git branch 分支名 创建分支
git checkout 分支名 切到指定分支
git checkout -b 分支名 创建加切换分支
git push origin 本地分支名 提交本地分支到远程仓库
git branch --set-upstream-to=origin/分支名 本地分支名 本地分支设置为从'origin'跟踪远程分支
git merge 分支名 合并某分支到当前分支
git log --graph 查看到分支合并图
git branch -d 分支名 删除指定分支
git branch -D 分支名 强行 删除指定分支
分支管理策略 git相关
git merge --no-ff -m "提交说明" 分支名 加上 --no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
Bug分支 git相关
git stash 把当前工作现场“储藏(stash)”起来,等以后恢复现场后继续工作
git stash list 查看被“储藏”的工作现场
git stash apply 恢复被“储藏”的工作现场
git stash drop 删除曾被“储藏”的工作现场记录
git stash pop 恢复的同时把 stash 内容也删了
git stash apply "版本号" 多次 stash,恢复时,先用 git stash list 查看,然后恢复指定的 stash
多人协作 git相关
git remote 查看远程库信息
git remote -v 显示更详细的远程库信息
git push "远程仓库名称" "本地分支名称"
例如:
git push origin master
远程仓库的默认名称是 origin
把指定分支推送到远程库对应的远程分支上
git checkout -b "分支名" "远程仓库名称"/"本地分支名称"
例如:
git checkout -b dev origin/dev
远程库 clone 时,默认情况下,小伙伴只能看到本地的 master 分支,若要在 dev 分支上开发,就必须创建远程 origindev 分支到本地
git pull 把最新的提交从 origin/dev 抓下来
git branch --set-upstream-to=origin/dev dev 如果 git pull 提示 no tracking information,需指定本地 dev 分支与远程 origin/dev 分支的链接
git rebase 把本地未push的分叉提交历史整理成直线
目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
标签管理 git相关
git tag 标签名 为当前分支打标签(默认标签是打在最新提交的 commit 上的)
git tag 查看所有标签
git tag "标签名" "版本号" 为历史提交的 commit 打标签
git show 标签名 查看标签信息
git tag -a "标签名" -m "说明文字" "版本号" 创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字
注意 标签总是和某个 commit 挂钩。如果这个 commit 既出现在 master 分支,又出现在 dev 分支,那么在这两个分支上都可以看到这个标签
git tag -d 标签名 删除指定标签
git push "远程仓库名称" "标签名"
例如:
git push origin v1.0
推送某个标签到远程
git push 远程仓库名称 --tags 一次性推送全部尚未推送到远程的本地标签
git push "远程仓库名称" :refs/tags/"标签名" 从远程删除标签(如果标签已经推送到远程,要删除远程标签需要,先从本地删除,然后从远程删除)
远程库变更 git相关
git remote set-url origin "远程库新地址“ 更改远程库 url
git remote -v 查看远程 url 是否已更新
vim ~/.ssh/known_hosts 查看 ssh

情景实战:

1. git 利用命令行提交代码

git pull:拉取服务器代码,避免覆盖他人代码
git status:查看当前项目中有哪些文件被修改过
具体状态如下:
Untracked: 未跟踪,一般为新增文件,此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过 git add 状态变为 Staged。
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作。
deleted: 文件已删除,本地删除,服务器上还没有删除。
renamed:
将状态改变的代码提交至缓存
git add + 文件
git add -u + 路径:将修改过的被跟踪代码提交缓存
git add -A + 路径: 将修改过的未被跟踪的代码提交至缓存
或者
git add .
使用上面的命令将所有的修改的文件提交到缓存区
git commit -m “修改项目代码” :将代码提交到本地仓库中
git push:将缓存区代码推送到 Git 服务器
常见问题
1:误将代码提交到缓存中(利用 git add 命令误将代码提交的缓存中)
解决办法:利用 git reset 命令将撤回缓存中的代码。
2:误将代码提交到本地仓库(利用 git commit 命令误将代码提交到本地仓库)
解决办法:
git reset —hard + 版本号
彻底回退到某个版本,本地的代码也会改变上一个版本内容。
参考链接

Git教程

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

推荐阅读更多精彩内容

  • Git常用命令总结 git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个...
    曾基锟阅读 254评论 0 0
  • Git常用命令总结 git init在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个r...
    錦魚阅读 166评论 0 0
  • 简介   git有四个工作区域,分别是:工作目录(Workspace)、暂存区(Index/Stage)、本地仓库...
    gybguohao阅读 21,045评论 4 21
  • git init 图例中首先创建了一个空的文件夹gitDemo,进入该文件夹,运行git init命令,提示创建了...
    我是那只喵阅读 268评论 0 1
  • 安装 创建仓库 回退版本 提交修改后的文件 对其修改后的文件进行提交: 查看历史记录 我们看到有三次提交,最近的一...
    WP啦啦啦阅读 189评论 0 2