Git的一些使用规则总结

      在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    //pushgithub上(master是该仓库中默认的分支名,可以添加新的分支)

$git push -u origin master (中间有这个-u的意思是以后默认提交到这个originmaster分支上,下次提交只需要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 -A
git 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值