【Git】指令

1-配置GitHub的SSH keys

ssh-keygen -t rsa -C <邮箱>  //邮箱需要是GitHub的账号
cat ~/.ssh/id_rsa.pub  //获取公钥
cat ~/.ssh/id_rsa.pub  //获取私钥

基本的Git命令:

cd <文件夹>  //进入指定文件夹
cd ~  //返回根目录
cd ..  //返回上一层
ls   //显示文件夹内容
pwd   //查看路径
mkdir <文件夹名>  //创建文件夹
git init  //把当前目录变成Git可以管理的仓库,生成.git问价
git add <文件>  //将指定文件加入暂存区(stage)
git add .   //加入所有的修改
git restore <文件> //丢弃工作区的修改;
git restore --staged <文件> //将暂存区文件移到工作区
git commit -m "<标注>"  //提价到本地
git clone <仓库地址> //克隆仓库到本地
git clone -b <分支名字> <仓库地址> //克隆单个分支
git clone --recurse-submodules <仓库地址> //自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块
//如果只克隆,但忘记--recurse-submodules选项,则执行下面步骤:
git submodule init //初始化本地配置文件
git submodule update //从该项目中抓取所有数据并检出父项目中列出的合适的提交
git submodule update --init  //上面两个的合并成一步
git status  //查看过仓库当前的状态
git diff  //查看修改的内容
git diff <文件>  //查看指定文件的修改
git log  //显示仓库的提交日志
git log --pretty=oneline //显示简易的日志记录

git reflog  //查看命令历史(关闭终端,再次进入)
git restore <文件>   //丢弃已跟踪的修改
git clean -f <文件>  //丢弃未跟踪的文件
git clean -df <文件>  //丢弃未跟踪的文件和文件夹
git clean -d -fx //删除 一些 没有 git add 的 文件
//-d 删除未被添加到git的路径中的文件
//-f 强制运行
//-x 删除忽略文件已经对git来说不识别的文件
//-n 显示将要删除的文件和目录
git reset HEAD <文件>   //将已加入暂存区的文件修改移出暂存区,放入工作区<旧文件的修改>
git reset --hard HEAD^   //git回退到上一个版本;HEAD^^回退上2个版本;HEAD^^^回退上3个版本
git reset --hard HEAD~8   //git回退上8个版本

git reset <commit id>  //将commit回退,代码会回到工作区
git reset --soft <commit id>  //将commit回退,代码会回到工作区
git reset --hard <commit id>  //回退commit,对应commit的代码不在工作区;
  • 重置远端<commit id>
    如果发现推到远端的commit有错误,需要回退到某个版本,可以使用以下命令;
    注意:该账号需要有git仓库的强制权限;
git reflog 
git reset --hard <commit id>
git push -f
cat <文件>   //查看文件内容
git checkout  //丢弃工作区所有的更改
git checkout -- <文件>  //丢弃未暂存工作区的文件修改

git branch <分支名字>  //创建分支
git checkout <分支名字>  //切换到指定的分支
git checkout -b <分支名字>  //创建分支并切换到该分支
git checkout -b <分支名字> <远程仓库名>/<分支名字>  //一创建就关联远程分支

git checkout origin/<远程分支名> -b <本地分支名> //拉取远端分支到本地

git branch      //查看本地分支(会列出所有的分支出来)
git branch -r (或者-a) //查看远程分支
git merge <分支名字>  //合并分支到当前分支 (先切换到父分支)
git branch -d <分支名字>   //删除本地的分支
git branch -D <分支名字>  //强制删除本地的分支
git log --graph --pretty=oneline --abbrev-commit // 查看分支合并图(可以看到合并冲突时候的处理图)
git merge --no-ff -m "<标注信息>" <分支名字>   //合并分支(--no-ff模式),同事commit了

git branch -m <原分支名> <新分支名>  //重命名本地分支名字

git branch <仓库名字> --delete <远程分支名>  // 删除远程分支
git push --delete <仓库> <远程分支>   //删除远程分支

/// git 1.7.0之前的做法
git push origin :<远程分支>  //推空分支,相当于删除分支
git pull  // 拉取远程分支的内容,同步到本地分支
git pull <远程仓库名> <远程分支> :<本地分支>
git pull <远程仓库名> <远程分支>
git config --global  --list // 查看配置
git pull origin master --rebase //重新校验基准
git rebase --continue //解决冲突后,继续变基
  • stash
git stash //储藏该分支上的修改
git stash save "备注" //存储,同时添加备注
git stash list  //查看stash里面的内容
git stash apply stash@{1}  //恢复储藏的内容,但不删除stash里面的内容
git stash pop stash@{1} //恢复隐藏的内容,同时删除stash内容
git stash drop stash@{1} //删除stash里面的内容
git stash show -p //显示第一个存储的改动
git stash show stash@{0} //显示那些改动
git stash clear //删除所有缓存的stash
  • 远程仓库remote
git remote  //查看所有远程仓库名字
git remote -v // 查看所有远程仓库具体信息
git remote add <仓库地址>  // 关联本地项目和远程仓库
git remote add <仓库名字> <仓库地址>   // 关联本地项目和远程仓库-定义仓库名字
git remote rm <仓库名字> //删除仓库关联
git remote set-url <仓库名字> <仓库地址>  //修改仓库地址

git push <repo> <local branch>:<remote branch>  //推送本地分支到远程分支上;若仓库还没有分支,则会创建分支,同时关联本地
git push  <仓库> <本地分支>   //该本地分支名字在远程仓库存在对应的远程分支
git branch --set-upstream <本地分支> <远程仓库>/<远程分支>   //关联远程分支
git checkout -b <本地分支> <仓库>/<远程分支>  //在本地创建和远程分支对应的分支(这是先有远程分支,一创建本地分支就关联了远程分支)

  • 删除远程分支
git branch -m <旧分支名> <新分支名>
git push --delete origin <旧分支名>
git push origin <新分支名>  //新分支推上远程
git branch --set-upsteam-to origin/<新分支名> //关联本地分支和远程分支

刷新sourcetree上的远端分支
git remote update origin -p
  • 标签
git tag <tag>  //打tag
git tag    //查看所有的tag
git tag <标注> <commit id>  //给历史提交的commit id 打标签
git show <tag> //查看标签信息
git tag -a <tag> -m "描述"  //创建有描述的tag
git tag -d <tag>  //删除标签

git push --tags //将tag推到当前分支
git push origin --tags  //将本地全部标签推送到远程
git push origin -d tag <tag> //删除远程标签

/// git 1.7.0之前
git push origin <tag>  //将特定标签推送到远程
git push origin :refs/tags/<tag>  //删除远程标签(先删除本地的 git push origin <标签>,在执行这句)
  • vi 编辑模式:
vim <文件>   进入vi编辑模式
退出vim 编辑模式 :
1 - control + z
如果文件被修改,则vi保存在返回shell,没有被修改,直接退出vim,返回shell;
2 - 点击esc,输入冒号,进入末行模式
:w  保存当前编辑文件,不退出
:q  直接退出vim,不保存修改,返回shell
:wq  保存,再退出vim,返回shell
3- 撤回: u
4- 删除: 双击 d
5- 搜索: 
 / + <需要搜索的字符>
 搜索下一个:n

github网站上的仓库操作:

-> 先进入一个远程仓库 
-> 点击Fork,在自己git中得到该远程仓库,可对在自己git中的仓库进行读写 
-> 在自己的仓库下clone代码到本地 
-> 在电脑打开修改文件 
-> 可推送都自己的远程仓库 
-> 通过pull request 给官方仓库贡献代码

git config --global color.ui true 让Git显示颜色,会让命令输出看起来更醒目

压缩和解压文件:
压缩文件的时候,包括git库信息和历史都有压缩进去了

压缩:
tar -cvf edx-app-ios-enterprise-new.20170718.tar.gz edx-app-ios-enterprise-new
解压:
tar -xzvf edx-app-ios-enterprise-new.20170718.tar.gz
  • git reset
//仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID

//仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID

//彻底将工作区、暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID

问题:

  • git pull origin master时报错:
error: The following untracked working tree files would be overwritten by merge:
     xxxx.xcworkspace/xcuserdata/xxx.xcuserdatad/UserInterfaceState.xcuserstate
Please move or remove them before you merge.
Aborting

执行git clean -d -fx删除一些不需要的文件;

当我们使用`git merge`操作合并代码但还没[add](https://so.csdn.net/so/search?q=add&spm=1001.2101.3001.7020)时,若想取消这次合并,使用“`git merge --abort`”命令即可

假如不幸已经 git add 了怎么办呢? 其实也很简单,先用 git reflog 指令显示历史的操作

再用 'git reset --hard commit id’就可以回退到操作之前的状态了

大文件上传:git-lfs
https://git-lfs.github.com

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

推荐阅读更多精彩内容

  • Git 命令https://www.runoob.com/git/git-basic-operations.htm...
    何年何月阅读 344评论 1 0
  • 简介 Git是目前世界上最先进的分布式版本控制系统(没有之一)(用C写的)。 Git和其他版本控制系统如SVN的一...
    w_tiger阅读 608评论 0 1
  • git的使用原则是可复用,不重复,需放进git远程仓库的文件:源代码、第三方文件。 不需放进git远程仓库的文件:...
    Singal11阅读 1,507评论 0 0
  • 小时候和祖母祖父同住,祖母言语不多,可祖父是个乐天派,承欢在他的膝下,仰头看着祖父的抬头纹,听着他哼着小曲童谣,慢...
    艾冰台阅读 436评论 1 14
  • 我以为你已走远 却不知你一直都在 他们赞你、念你、一遍遍在记忆里刻画你 你是方向是明灯 我漫不经心的将一切准备 却...
    汲苦阅读 329评论 0 4