目录
拉取代码到本地
git clone https://github.com/….git
在本地目录中创建新的仓库
1.进入到改目录下打开命令行编辑工具
2.输入以下指令
git init
查看文件在工作区,暂存区的状态
git status
比较工作区文件与版本的区别
git diff # 用于比较工作区(未提交到暂存区)与暂存区(已经通过 git add 和 git commit)具体的修改变化
把目录内有变化的文件提交到暂存区
把目录所有的变化提交到暂存区,包括新文件
git add .
把目录所有的变化提交到暂存区,不包括新文件
git add -u
你也可以只添加部分文件内容到暂存区
git add [file1] [file2]
将暂存区内容添加到本地仓库中
git commit -m '备注信息'
你也可以只提交某部分文件内容到本地仓库中
git commit [file1] [file2] ... -m '备注信息'
把本地仓库推送到远程仓库
git remote add origin 你的远程仓库地址
git push
git remote
命用于在远程仓库的操作
从将本地的分支版本上传到远程并合并
git push
从远程获取代码库
git fetch
从远程获取代码并合并本地的版本
git pull
切换分支
git checkout 分支名
如果想创建分支则可以
git checkout -b 分支名
如果想切换回上一个分支可以
git checkout -
查看分支
git branch # 查看本地分支
git branch -a # 查看本地远程分支
git branch [分支名] # 创建分支
删除分支
git branch -d [分支名] # 删除本地分支,需要切换到其他分支 -D为强制删除
git push origin --delete [分支名] # 删除远程分支
重命名分支
git branch -m 分支原名 分支新名
合并分支
把test分支合并到当前分支上
git merge test
查看按提交时间排序的所有更新
git log
退回某一次提交的版本
git reset [--soft | --mixed | --hard] [HEAD]
-mixed
为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
--soft
参数用于回退到某个版本
--hard
参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
git reset –hard HEAD~3 # 回退上上上一个版本
git reset –hard bae128 # 回退到某个版本回退点之前的所有信息。
# bae128为hash值,使用git log可以查看到相关commit的hash
git reset --hard origin/master # 将本地的状态回退到和远程的一样
将工作区内容暂存起来
git add . # 执行这一步是防止新添加的文件在执行git stash 后丢失
git stash save "备注信息" # 备注信息也可以不用写 写上是方便查找
git list # 查看stash的存储列表
git apply # 应用某个存储,但不会把存储从存储列表中删除
git stash pop # 命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除
# 上述指令末尾加上stash@{$num} 可以选择对应的存储 不填则默认stash@{0}
git stash drop stash@{$num} # 丢弃stash@{$num}存储,从列表中删除这个存储
git stash clear # 删除所有缓存的stash
使用git mv解决更改现有文件大小写命名不识别的问题
git mv [原文件名] [新文件名]
修改本地commit信息
git rebase -i [startpoint] [endpoint] # [startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit
# [startpoint] [endpoint]为commit对应的hasd值,hash值可使用git log 查看
如上图,如果想更改1的commit信息就需要拿到2的hash的前面一段就可以了不需要完整的。
这时候会进入vim的命令模式,这时候输入i进入编辑模式
将想要修改的提交前的pick
改为reword
,如果需要修改多个,也可以将对应的多个pick
改为reword
编辑完后按esc键退出编辑模式回到命令模式下输入:wq
后回车确认指令,保存并退出
在弹出的窗口中,再次按i进入编辑模式,就可以修改commit的信息了,保存退出跟上面一样,这里就不重复说明了。
git rebase 指令
#p,pick <commit>
= 保留该commit
#r,reword <commit>
= 保留该commit,但需要修改提交消息
#e,edit <commit>
= 保留该commit,但我要停下来修改该提交(不仅仅修改提交消息)
#s,squash<commit>
= 将该commit和前一个commit合并
#f,fixup <commit>
= 类似于“squash”,但丢弃此提交的日志消息
#x,exec <command>
= 执行shell命令
#b,break
= 停在这里(可用’git rebase --continue
'继续rebase)
#d,drop <commit>
= 丢弃该commit
使用cherry-pick将指定的提交(commit)应用于其他分支
把某commit同步到当前分支上
git cherry-pick [commitHash]
把A到B之间(不包含A)的commit同步到当前分支上,A和B都是commit的Hash
git cherry-pick A..B
如果合并后出现冲突,解决掉冲突使用git add .
指令保存,再使用git cherry-pick --continue
继续。
如果想放弃当前合并则可以使用git cherry-pick --abort
放弃合并,回到操作前的样子
组合命令(&&)
用 && 可以组合多条命令,终端会依次从左到右执行
git checkout develop && git pull && git checkout master
git add . && git commit -m '备注信息' && git push
tag的使用
tag 是 Git 版本库的一个快照,指向某个 commit 的指针,相当于一个标记。
这样我们就可以用tag来记录发布的版本。
如何创建标签
git tag x.x.x -m '说明信息' master
# x.x.x:tag的版本号。
# 说明信息:这个tag的说明信息。
# master:tag是基于那个分支的最新节点上打出来的,补上master,确保tag是在master分支上。
查看标签
git show [tagName]
删除标签
git -d [tagName]
git push origin [tagName] # 推到远程仓库,如果远程仓库没有该tag,可不用这一步