一、怎样在github上创建文件夹(或则说把本地项目同步到github)
#配置用户名和邮箱
1 、 git help git ---查看帮助文档
2 、 git config --global user.name "leorunwind"
3 、 git config --global user.email "luorunwen@163.com"
#本地库创建
4、mkdir test_project //创建文件夹
5、 cd test_project ---进入到要push到远程库的文件夹,{path}替换为具体的project目录(切换到该文件夹)
6、 echo “hello,world” > readme.txt 生成简单的文件内容
7、 git init ---在当前文件夹创建一个空的git本地库(或则说把本地项目同步到github)
8、 git add -all ---将当前目录下的所有文件都添加到git本地库里
9、 git commit -m 'first commit' ---提交并加上提交信息#连接远程库并提交
10、 git remote add origin url ---连接远程库,回车会让你输入用户名和密码
11、 git push -u origin master 第一次推送要用-u 以后就不用了
12、 git pull -u origin master ---如果上一条push提示failed to ...,用pull回拉从而同步版本
13、 git push -u origin master ---push到远程库
二、版本管理
1、版本回退
git reset --hard HEAD^ 可以退回到上一个版本(修改了版本库、暂存区、工作)
git reset --hard a223d3 可以推到版本号为a223d3 的版本
git reset --mixed HEAD^ (保留工作区,其它的都修改)
git reset --soft HEAD^ 只修改版本库
git log 查看 当前分支的提交历史
2、版本前进
如果在回退以后又想再次回到之前的版本,git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作)
然后在用 git reset --hard 版本号
3、撤销修改
对工作区中文件的修改分为三种情况:
(1)修改,但没有用git add将修改添加到暂存区;
(2)修改,已经使用git add将修改添加到暂存区;
(3)修改,已经使用git add将修改添加到暂存区,并再次进行修改。
对于第一种情况,直接使用git checkout -- 文件,即可撤销修改,撤销修改就回到和版本库一模一样的样子。
第二种情况,先使用git reset HEAD -- 文件,然后在使用git checkout -- 文件进行修改撤销。
第三种情况 先使用git checkout -- 文件,文件就会变成添加到暂存区后的状态,也就转换成了“第二种情况”,然后,在使用情况(2)中的处理方法,即可将文件恢复到与版本库一致的状态。
总之,记住一点:“git checkout -- 文件”命令,撤销的是工作中文件的修改,而“git reset HEAD -- 文件”命令,撤销的是暂存区中文件的修改。
4、删除文件
删除文件也是一种修改,git跟踪的是修改而非文件,因此删除文件可以直接在工作区删除文件,然后用add .再commit即可。对于已经提交过的文件,也可以用git rm newfile.text 直接删除工作区和暂存区的文件,然后在commit
5、比较不同版本同名文件
git diff filepath 工作区与暂存区比较
三、远程仓库
1、添加远程
通常可以用SSH协议和远程库通信或者使用http协议和远程通信。http协议较为方便,但SSH协议方式速度更快。所以先要让github仓库认证你SSH key,打开Git bash 控制台输入 $ssh-keyen -t rsa -C "your email" 生成秘钥。
#使用SSH地址添加远程库:
$git remote add github url(url是你自己创建库生成的ssh key)如下图
#也可以使用http地址添加远程库 例如添加码云
$git remote add gitee url(自己在码云上创建项目后的地址)
#查看远程库 $git remote -v
#删除远程库 $git remote remove name(远程库名)
2、推送远程
$git push -u github master
注释:-u表示指定github为默认远程仓库,后面就可以不加任何参数使用git push了
3、克隆远程
git clone可以将远程仓库克隆至本地某一目录,相当于下载。不指定目录时,会克隆到当前目录下的一个文件夹。通常在github中把感兴趣的别人的项目fork到自己的仓库里,然后在使用clone方法下载到本地进行编辑。
eg:git clone https://hithub.com/lyhue1991/python-basic ../pythoon-basic1
注意:通常使用./表示当前目录, ../表示当前目录的父目录
4、更新远程
fetch能够获取远程仓库的更新,但不同步到本地仓库。fetch获取到的是修改,不会获取文件,而clone会获取文件。可以在fetch之后利用merge,rebase等方法合并并同步到本。
$git fetch github master //获取远程库的更新
$git status //查看远程库的状态
$git merge github/master //合并分支
5、合并远程
git pull 能够获取远程仓库的更新,并同步到本地。相当于git fetch之后再merge。有时候会有冲突,需要解决
$git pull github master
四、分支协作
1、分支创建
#在当前head位置创建分支develop
$git branch develop
#在某个commit id号位置创建分支feature
git branch feature 83acedg(83acedg为commit id)
#查看分支 git branch
#删除分支 git branch -d 分支名
2、分支切换
使用git checkout develope 可以从当前分支切换到develop分支
使用git checkout -b feature 可以在当前HEAD位置创建新分支feature并将HEAD切换到新分支。
注意:查看分支状况的命令 git log --oneline --graph --all
3、分支的合并
git merge master
注:发生冲突时 打开冲突文件,保留其中一方或者全部保留,在重新add、commit
4、分支重演
5、储存管理
git stash //存蓄当前工作现场
git stash pop //恢复当前储存的场
git stash sava “”存储的介绍“” //储存信息,并保存解释
git stash list //显示储存过的列表
git stash apply 0 //指定要恢复的场景
git stash drop 0 //指定要删除的场景
这些就是我对git使用的一些总结,希望对大家有所帮助,因为第一次写对git和github的用法,如不足之处,望大家提出哟!