关于Git是什么,或者一些使用Git项目的我就不说了,只说一下简单的命令和我常用的到东西,建议先敲命令再用可视化工具
1. 常用命令
-
git init
会生成.git文件 -
git remote add origin https://xxxxxxx.git
将本地git关联到远程中央库 -
git add
后缀文件名可以指定添加某些文件到暂存区,或者后缀--all/.
可以将当前管理文件下的所有改动文件添加 -
git commit
提交暂存区内更改,在这之后需要填写提交日志,也可以直接在后面追加-m "[message]"
合并操作 -
git push origin [branch-name] -f
强制推送分支,用于已知的冲突的情况下,一般在公司不建议这样用 -
git branch
查看本地仓库,后缀加-a
可以查看本地和远程branch -
git branch [branch-name]
创建分支,但是并没有切换到该分支. -
git checkout [branch-name]
切换到指定分支,在checkout
后追加-b
会创建分支并切换 -
git push
将本地推送到远程,如果本地是本地新建的分支需要建立推送关系,追加--set-upstream origin [origin-branch-name]
-
git pull
将远程拉取到本地 -
git merge [branch-name]
将指定分支合并到当前分支,如果发生冲突需要先解决相关冲突进行更改 -
git merge --abort
终止当前merge操作,这样就可以重新进行合并操作
上述是正常的操作命令,下面是关于一些关于删除和撤销的命令.
2. 删除命令
-
git branch -d [branch-name]
删除指定分支-------当前操作的branch不能进行删除操作,如果要删除的分支没有向master分支进行合并,那么强制删除是需要将-d
更换成-D
,这里需要多一句,本身branch就是一个引用,删除的只是引用,并不是真正的删除,Git的自动将回收机制会在一定时间内回收.所以branch是可以恢复的,但是一定要是在Git没有回收之前. -
git push origin :[branch-name]
删除远程分支-------这个并不是真正的删除远程,只是推送了一个空的分支,看着就像删除了一样.主要origin后面一定要有一个空格
3. 撤销命令
git reset --hard HEAD^
撤销最新一次的提交------当然也可以撤销之前很多的次的提交只需要更改HEAD后面的^的个数或者直接HEAD~n(n>=1)
;reset
后面有三个后缀,
--soft
重置commit,将头指针恢复,已经add的缓存以及工作空间的所有东西都不变容;
--mixed
就将头恢复掉,已经add的缓存也会丢失掉,工作空间的代码什么的是不变的;
--hard
重置commit,并清空所有操作;
-
git rebase -i HEAD~n
撤销指定位置的commit------在这之后会弹出对应的操作框,你需要将你将你要撤销的commit整行删除然后保存退出就可以了 -
git rebase --onto [目标commit] [起点commit] [终点commit]
撤销指定位置的commit-----和上面的效果是一样的,解释下参数,第一个可以理解为你要撤销的前一个,第二个可以理解为你要撤销的那个,第三个一般写当前分支的名字(其实也就是最新的commit) -
git revert HEAD^
倒置最新一个commit的所有内容------可用于已经将commit推送的远端的情况. -
git rm -r --cached [file_name/.]
取消git对于某个文件进行跟踪,该操作并不会真实的产出本地文件,如需删除需要将 --cached更换为--f
4. 其他命令
-
git checkout XXX
+git checkout -b [branch-name]
这样就可以恢复指定分支,XXX是通过git reflog
找到的sha-1值找你删除前的最后一次操作,一般都是moving from [del-branch-name] to master,这个就要看你找的对不对了.还有一个特殊情况就是log已经被删除了或者引用呗回收那就无力回天了(反正我是不知道怎么恢复,有大佬,请留言). -
git stash
+git stash pop
这个是一个小技巧吧,就是将当前工作目录的改动藏匿起来.场景就是在你正在写什么东西的时候老板来一句:给我把那个什么给我打个包.呵呵哒!!!然后我们add-commit-checkout-打包-reset-继续写代码,这尴尬了!有了这个就可以stash-checkout-打包-stash pop-继续写代码.reset是有风险的,玩不好就炸了.不要问我为什么!!! -
git tag
默认展示该分支下tag标签新 -
git tag -a [version-name] -m "[tag-desc]"
给当前分之增加tag
5. Git忽略文件
不要小看.gitignore文件的作用 !!!
它可以帮你在提交的时候省去很多麻烦,所以在写的时候可以仔细想一想再写.
当然如果你刚开是没想好,后面想不上,只是单纯的补一个文件路径上去是不行的,需要删除git的跟踪.
- 命令如下
git rm -r --cached [file_name/.]
git add .
git commit -m "xxx"(建议使用git commit 写个详细的commit msg)
git push
6.工作小记
以下为个人观点
- commit的整洁性.
- 目的: 方便自己和他人进行相关review
我的做法:利用rebase合并commit或者进行reset之后重新commit.当你在一些开源代码进行pr的时候都要遵循和保证这个.
- 工作流
- 目的: 保证代码的正确性,规范代码发布和开发流程,便于版本维护
总结一下,关于上面写的命令都是可以自己去git --help看看,看懂了加上一些其他Git文章的辅助,命令行就会写的很有底气了.
有则改之,无则加勉