在gitlab上可以创建个人项目,而在github上默认都是公开的,要创建个人的是要收费的!首先在gitLab.com上申请完账户,然后让账户跟自己的mac相连,来保证项目的上传,生成public key 添加到自己的账户中!
1、公钥的生成
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"//生成ssh公钥(一直回车)
localhost:~ apple$ cat ~/ .ssh/id_rsa.pub //显示公钥
2、公钥的添加
3、将显示的公钥添加到自己的账户后,连接gitLab:
$ ssh -T git@github.com //验证是否连接成功
$ ssh -T git@gitlab.com //验证是否连接成功
—————————————————————————————————
新创建一个文件夹,clone(下载)项目,
1)不可上传
git clone https://github.com/gaobinglongtengyuzhou/shapeLayer.git //都可以下载,不可上传
2)可编辑上传(需要密码)
git clone git@github.com:gaobinglongtengyuzhou/shapeLayer.git //这台电脑必须在github上验证过公钥了,才能通过这种方式下载该项目!在修改完该项目上传的时候, 需要验证邮箱和用户名,查看是否有权限进行修改,才能上传
3) 下载相应的分支
git clone -b dev git@github.com:gaobinglongtengyuzhou/shapeLayer.git //clone 相应的分支
———————————————————————————————
rm -f 文件名 :删除文件
git status :查看状态
git log :查看提交修改记录
git branch :查看分支和当前所在分支
git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除 的文件。
git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u不会提交新文件(untracked file)。(git add --update的缩写)
git add -A :是上面两个功能的合集(git add --all的缩写)
git commit -m "":将暂存区的数据,提交到版本库,并添加提交日志
git commit -am "" :将修改的没有添加到暂存区的添加到暂存区,并提交到版本库,同时添加提交日志
git checkout 分支名:切换分支
git checkout 文件名:撤销对该文件的修改
git branch -d 分支名:删除本地分支
git reset --hard e20a879cb6c1968a0f4038a391fe9352cc085044 :回滚到指定版本
git fetch origin :获取远程更新!假如本地已经存在了代码,而仓库里有更新,把更改的合并到本地的项目;同时如果本地没有相应的远程分支,在本 地创建相应的分支并将相应的远程分支的内容拉取下来
git merge dev :把更新的内容合并到本地分支(先切换到主分支,这样是把分支的代码合并到主分支)
———————————————————————————————
1、在gitLab上创建完项目(hello-world)后,将本地的项目(hello-world)上传到gitLab上:
$cd ~/hello-world //到hello-world目录,本地目录名与repository的名字不一定相同
$git init //初始化版本库
$git add -A //把所有文件加入到索引
$git commit -m “第一次提交” //提交到本地仓库,然后会填写更新日志( -m “更新日志”也可,如$git commit -m “my first vesion of ...”)
$git remote add origin git@github.com:WadeLeng/hello-world.git //增加到remote(加上一个remote的地址,名叫origin,地址是github上的地址,因为Git是分布式的,所以可以有多个remote)origin即是github上远程仓库的仓库名
$git push origin master //push到github上(master是该仓库中默认的分支名,可以添加新的分支)
$git push -u origin master (中间有这个-u的意思是以后默认提交到这个origin的master分支上,下次提交只需要git push就可以了 git pull也一样
2、更新项目(新加了文件):
$cd ~/hello-world
$git add -A //将项目中以前没有在版本控制中的文件,由未跟踪(untracked),变成已跟踪(tracked),根据目标文件的状态不同,此命令的 效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区
$git commit -m "修改的东西" //提交到本地仓库,然后会填写更新日志(git commit -m用于提交暂存区的文件)
$git pull origin master //一般跟别人合作开发的时候,先把远程的拉取合并,然后再提交自己的避免冲突
$git push origin master
3、更新项目(没有新加文件):
$cd ~/hello-world
$git commit -am "修改的东西" //用于提交跟踪(tracked)过的文件,及修改的东西都是以前版本控制中的
$git pull origin master //一般跟别人合作开发的时候,先把远程的拉取合并,然后再提交自己的避免冲突
$git push origin master
4、重新命名远程分支
①.git push --delete origin dev_One //删除远程分支
②.git branch -m dev_One master_2.1.0 //重命名本地分支
③.git push origin master_2.1.0 //将本地分支推上去
5、关于Git Stash的详细解释,适用场合的说明:
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git 栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一 个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash apply stash@{1} :工作区回归到一个特定的版本号
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用'git stash'就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用'git stash apply'将以前一半的工作应用回来。也许有的人会说,那我可不可以多次将未提交的代码压入到栈中?答案是可以的。当你多次使用'git stash'命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,'git stash list'命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用'git stash apply stash@{1}'就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用'git stash clear'来将栈清空。
6、添加忽略文件.gitignore:
①、在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore文件的方法(如果没有这个文件,则需自己手工建立此文件);.gitignore中的内容可以在(https://www.gitignore.io)中根据不同的语言来生成!这个文件每一行保存了一个匹配的规则例如:
vim .gitignore
# 此为注释 – 将被 Git 忽略
*.sample # 忽略所有 .sample 结尾的文件
!lib.sample # 但 lib.sample 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
②、如果在项目已经提交过一次的情况下,再次直接添加.gitignore会出现无效的情况:原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:
git rm -r --cached .
git add -Agit commit -m 'update .gitignore'
这样就可以使在提交.gitignore后立即生效了!
//------------------------------常见错误-----------------------------------
1.$ git remote add origin git@github.com:WadeLeng/hello-world.git
错误提示:fatal: remote origin already exists.
解决办法:$ git remote rm origin
然后在执行:$ git remote add origin git@github.com:WadeLeng/hello-world.git就不会报错误了
2. $ git push origin master
错误提示:error:failed to push som refs to
解决办法:$ git pull origin master //先把远程服务器github上面的文件拉先来,再push上去。
参考文章:http://www.cnblogs.com/xiaohuochai/p/6664451.html
http://blog.csdn.net/duyiweilan/article/details/54949350