新手照着打
总会习惯的
$ 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
等我用到了再写那另一半吧???
learn from https://www.liaoxuefeng.com/wiki/896043488029600/896827951938304