首先介绍一下 工作区 working directory
与版本库:repository
查看工作区与指针区的差别使用: git diff HEAD --file
还没commit,也没有add 时,丢掉工作区中的修改:git checkout --file
已经add但是没有commit,要回到工作区里:git rest HEAD file
已经提交了,还没推送到远程库:
git log 或者git relog --pretty=oneline 得到commit id,
或者是使用HEAD,HEAD^,HEAD^^,HEAD~20这样
再使用:git reset --hard HEAD^
git reset HEAD^
https://blog.csdn.net/qq_34907701/article/details/79850821
git reset HEAD^ 你已经提交了,但是发现有错,那么你回到上次提交,但是代码还是那个发现有错的.
git reset --hard HEAD^ 所有东西都回到上一次提交的了,嗯,是的,错误的东西也没有了。
ok,现在你想删除一些东西,并使用了:rm t.txt
git并没有删掉,先用git status查看一下状态。
真的要删的话:git rm t.txt 再commit
不想删,由于版本库里还有:git checkout -- t.txt
由此可见,git checkout -- file 就是用版本库的版本替代工作区中的版本。
那么当我不是用rm 删除,而使用git rm 删除,但是又后悔了,怎么办。????????
由于想链接远程服务器,所以肯定得使用一些东西。如ssh key
ssh key是在用户主目录下的两个文件:id_rsa id_rsa.pub
ssh-keygen -t rsa -C "email@address"
===========
git init 就不说了
git remote add origin(可变,不过一般是它) git@github.com:aaaaa/xxxx.git
第一次推送,由于远库程是空的:所以 -u
git push -u origin master
默认退的是master 所以以后可以 git push
如果是克隆: git clone git@github.com:aaa/xxx.git
而当远程有还有多个分支时,本地默认只能看到master主分支,你可以使用git branch查看
如果想在分支工作,得: git checkout -b dev origin/dev
如果分支是dev的话。
引出分支:branch
创建分支:git branch dev
当前指针切换到dev分支 git checkout dev //没有 --
创建并切换到dev分支: git checkout -b dev
这里有个概念,每个分支都有个指向它的指针,而当前commit指针是HEAD,使用git branch 查看是,分支前会带有*
====
下面讲git merge
合并的方式分为两种:可快速合并(没有冲突):fasst-forward
先切换到master分支,再git merge dev 把dev合并到当前分支。
这时可以删除分支,使用git branch -d dev
而当出现master 与dev中的修改不一样时,就无法快速合并了。
这个就是冲突了,git merge dev 后得手动修改相应文件。可用git status 查看冲突文件,改改后再git add .... commit而不用git merge了。
使用git log --graph查看分支合并图。
前面提到的fast forward模式,这种只是跟新一下指针位置,不会产生一个新的commit,而有时候希望它有个commit
于是: git merge --no-ff -m "xxxxxxx' dev
那么当一个分支还没有被合并你就要把它删了: git branch -D dev
关于远程库:
查看远程名: git remote
详细查看远程库名:git remote -v
............(fetch)
..............(push)
代表有无相应权限。。。
想推送某个分支: git push origin dev
当远程为github时,可以考虑: git remote add github git@github.com:xxxx.git
删除远程库:git remote rm origin
.gitignore文件 参考:https://github.com/github/gitignore
将需要忽略的文件写入.gitignore 里,可使用通配符*
再提交.gitignore
如果要add 的文件是在.gitignore里定义过的文件,还是要提交的话:
使用 git add -f file