赞
踩
#git库中文件的几种状态
#在项目中初始化一个本地git仓库
git init
#新建分支
git branch 分支名
#新建并切换到新建分支
git checkout -b 分支名
#切换分支
git checkout 分支名
#合并分支
git merge 分支名 或 git rebase 分支名
区别:git merge 提交树相互交错,但merge准确体现了提交历史次序
git rebase 提交树变得很干净, 所有的提交都在一条主线上,但rebase修改了提交历史次序
#当合并产生冲突时,放弃合并内容,使当前分支退回到合并前的状态(在合并分支时,要保证修改的内容已暂存)
git merge --abort
#查看本地仓库所有分支
git branch
#查看远程仓库所有分支
git branch -r
#查看当前仓库状态
git status
#查看具体的修改内容记录
git diff
#将工作区中所有未跟踪或者已修改的文件添加到暂存区
git add . 或 git add --all
区别:git add . 只添加当前目录及其子目录下的改动内容
git add --all 添加项目根目录下的所有改动内容
#将暂存区中的指定文件退回到未暂存状态
git restore --staged 文件路径
#将暂存区中所有的文件退回到未暂存状态
git restore --staged .
#撤消指定文件中发生改变的内容
git restore 文件路径
#撤消已修改的所有内容
git restore .
#将暂存区中的内容提交到本地仓库
git commit -m "描述信息"
#查看 提交记录哈希值、提交者、日期、描述信息
git log
#查看 提交记录哈希值、提交者、日期、描述信息、文件增删变化概况
git log --stat
#查看 某次提交记录的详细变化
git show 提交记录哈希值
注:HEAD 是一个对当前检出记录的符号引用,它总是指向当前分支上最近一次提交记录;
#查看当前HEAD指向
cat .git/HEAD
或
git symbolic-ref HEAD
#修改HEAD的指向(分离HEAD)
git checkout HEAD^ HEAD指向上一次提交记录
git checkout HEAD~n n为数字,HEAD指向回返 n 次的提交记录
#修改HEAD指向,使其指向指定提交记录
git checkout 提交记录哈希值
#强制修改分支位置
git branch -f 分支名 HEAD~n n为数字,将指定分支位置回退 n 级
#回退到上一次提交记录,并删除之前的提交记录(慎用)
git reset --hard HEAD^
#回退到指定的提交记录,并删除之前的提交记录(慎用)
git reset --hard 提交记录哈希值
#取消暂存区文件,使其回退到已修改但未暂存状态
git reset HEAD
#更新某次提交记录,这个过程不会删除其它提交记录
git revert HEAD~n 或 git revert 提交记录哈希值
#将指定的提交记录复制到当前HEAD引用下方(提交记录重排序)
git cherry-pick 提交记录哈希值1 提交记录哈希值2 ...
#选出当前提交到指定提交之间的提交记录,放入vim编辑器进行编辑(提交记录调整)
git rebase -i HEAD~n 或 git rebase -i 提交记录哈希值
注:git中的标签可以代替提交记录哈希值,可以用来快速定位到提交记录;
#为指定的提交记录绑定一个标签
git tag 标签 提交记录哈希值 该标签为引用类型
git tag -a 标签 -m 描述信息 该标签为对象类型
注:git clone 会将远程仓库克隆到本地,本地会产生一个 origin/master 分支,主要用来反映从远程仓库拉取代码那一时刻的远程仓库状态,本地仓库中会产生一个 master 分支;master 被设定为跟踪 origin/master ,这意味着 master 分支指定了推送的目的地以及拉取远程后合并的目标,这就是 master 分支与 origin/master 分支的关联关系;
#克隆远程仓库到本地
git clone url
#从远程仓库获取最新的记录到 origin/master 分支,本地仓库 master 分支不受影响
git fetch
#刷新合并远程与本地提交记录,效果等同于 git fetch + git merge
git pull 远程仓库最新的提交记录会被先下载到 origin/master 上,之后再合并到本地的 master 分支
#将本地仓库当前分支下的工作记录提交到远程仓库,并更新本地的origin/master分支
git push
#定义本地分支跟踪远程分支,让本地分支具备推送和拉取代码的功能
git checkout -b 本地分支名 origin/远程分支名 或
git branch -u origin/
远程分支名
本地分支名
#提交本地仓库中指定的分支到远程仓库
git push origin
本地分支
#提交本地仓库中指定的分支到远程仓库指定的分支下,若远程仓库没有该分支,则自动新建
git push origin
本地分支
:
远程分支
#在远程仓库创建分支并且与本地分支完成跟踪
git push --set-upstream origin 分支名
#将远程仓库指定分支更新到本地的 origin/分支名
git fetch origin
远程分支
#将远程仓库指定的分支更新到本地指定的 origin/master 分支
git fetch origin
远程分支
:
本地分支
分支合并
注:0 代表没有冲突,1 代表文件中两个分支共同的内容,2 代表当前版本文件内容,3 代表
#查看合并的目标分支与当前版本所有文件的冲突项
git ls-files -s
#查看指定版本的文件内容(n 为数字,配合 git ls-files -s 命令使用)
git show :
n
:
filename
#严格按照当前版本合并两个分支,冲突的解决方式以当前版本为准
git merge -s
recursive -X ours
目标分支
#严格按照目标分支版本合并分支,冲突解决方式以目标分支为准
git merge -s
recursive -X theirs
目标分支
#只合并目标分支的指定文件
git checkout
目标分支 文件绝对路径
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。