github常用操作
github
概念的理解
github库/远程仓库 github官网上的数据
本地库 本地文件夹上存放的数据
分支 一个github库可以有多个仓库,每个仓库可以有多个分支, 但是,每个仓库都有一个master分支
master分支 master分支存放的是稳定版本的代码,一般来说,如果要进行新功能的开发,要新建一个分支,然后在此分支上再进行开发
push 本地库->github库
pull github->本地库
git status
可查看
- 当前分支
- 新add加入暂存区的文件
git add
把文件添加进暂存区,也就是以后git会跟进该文件的状态(没有添加进来的就忽视掉)
注意
- add 必须在.git目录下出发来寻找路径,而不能cd到那个目录去添加
git add [basename1] (basename2) ...
可以一次添加一个或多个文件
git add [dirname]/.
添加dirname文件夹下的所有文件,包含其子目录的所有文件
git reset HEAD
返回上一次使用add的状态
git reset HEAD [filename]
filename:要取消暂存的文件名(dirname/basename)
git rm --cached [filename]
与 git reset HEAD [filename] 一样,取消该文件的暂存
git remote
git remote add [alias] [addr]
alias : 自定义的仓库别名
addr: 仓库clone时使用的地址
git remote -v
显示当前所有关联的仓库及其别名
git remote rm [alias]
alias :仓库别名
git push
git push -u [alias] [branch]
第一次提交时要加上参数-u
git push [alias] [branch]
关联之后提交就不用加-u
git push -u [alias] [branch] -f
强制清空远程仓库的所有文件,并重新上传
git fetch
git fetch [alias]
抓取本地仓库没有,而远程仓库有的信息
fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并
git pull
git pull [alias]
相当于fetch 再加一个合并的操作(可能会产生冲突)
git reset
git reset HEAD
上一次add 的内容撤销
git reset --hard HEAD(不推荐)
撤销全部内容,包括remote add关联的远程地址
git commit
git commit -m "[comment]"
comment: 注释
git commit --amend
撤销最后一次提交
git branch
git branch [branch]
branch : 分支的名字
创建一个新的分支
git branch -d [branch]
删除一个分支
git checkout
git checkout [branch]
切换到 branch 分支
branch : 分支的名字
切换到分支上
git checkout [filename]
撤销文件的修改,也就是该文件会回到上一次commit时的状态
commit之后,如果你马上在main.c中添加了一行代码,然后马上调用上述语句,那么这行代码就会消失
git checkout .
工作区的所有代码都回到上一次commit时的状态
更多撤销更改的操作
git merge
git merge [branch]
branch: 分支的名字
合并之前,先通过git checkout [branch] 命令切换到要被合并的分支处
这里有必要说明一下, git checkout 的分支叫做当前分支; git merge 后接的分支叫做子分支
把子分支合并到当前分支上,子分支不会消失
合并完成后可以使用 git branch -d [branch] 删掉子分支
搭建github环境
目前 github只支持火狐,谷歌浏览器
自己总结一下:
-
先在本地与github服务器完成认证
其实就是在本地生成一串秘钥(就相当于密码),然后服务器那里也设置同样的密码,这样就能进行匹配,从而连接上服务器
ssh-keygen -t rsa -C "your_email@youremail.com" //生成秘钥,会得到一串字符 //然后打开github服务器,添加SSH KEYS 把这个秘钥添加进去 ssh -T git@github.com //验证是否成功 //登录你的账户 git config --global user.name "your name" git config --global user.email "your_email@youremail.com" //添加本地仓库 git remote add origin git@github.com:yourName/yourRepo.git
需要三次步骤才会真正更新服务器的数据
add commit push
add 是刚创建本地仓库的时候才需要使用的命令
commit 本地仓库被修改过后,更新数据库(记录着仓库文件改动的信息),commit一般需要添加此次修改的备注
push 根据数据库的信息,服务器做出相应的更新,这时,网络上的数据才会被真正修改
push的逆操作--pull
将服务器的数据同步到本地(和clone比较类似)
其他常用命令
git init 会在当前目录创建一个.git隐藏文件,里面会记录着这个文件的git信息
git commit -m ""
git status
git log
git reglog 查看版本号
git reset --hard 版本号
操作远程仓库
git remote add test 仓库地址
git push -u test master 用于第一次推送并关联该仓库
git clone 仓库地址
git remote -v 查看已经关联的仓库及其别名
git remote rm 仓库别名
解决冲突
方法1(不推荐):
强制把本地内容更新到服务器
git push -u origin master -f //服务器内容会被强制清空
方法2:手动一个一个文件地解决冲突,然后merge/push
具体做法,有机会再更