Git 仓库的初始化
ssh 配置
- 添加 mac 端 ssh 配置
创建本地 key
rm -rf ~/.ssh/*ssh-keygen -t rsa -b 4096 -C "2415180498@qq.com"cat ~/.ssh/id_rsa.pub (获取key)
- 添加 ssh key 添加到 ssh 服务器,实现免密登录
下面这条命令是写到服务器上的 ssh 目录 cd ~/.ssh , authorized_keys 文件
ssh-copy-id -i ~/.ssh/id_rsa.pub ytm@192.168.1.7
- 验证 ssh 服务器
ytm 是用户名 192.168.1.7 是服务器 id
ssh ytm@192.168.1.7
- 验证 github ssh 配置
将获得到的 key 拷贝到 github 。个人设置 => ssh。
ssh -T git@github.com
新建一个本地 git 仓库
- 设置 commit 时的签名
bash git config --global user.name "XiaoYang" git config --global user.email "2415180498@qq.com"
执行了上面的命令后,会在主目录home directory建立一个叫~/.gitconfig的文件,用来存储全局的 git 设置信息。 - 创建仓库
git init - 新建 README.md 并且提交
与远程 github 仓库交互
- 添加远程仓库服务器
git remote add <shortname> <url>添加远程仓库服务器,这里 url 用 ssh 地址git remote -v列出所有的远程仓库服务器git push -u <shortname> <branch>推送到服务器某个分支 。master 表示主干。 - 从远程库克隆
git clone ...
也做了如上的操作,默认 shortname 是 origin - 从远程库拉最新版本
git pull - 向远程库推送当前的版本
git push - 当本地仓库和远程仓库都有文件时,与远程仓库关联的正确姿势
shell git remote add origin 远程仓库地址 git pull origin master --allow-unrelated-histories git branch --set-upstream-to=origin/master master git push
新建本地仓库并同步远程库案例
git initecho "git init"touch "README.md"echo "touch README.md"git add "README.md"echo "git add README.md"git commit -m "first commit"echo "git commit -m first commit"git remote add origin git@github.com:XiaoYangsCode/XLuaTestProj.gitecho "git remote add origin ssh"git push -u origin masterecho "git push -u origin master"echo "complete"
扩展:写批处理 .sh 文件,放在要初始化的文件夹中运行
chmod +x ./git_init.sh 给权限./git_init.sh 执行
本地版本管理
- 状态的查看
- 查看有哪些文件做了修改
git status - 查看某一文件中具体做了什么修改
git diff filename
- 查看有哪些文件做了修改
- 提交流程
- 从工作区加入到暂存区
git add filename - 提交所有暂存区的修改到本地版本
git commit -m 'explain...'
- 从工作区加入到暂存区
- 撤销修改
- 将工作区修改撤销
git checkout -- filename - 将暂存区修改撤销
git reset HAED filename
- 将工作区修改撤销
- 不在跟踪某个文件
- 不删除文件:
git rm --cached fileName - 删除文件:
git rm -f fileName
- 不删除文件:
设置 git 代理
走 http 代理
git config --global http.proxy http://127.0.0.1:58591git config --global https.proxy https://127.0.0.1:58591
取消代理
git config --global --unset http.proxygit config --global --unset https.proxy
