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