Github使用笔记
本文只是个人使用过程中的一点总结,留着以后忘了看,所以有写的乱或者看不懂的地方,请留言,我定当全力解答。
先说下工作区和暂存区区别:
工作区就是你的工作目录,暂存区就是一个版本库和工作区的过渡区域
git add是加到暂存区的,git commit是从暂存区到版本库的。所以git跟踪的是修改,而不是文件
github的安装:
Linux:sudo opt -get install git
macos:Xcode插件
windows:msysgit或者去github官网下载
常用命令:
创建目录,进入该目录 git init
git add filename ——添加文件到版本库
git add -A ——添加该目录下所有文件到版本库(不能添加空目录)
git commit -m 'description' ——提交到版本库,并附加提交信息
git status ——查看仓库状态
git diff ——查看具体在文件和版本库之间改变了什么
git log ——显示由近到远的提交日志
git log --pretty=oneline ——分行显示log(更人性化)
HEAD表示当前版本 HEAD^表示上一个版本
HEAD^^表示上上版本
HEAD~100表示上100个版本
回退到未来之前某个版本:git reset --hard HEAD^
git reset --hard 版本号(前几位就行)
git reflog 查看命令历史,以便回到未来的版本
git log 查看提交历史,以便回到历史的某个版本
撤销修改:
- 还没加到暂存区,用git checkout --filename
- 已提交到暂存区,还没commit,第一步git reset HEAD filename,第二步按照1操作
- 已经commit, git reset --hard HEAD^(版本回退)
在工作目录里随便删,不影响版本库,想想也是。想删版本库里用 git rm <filename>,再commit
如果在工作区中误删,可以git checkout -- <filename>
远程连接前的准备,创建SSH key并添加到需要上传的github账户上,因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
远程连接前的准备,创建SSH key并添加到需要上传的github账户上,因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
远程连接版本库
git remote add origin git@github.com:yourname/yourgitname ——配置远程连接设置
git push -u origin master ——第一次推送到服务器端版本库的时候用
git push origin master ——以后用这条就行
git remote rm origin ——删除远程连接设置
git clone 地址 ——克隆远程项目(支持https协议和ssh)
git分支:
本地分支:
增加:git branch bname
删除:git branch -d bname
修改:git branch -m bname1 bname2
查看:git branch
切换:git checkout bname
远程分支:
查看:git branch -r
删除:git push origin :bname (分支前的冒号表示删除)
修改:删除远程分支,更改本地分支,推送本地分支
添加:
① 再本地创建分支
②切换到新分支(git checkout -b bname创建并切换)
③推送新分支 git push origin bname
远程链接信息:
查看:git remote 或者git remote -v
添加:git remote add bname git@github.com:yourname/your project
远程库的名字就是
远程库的名字就是
origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
删除:git remote rm bname
修改:直接删除再添加更方便
对分支的操作:
合并分支:git merge bname
推送本地分支到远程版本库:git push origin(远程链接名)bname(远程分支名)
本地同步远程:
①git pull remote bname
②git pull -X theirs -remote bname 强制远程覆盖本地
标签(一般一个版本一个标签)
新建:git tag tname
查看:git tag或git show tname
删除:git tag -d tname
推送:git push origin tname
冲突解决办法
场景描述: 仓库有个index.txt文件 A同学修改后提交到远程库develop分支,B同学也修改了,打算提交到远程库develop分支,这个时候会提示冲突,需要手动解决冲突后在push,
解决办法:
1.git fetch origin //把远程所有库下载到本地
2.git checkout -b aaa origin/develop //本地创建远程库A同学版本 aaa
3.git merge develop(本地你的最新分支)
提示不能自动合并,需要手动合并
手动修改冲突的文件
4.git add -A
5.git commit -m" "
6.git push origin develop 就不会提示push冲突了