之前和同学合作写项目的时候,使用到了git,但是也只是使用了一两次,基本是整个模块完成了之后才一起提交的,感觉并没有很好的发挥git的作用。
今天想上传一个已经完成的项目,直接往github上传的话只能上传文件,不能上传文件夹,也挺麻烦的。所以又想到了git。记录一下。
本人理解是,git是一个本地的代码管理器,当我们在某个文件夹下使用这个工具后产生.git文件夹后,git就可以记录当前文件夹中的每一次commit;而github是一个远程代码仓库,其内容存储在远程服务器上,可以记录用户对远程的每一次commit。
一般在本地自己记录文件夹内内容变换的话使用git就够了;此时如果想把内容上传到github开源,可以commit到服务器。如果是多个开发者合作开发,就要通过github记录每个用户的操作了。
git bash here
git gun here
git config --global user.name "yourname"
git config --global user.email "youremail"
git config --global user.name
git config --global user.email
在本地某个项目文件夹中使用git,记录每一次提交的更改。
1. 新建文件夹并初始化git
git init
随便在某个目录下新建文件夹,如:leeham;进入该文件夹,右键–‘git bash here’,进入git-bash界面;输入’git init’–回车;可以看到leeham文件夹中看到一个’.git’的隐藏文件夹
在文件夹中随意操作,这里我新建了一个first.txt,同时向文本文件中写入“hello world”
git add .
上命令将之前的内容添加到待提交的清单下,此时还没有提交
git commit -m "my first commit"
该命令实现将此次更改提交,-m参数用来加上提交的描述信息,这个是必须的,没有描述信息的提交被认为是不合法的
4. 查看修改
git status
git diff
这是查看距离最近这次commit我们都做了哪些修改。这里我对first.txt的内容做了修改,然后分别输入git status和git diff,前者可以看到修改了哪些文件,后者可以具体看到修改的内容。
git checkout <文件夹>
git reset <文件夹>
第一条可以撤销add之前的内容;第二条可以撤销add之后commit之前的内容。
git log
git log -p
第二条比第一条更详细和具体。
分支是git中非常重要的概念,它主要的作用就是在现有代码的基础上开辟一个分岔口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。
git branch -a
git branch newBranch
git checkout newBranch
git branch -d newBranch
第一条查看当前所有分支;第二条新建分支”newBranch”;第三条切换分支;第四条删除分支
使用git和github进行协同开发流程
1. 源仓库的构建
在github中新建一个rep,并且初始化两个永久性分支master和develop
git clone url...
开发者fork源仓库;然后将开发者仓库clone到本地
git checkout develop //切换到`develop`分支
git checkout -b newBranch //分出一个新分支
touch discuss.js //是此次开发的功能
git add .
git commit -m 'develop new commit'
git checkout develop //回到develop分支
git merge --no-ff newBranch //把做好的功能合并到develop中
git branch -d newBranch
git push origin develop
请求管理员把自己仓库的develop分支合并到源仓库的develop分支中,这就是传说中的pull request。