创建版本库
$ mkdir name //创建了一个空目录
$ git init //变成git可以管理的仓库
注意:使用Windows,千万不要使用自带的记事本编辑任何文本。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为保存UTF-8编码的文件,他们在每个文件开头家里0xefbbf的字符,你会遇到很多不可思议的问题,比如网页第一行可能会显示一个“?”。明明正确的程序一编译就会报语法错误,等等。
$ git add name.txt //把文件添加到仓库里
$ git add . //添加当前目录下的所有文件到暂存区
$ git commit -m “注释” //把文件提交到仓库,-m后面输入本次说明
$ git status //掌握仓库当前状态
clone
下载分支
git clone -b 分支名 网址.git
删除文件
$ git rm name.txt //删除具体文件
$ git rm -r name //删除文件目录
版本回退
$ git log //查看历史记录
$ git reset --hard HEAD^ //回退到上一个版本
$ git reset --hard 1234567 //指定回到未来的某个版本,1234567时commit id。
$ git reflog //用来记录以前的以前提交的版本,可以找到commit id。
$ git checkout – name.txt //我理解的就是把name.txt文件在工作区的修改全部撤消,和暂存区保持一致。
$ git reset HEAD name.txt //把暂存区name.txt或者换成*,就是全部修改撤销,重新放回工作区
远程库
$ git clone git@192.168.120.200:bios05/FT-2000Plus-S-KaiFaBan-ACPI-20191125.git //克隆项目
$ git push -u origin master //把本地缓存区的所有内容推送到远程库上
$ git push origin master //推送修改的内容,如果把master修改成其他分支,就推送到其他分支
$ git pull //更新
分支管理
$ git branch //查看分支
$ git branch name //创建分支
$ git checkout name //切换分支
$ git checkout -b name //创建并切换分支
$ git merge name //合并某分支到当前分支
$ git branch -d name //删除分支
遇到冲突时,只能先解决冲突。
$ git merge --no-ff -m “说明” 分支名 //合并分支,强制禁用”fast forward”
$ git log --graph --pretty=oneline --abbrev-commit //可以看到分支合并图
$ git stash //储存工作区现场
$ git stash list //列出来保存的工作现场
$ git stash pop stash@{数字} //恢复数字的工作现场,并删除list
$ git stash apply stash@{数字} //功能如上,但是不删除list
$ git stash drop stash@{数字} //删除list数字的工作现场
$ git branch -D 分支名 //强行删除某分支
标签管理
$ git tag v1.0 //打标记
$ git show v1.0 //查看标记
$ git tag -d v1.0 //删除标签
$ git push origin V1.0 //推送某标签到远程
$ git push origin --tags //一次性推送本地全部标签
$ git tag -d V1.0 //先删除本地标签
$ git push origin :/refs/tags/V1.0 //再删除远程标签
配置别名
$ git config --global alias.co checkout //把checkout配置为co
撤回push
https://juejin.cn/post/7136171249809489934
1.执行 git log 查看提交日志,获取需要回退的版本号 ID
2. 执行 git reset –-soft <版本号> ,如 git reset --soft 9d8c980edacd71410ed655,重置至指定版本的提交,达到撤销提交的目的
3. 然后执行 git log 查看提交日志
4. git push -f
如果遇到被保护的分支,需要解保护。参考如下文章
https://github.com/shaobeichen/blog/issues/11
Patch
两个commit号之间的不同生成patch文件
git format-patch -1 commit1 commit2
cherry-pick命令
基础语法如下
git cherry-pick <commit>
前提:首先是同一套代码,不同的分支,才用这个命令。
用法:输入命令后,主要是会出现很多冲突需要解决。先git status看冲突的状态,下面是我遇到的冲突类型和解决方式。
第一种:这个文件中的语句出现冲突。
both modified
可以打开这个文件并修改。
可以有时候遇到二进制文件不好手动修改,就需要以下命令
保留当前分支(ours)版本:
git checkout --ours <file>
保留合并分支(theirs)版本:
git checkout --theirs <file>
解决完后,需要
git add <file>
第二种:这个分支没有这个文件
deleted by us:
直接使用命令,要么删除,要么添加
git rm <file>
git add <file>
两种冲入解决完之后,可以检查以下命令检查是否还有问题。
git status
git cherry-pick --continue
最后commit并push就可以了
参考文章:https://www.jianshu.com/p/f3805a55c2ec
https://blog.csdn.net/jam_yin/article/details/131594716