写的不是很全 是我自己的随笔 别骂我
remote
fetch
pull
push
checkout
stash
merge
rebase
tag
alias
提示
git status相当于是一个命令提示,如果不知道该做什么的话可以执行该命令,会有提示你应该做什么。
提交文件 这种方式更加快捷
$:git ac ‘add 3.txt’
$:git push origin master
remote命令:用来把本地项目推送到git上
使用场景:
i、git clone @.com下载代码
ii、 在本地已经有一个项目但是git上没有,现在的需求是把这个项目push到git上。一个笨方法是:在git上建项目,把目录结构git clone到本地,把代码填充进去,然后push到git上。显然这个太麻烦了。那么简介的方式应该怎么做呢?
1、在工作目录创建一个项目 mkdir test
2、创建一个文件 touch test.txt
3、push到git (现在这个文件夹还不归git管理)
3.1、使得该文件纳入git管理 git init 当出现.git文件说明该文件已经被git管理起来了
3.2、先把这个文件放到本地工作空间 git ac ‘init’
3.3、到git上New Project 注意 Project 的名字一定要和本地项目的名称相同 不要勾选README.md
3.4、在git上,把项目的SSH拷贝(点击"Clone or download"),用来建立本地与git的连接
3.5、git remote add origin git@git.oschina.net:***/test.git
3.6、因为我们没有在test文件夹创建README.md所以我们需要执行 git fetch 把git上项目的空间信息同步到本地,其实主要是README.md文件下载下来,这个命令不会更新我们本地的代码?
3.7、 把文件推送到git上: git push -u origin master
**<回滚>来看一个新的需求场景:**想把本地的文件进行版本回滚,并且使得远端也进行回滚。这个该怎么操作呢?
$git log
我们会看到类似于这样的信息:
commit b89ec7064b9563fdf887e82d0024ad5d1d6dee8c (origin/master)
Author: 笑笑候 <1888888888@163.com>
Date: Fri Nov 2 21:21:22 2018 +0800
this is test15.txt
commit后面的就是版本相关的编码,好接下来继续操作。
$ git reset --hard b89ec7064b9563fdf887e82d0024ad5d1d6dee8c
后面这个编码就是版本编码,到此为止我们仅仅是把本地的文件进行了回滚。
那么怎么样使的服务器上的也跟着回滚呢?
$ git push -f origin master
那么checkout是怎么用的呢?
一、新建分支专业一点的叫切分支
二、撤销更改
一、切分支:
$ git checkout -b dev-11-12-test1
那么切回到master怎么办呢?
$ checkout master
那么我想切换到任意分支呢?
一样的
$ checkout dev-11-13-test2
注意:只有在新建的时候才在checkout 后面加上 -b 命令,在已有的分支间进行切换是不需要的。
二、撤销更改
注意:
如果是新增文件或者删除文件,checkout是撤销不来的,更改文件内容是可以的。
命令:
$ git checkout .
注意最后面是有一个“.”符号的。
这个符号的意思是当前所有文件,亦然这条命令的意思是把当前所有文件都进行撤销。
那么只撤销某一个文件呢?
那就用文件名加后缀代替这个符号就好了
$ git checkout test.txt
stash命令
应用场景:对一个文件进行修改,并且没有add和commit;突然项目经理过来跟你说,老板小姨子的那个分支有个文件需要你去帮忙搞一下。(意思是说对文件进行了修改,但没有add和commit。)那么你改的致部分内容是没有进行持久化,很容易被丢掉的。但是如果我们进行add和commit的话会有这样两个烦恼—
1、日志混乱:每commit一次,在服务器上就会生成一条历史记录;导致我们不容易区分哪个才是我们真正想要提交的版本
2、我的操作是被中断的,意思就是说这不是我真正想要提交的,那么为什么要我提交呢?万一被老板娘看到会挨骂的。
所以应该有一个完美的解决方案的吧?
这个时候stash闪亮登场了
他的意思是。。。。。:(我这样解释吧)
告诉git先把我这一部分的修改内容做一个临时的持久化。忙完老板小姨子的事情以后再来完成剩余的部分,而后统一提交。
其实我不怎么建议使用stash。原因是:如果小姨子存心调戏我,一会儿她的斩男色唇膏要我帮忙找,一会儿她的桃红色唇膏要我帮忙看看是不是合适她。那我就需要频繁的stash,这时候我会处在一个癫狂的状态----不知道哪一次stash的代码才是我应该继续写的。
有一个stash的替换方案
$ git commit --amend
这个命令的意思是修正(不是口服液的修正,而是git的修正)
merge命令