如果在GitHub里有一个项目,需要在一个新的终端对项目里的内容进行修改。首先要配置github接收本地终端的ssh钥匙。然后将本地与远程仓库连接起来。
添加ssh钥匙
1.在用户主目录下查找.ssh目录,如果有,则进入,查看id_rsa.pub。如果没有,则2
2.生成.ssh目录
ssh-keygen -t rsa -C "youremai@example.com" //在用户目录下,成功后会生成id_rsa和id_rsa.pub文件。
3.在GitHub添加本地的ssh钥匙(复制id_rsa.pub里的内容,粘贴在GitHub库的-settings-keys下)
4.在本地终端新建一个本地仓库,因为我这里链接的远程库叫learngit,所以本地新建仓库名learngit(在/usr/local/git下),同时,将本地仓库设置为一个git仓库。
git init
5.关联远程仓库
git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
如果git出错,报错是远程库里有内容,本地库往上推送时会导致两边内容不一样,所以需要先将远程库中的内容拖到(fetch)本地来,在本地将其进行合并(merge),可以用git pull同时来做这两件事。
成功在GitHub里看到刚刚推送的Blog文件。
附:GitHub常用命令(摘自廖雪峰git教程)
简单应用
git config --global user.name"Your Name" //配置用户名
git config --global user.email"email@example.com" //配置邮箱
git init //初始化一个git仓库
git add //添加文件第一步
git commit //添加文件第二步
git status //查看文件修改状态
git diff //查看文件修改内容
修改,回退历史版本
git reset --hard commit_id //HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭
git log //可以查看提交历史,以便确定要回退到哪个版本
git reflog //查看命令历史,以便确定要回到未来的哪个版本
git checkout -- file //直接丢弃工作区的修改
ps:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,先用命令git reset HEAD file,再丢弃工作区的修改。
git rm //删除一个文件
远程仓库操作命令
git remote add origin git@server-name:path/repo-name.git //关联一个远程库;
git push -u origin master //第一次推送master分支的所有内容;
git push origin master //推送最新修改;
git clone //克隆一个仓库
git remote -v //查看远程库信息
git push origin branch-name //从本地推送分支,如果推送失败,先用git pull抓取远程的新提交;
git checkout -b branch-name origin/branch-name //在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致;
git branch --set-upstream branch-name origin/branch-name //建立本地分支和远程分支的关联;
git pull //从远程抓取分支,如果有冲突,要先处理冲突。
分支操作
git branch //查看分支
git branch //创建分支
git checkout //切换分支
git checkout -b //创建+切换分支
git merge //合并某分支到当前分支
git branch -d //删除分支,-D强行删除
git log --graph //查看分支合并图。
git stash //保存现场
git stash pop //恢复现场
标签命令
git tag //新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a -m "blablabla..." //指定标签信息;
git tag -s -m "blablabla..." //用PGP签名标签;
git tag //查看所有标签。
git push origin //推送一个本地标签;
git push origin --tags //可以推送全部未推送过的本地标签;
git tag -d //可以删除一个本地标签;
git push origin :refs/tags/<tagname> //可以删除一个远程标签。
网友评论