Git

git常用命令
add #添加文件内容至索引
commit #记录变更到版本库
status #显示工作区状态
diff #显示提交之间、提交和工作区之间等的差异
git log –-pretty=oneline #查看最近历史提交的版本信息
git diff HEAD -- test.txt #命令可以查看工作区和版本库里面最新版本的区别
bisect #通过二分查找定位引入 bug 的变更
branch #列出、创建或删除分支
checkout #检出一个分支或路径到工作区
clone #克隆一个版本库到一个新目录
fetch #从远程一个版本库下载库到本地
grep #输出和模式匹配的行
init #创建一个空的 Git 版本库或重新初始化一个已存在的版本库
log #显示提交日志
merge #合并两个或更多开发历史
mv #移动或重命名一个文件、目录或符号链接
pull #获取并合并另外的版本库或一个本地分支
push #更新远程引用和相关的对象
rebase #本地提交转移至更新后的上游分支中
reset #重置当前HEAD到指定状态
rm #从工作区和索引中删除文件
show #显示各种类型的对象
tag #创建、列出、删除或校验一个GPG签名的 tag 对象
git push不会推送标签(tag),除非使用git push origin --tags
git remote -v #查看远程库的信息
stash #把当前工作区存藏起来
git stash list #命令查看
git stash apply stash@{0} #恢复,但是恢复后stash内容并不删除
git stash pop stash@{0} #恢复的同时把stash内容也删了,需要使用git stash drop删除
git checkout -b 新分支名 老分支名 #新建并检出分支

把缓存区的数据修改撤销,重新放到工作区
echo "123" > a.log
git add a.log
git status
git reset HEAD a.log #把缓冲区的a.log撤销回工作区

移除数据
git add database
git rm –cached database #将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件)

git add database
git rm -f database #如果在删除之前数据文件已经被放入到暂存区域的话,担心你误删未提交的文件而报错信息,可追加强制删除-f参数。
git checkout -- database #误删除恢复,因为版本库还有,可以把误删除的文件恢复到最新版本

Git移动数据
git mv readme.txt test.txt #git如果要修改文件名称,则使用git mv命令
git status #查看状态发现下次提交会有一个改名操作
git commit -m “changed name” #提交到git版本仓库

Git还原数据
echo “Git is a version control system” >> readme.txt
git add readme.txt #添加至暂存区
git commit -m “introduction software” #提交至git版本仓库
git log --pretty=oneline #提交的历史信息
git reset -–hard HEAD^ #还原历史提交版本上一次,退回上上个版本HEAD^^,退回上10个版本HEAD~10
cat readme.txt #查看文件内容(已经还原)
···Create new branch is linux。。。
回退到上一次的版本,例如pull更新完,需要回滚pull前的状态,执行:git reflog git reset --hard

[root@git-node1 xubusi]# git reflog #查看未来历史更新点
2caa209 HEAD@{0}: reset: moving to HEAD^
4bf5b29 HEAD@{1}: commit: introduction software
2caa209 HEAD@{2}: commit: changed the file name

git reset --hard 4bf5b29 #找到历史还原点的SHA-1值后,就可以还原(值不写全,系统会自动匹配)
如是只是想把某个文件内容还原,就不必这么麻烦,直接用git checkout命令就可以的,先写一段话
git checkout -- readme.txt
这其中是有一套规则,如果暂存区中有该文件,则直接从暂存区恢复,如果暂存区没有该文件,则将还原成最近一次文件提交时的快照。

git创建与合并分支
因为创建、合并和删除分支非常快,使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
git checkout -b test #创建test分支,并切换到test分支
git branch test #创建test分支
git branch -d test #删除test分支
git branch -D test #强制删除分支
git branch -m test test_new #修改分支名字,把test改成test_new
git branch #查看所有分支,*为当前分支
git checkout master #切换到master分支
git checkout -f master #强制切换分支
git merge test #命令用于合并指定分支到当前分支,合并后,就可以查看到test分支提交的内容了
git log --graph --pretty=oneline --abbrev-commit 查看分支合并的情况
git log --no-merges 过滤合并分支提交日志Merge branch

git更新远程分支库和推送远程分支库的方法
git pull origin dev(远端分支) #更新下载远端dev分支(默认更新到当前所在分支)
git push origin cby:dev #推送自己本地cby分支到远端dev分支
git push origin master:dev #推送自己本地master分支到远端dev分支(需先切换master分支把远端dev分支更新下来,才能这样推,否则报错)
git push origin master #默认把本地master分支推送到远端master分支上
git push --delete origin test #删除远程test分支
git pull origin master(远端分支名):release(本地分支名) 把当前分支和release分支 更新下载远端最新的master

手动建立追踪关系
git branch --set-upstream dev origin/dev #指定本地dev分支追踪origin/dev分支
git push -u origin master #将本地分支指定到远程仓库的master上
git fetch origin 远端分支名:新建本地分支名 #把远程分支拉到本地新分支上,不会遇到冲突

过滤标签
git show v0.9|sed -rn 's#commit (.*)$#1#gp'
git reset --hard v0.9 #可以直接使用标签还原历史,默认指定commit

排错

1 [root@dev opt]# git clone https://github.com/s3fs-fuse/s3fs-fuse.git /opt/s3fs/
2 Cloning into '/opt/s3fs'...
3 fatal: unable to access 'https://github.com/s3fs-fuse/s3fs-fuse.git/': Peer reports incompatible or unsupported protocol version.
解决:yum update -y nss curl libcurl

 

你好
原文地址:https://www.cnblogs.com/cuibaiyi/p/8677666.html