git log 查看当前分支提交记录
git status 查看当前状态,修改了哪些,缓存了哪些
git branch 查看本地分支和当前处于什么分支
-a 所有分支
-r 所有远端分支
-vv 查看本地和远程分支的对应
git checkout 切换到本地的分支
-b xxx remotes/origin/xxx 切换到远端的分支
-b xxx 基于本分支新建分支
git branch -d xxx 删除本地分支
git push origin :xxx 删除远端分支(推送一个空分支到远程分支)
git clone -b xxx 下载指定远程分支
git push origin xxx:xxx,推送本地xxx到远端xxx,远端没有则新建分支,但没有建立联系。
假设当前分支为master,需要创建的分支是my-test
git checkout -b my-test //在当前分支下创建my-test的本地分支分支
git push origin my-test:mytest //将my-test分支推送到远程(主要使用了它的一个特性:远程没有就会创建新的)
git branch --set-upstream-to=origin/my-test my-test//将本地分支my-test关联到远程分支my-test上(上一句只创建而未关联)
git branch -a //查看远程分支
git branch -vv 查看本地和远程的关联
pull是fetch+merge,fetch只取回别人在远端做的更改,而并不做合并操作,实际中,大多还是使用pull,在commit 以后。
上面这几句不仅创建了本地也创建了远程,两个都是最新的,但在实际使用中,应该让本地分支追踪大家一起用的分支,这样你的代码可以在其他人MERGE后进行git pull来获取最新(可能要先commit 自己的修改),待到你修改完成后,使用冒号提交到新的分支,然后请求合并。
代码有四种状态:修改前、修改后、add后、commit后.
可以使用reset和checkout来切换状态,吃个后悔药。
修改后到修改前:git checkout xxx 撤销谋文件或者git checkout .撤销全部
add后到修改后:git reset HEAD
commit后到add后:git reset --soft HEAD~x (x为一个数字,说明撤销到多久前)
commit后到修改后:git reset --mixed HEAD~x
commit后到修改前:git reset --hard HEAD~x
显示所作的修改,并可以输出为一个patch,之后再使用apply进行恢复,如果要给别人用或者不想stash全部而保留一部分修改则可以用这种办法。
tag是一个点,branch是一条由点组成的线,tag上只能看,不能做修改,branch是我们要操作的。
待理解的:merge rebase
1.一个干净的最新的开发分支(status, log,pull)
2.改代码成功,包含需求代码和实验日志代码
3.基于开发分支新建分支,删去log,只保留需要提交的代码,git stash 、git pull、git stash pop
4.提远程并提MR
5.根据comment在开发分支上修改
6、合入后恢复最干净的分支,删去本地和远程无用分支
如果分支太老,且没有多少修改,直接reset,然后pull
如果有挺多修改,可以先stash,然后rebase,pull.stashpop