Linux下git与github初步学习

新手照着打
总会习惯的

$ sudo apt-get install git
//创建版本库

$ cd /桌面
$ mkdir learngit 
$ pwd
$ git init
$ vim a.c
$  git add a.c 
$ git commit  -m "注释"
$ git add file1.txt  file2.c
$ gir commit -m  "add something from adl's native linux"
//创建版本库

$ git log
$ git log --pretty=oneline
$ git reset --hard HEAD^
//git reset --hard HEAD^^
//git reset --hard HEAD~100
$ cat a.txt
$ git reset --hard f3cc
$ git relog 
$ git reset --hard b116
//版本回退

$ git status
//查看工作区和暂存区状态

$ git checkout -- a.txt
//撤销工作区至版本库或暂存区
// --不可遗漏
$ git reset HEAD a.txt
//把暂存区的a.txt 放回工作区
$ rm a.txt
$ git rm a.txt
$ git commit -m "删文件跑路"
//彻底删除本地和版本库中的a.txt
$ git checkout -- a.txt
//万能后悔药,把库中的还原到工作区
//这会让人联想到克隆人思维,那若你死了,
//你的思想还活着,但你却完全不知道你那时
//候是控制着这个思想的,还是说有个完全一样
//的思想取代了你,你不再(活着)

$ ssh-keygen -t rsa -C "youremail@qq.com"
$ cd .ssh
$ cat id_rsa
$ cat id_rsa.pub
//在github ADD SSH KEY 将id_rsa.pub的公钥粘贴到key
//文本框

//在github建了仓库后,取名firstlearn
$ cd 桌面/learngit
$ git remote add origin git@github.com:yourgithubname/firstlearn.git
//连接你的linux下的learngit仓库和github 下的firstlearn仓库
//并用origin来作为你的git识别这个远程仓库的别名,

//上传
//-u 使得本地的master 和远程master相连
$ git push -u origin master
//之后方便的只用
$ git push origin master

//将github的仓库拷贝到你的linux下
//在github新建仓库gitskills
//注意勾选下方的initialize this repository with a readme
$ git clone git@github.com:yourgithubname/gitskills.git
$ cd gitskills
$ ls 
//你会发现一个叫readme的文件cat它看到skills大字

//
$ git checkout -b dev
//建立并切换新分支
$ git branch 
//查看当前分支
//在此分支下修改并提交a.txt文件,切换分支回master
$ git checkout master 
//修改的部分消失
$ git merge dev 
//将dev剪枝合并到当下分支master
$ git branch -d dev
//删除dev分支
$ git branch
//dev消失

//新版git的switch语法(我的没有哭)
$ git switch -c dev 
//建立并切换新分支
$ git switch master
//切换分支

//分支两端都上传---add,commit同一文件会怎么样
$ git checkout -b features
//vim a.txt 修改
$ git add a.txt
$ git commit -m "first"
$ git checkout master
//vim a.txt 修改
$ git add a.txt
$ git commit -m "second"
$ git merge feature1
//合并失败
$ git status 
//存在冲突
$ vim a.txt
把那些奇奇怪怪的玩意儿删了,自己重写那些部分
$ git add a.txt
$ git commit -m "conflict fixed !"
$ git log --graph --pretty=oneline --abbrey-commit
//查看分支的合并情况,是的,他的在没有merge的
//情况下合并了!!!feature1存在,合并的内涵应该
//是两处的文件内容同步
$ git branch -d feature1

//no ff合并需要加-m"..."
$ git checkout -b dev
$ git add a.txt
$ git commit -m "add merge "
$ git checkout master
$ git merge --no --ff -m "merge with no-ff"dev
$ git log --graph --pretty=oneline --abbrev-commit


是的我就写了一半

   git push -u origin +master    //1.强行上传
   git pull origin master --allow-unrelated-histories
  //合并冲突后,就可以使用 git push命令
git rm -r --cached . //这条是清除库中所有记录的缓存的
//当你写了.gitignore需要重新把那些已经提交的(如a.out)给删除掉,你此时的
//gitignore 不会帮你把以前你写的a.out给删了,所以你得把那些缓存全除掉,
//再git add . //git commit -m "..." //git push 就ok了

//对!你最好把gitignore设置成全局的,这样在所有git的文件夹下都可以使用
git config --global core.excludesfile ./.gitignore 
git pull  
当前分支没有跟踪信息。
请指定您要合并哪一个分支。
详见 git-pull(1)git pull <远程> <分支>

如果您想要为此分支创建跟踪信息,您可以执行:

    git branch --set-upstream-to=origin/<分支> master


//解决方案
   git branch --set-upstream-to=origin/master

git pull出现 fatal: 拒绝合并无关的历史


//解决方案
git pull origin master --allow-unrelated-histories 

初始化操作(在github新建了仓库先)

git init 
git remote add origin git@github.com:adlternative/cbook.git
git add .
git commit -m "!"
git branch -M master
git push -u origin master

国内的镜像克隆加速

 git clone https://github.com.cnpmjs.org/adlternative/cbook.git

等我用到了再写那另一半吧???

出现这种RPC failed; curl 18 transfer closed with outstanding read data remaining错误的解决方式

remote: Enumerating objects: 24, done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects 失败
exit status 128

~ via 🐍 v2.7.17 took 8m8s 
❯  git config --global http.postBuffer 524288000

出现大文件无法上传的解决方案:

链接

remote: Resolving deltas: 100% (33/33), completed with 10 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 9394b3eea645d51fceaf29555cc70a84d50ba12863b07b07bb4213b012b06bb3
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File datastruct/huffman/linus.png.zip is 119.19 MB; this exceeds GitHub's file size limit of 100.00 MB
To github.com:adlternative/LinuxLearn.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: 推送一些引用到 'github.com:adlternative/LinuxLearn.git' 失败

由于换了arch,现在包管理器pacman 直接下git-lfs,再在git目录下git lfs track你需要上传的大文件,这时候你的目录下会生成.gitattributes文件,里面是*.zip filter=lfs diff=lfs merge=lfs -text,再需要reset 回退暂存区状态保证.gitattributes先上传了, 然后就可以去上传你的大文件,就没什么问题了!

git lfs install
git lfs track “* .zip”
#这里可能需要一次git reset切换回旧的分支,貌似本次必须只能提交了.gitattributes
git add .gitattributes
git commit -m "gitattr"
git push 

git add .
git commit -m "ok"
git push

git fetch 和 git pull 的区别stackoverflow

用最简单的话来说,git pull先执行git fetch然后再执行git merge。
您随时可以git fetch在下执行来更新您的远程跟踪分支refs/remotes/<remote>/。
此操作永远不会更改您在下的任何本地分支机构refs/heads,并且可以安全地执行而不更改您的工作副本。我什至听说有人git fetch在后台定期执行cron作业(尽管我不建议这样做)。
git pull是您要执行的操作,以使本地分支机构的远程版本保持最新,同时还更新其他远程跟踪分支机构。 

有人推荐以后git pull的时候这么用,尚未尝试!
git fetch
git reset --hard origin/master

git 第一次 commit 如何回退
看网上说回退到上次提交使用reset,这我同意,
但我想要在第一次提交未push的时候回退到之前尚未commit之前,使用git reset hard/soft HEAD均无效,直到我使用了

git revert HEAD

我成功回到了commit以前,不,更深层次的,我仿佛"进入add之前!

learn from 廖雪峰

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值