基本使用
-
初始化仓库:只需一次,再次打开时不需要再次初始化
git init
-
添加文件:可一次添加多个文件,此时文件进入暂存区
git add 文件名
-
提交文件:将暂存区的修改加入到分支中
git commit -m "备注信息"
-
查看文件状态:是否修改和是否提交
git status
-
查看具体修改内容
git diff 文件名
查看工作区和版本库最新版本的区别
git diff HEAD -- 文件名(注意空格)
-
查看提交日志,
git log
之后可按q键退出git log
精简版:精简提交日志
git log --pretty=oneline
-
版本回退
git reset --hard HEAD^(几个^表示回退前几个版本,过多可以使用HEAD~n,n表示前几个版本)
或者:该方法可以实现回退也可以前进到回退前的状态
git reset --hard commit_id
寻找
commit_id
:git reflog
查看文件内容
cat 文件名
-
撤销修改
- 将文件回到最近一次git add或者git commit 的状态,这个时候的撤销指的是修改没有被添加到暂存区,即修改在工作区。
git checkout -- 文件名
- 文件已经添加到暂存区,此时需要撤销修改,首先将文件撤回暂存区,回到工作区
git reset HEAD 文件名
使用工作区的修改撤回,即
git checkout -- 文件名
- 推到远程库了不支持修改撤回
-
删除文件
从版本库中删除
git rm 文件名
然后再提交
git commit -m ""
如果本地删除之后,想从版本库中获取,使用
git checkout -- 文件名
远程仓库
-
关联远程库,此时远程库的名字为origin
git remote add origin 仓库对应的SSH
-
本地内容推送到远程库,将当前master分支推送到远程仓库中
仓库为空时
git push -u origin master
仓库有内容时
git push origin master
-
查看远程库信息
git remote -v
-
删除远程库
git remote rm origin
本质上是删除了本地和远程库的绑定关系,不是物理上删除了远程库。
-
克隆远程库
git clone 仓库对应的SSH
分支管理
-
创建并切换到分支
git checkout -b 分支名
创建分支
git branch 分支名
切换到分支
git checkout 分支名
-
查看当前分支
git branch
-
合并分支
先切换分支
git checkout 分支
注:更为合适的切换分支的命令 switch
创建并切换到新分支
git switch -c 分支名
切换到当前有的分支
git switch 已有分支名
合并分支
git merge 需要合并的分支
合并分支并禁用
Fast forward
,一般默认Fast forward
模式git merge --no-ff 需要合并的分支
合并分支同时增加提交信息
git merge -m "提交信息"
删除原有分支
git branch -d 分支名
强制删除分支
git branch -D 分支名
-
解决冲突
当git无法自动合并分支时,使用
git status
可查看冲突的文件,然后手动解决冲突后再提交,可使用如下命令查看分支合并图git log --graph
-
分支管理策略
master
用于发布稳定版本,dev
用于平时修改,团队合作的代码都上传至dev
中 -
Bug
分支面前有两个分支,一个修改了一半,但没有完成,不能提交,一个是上个版本急需修改的
bug
,现在需要将修改一半的当前工作现场隐藏起来,等以后恢复现场后继续工作。git stash
查看原有存储位置
git stash list
上一版本的
bug
修复之后,恢复原有分支进度git stash pop
将修改后的版本复制到
dev
版本上git cherry-pick bug修复后版本的commit-id
-
推送分支
git push origin 远程分支名
-
克隆远程分支
首先创造远程
origin
的分支dev
git checkout -b dev origin/dev
此时可以正常
push
修改内容到dev
版本别人的推送和本地推送产生冲突
先抓取远程分支,然后合并,然后再推送
git pull
若提示没有和远程库链接,先使用如下命令
git branch --set-upstream-to=origin/dev dev
再尝试
pull
,然后先合并,若有冲突先解决冲突,之后再提交 -
Rebase
把本地未push的分叉提交历史整理成直线
git rebase
标签
-
打标签
git tag 标签名
默认标签是打在最新一次提交中
-
查看已有标签
git tag
-
给历史提交打标签
git tag 标签名 历史提交commit-id
-
查看标签信息
git show 需要查看的标签名
-
创建自带说明的标签
git tag -a 指定标签名 -m 提交信息 commit-id
-
删除标签
git tag -d 需要删除的标签名
-
推送标签
推送某一个
git push origin 标签名
一次性推送全部
git push origin --tags
-
删除远程标签
先删除本地标签
git tag -d 标签名
再删除远程标签
git push origin :refs/tags/标签名