git clone /vob/xx_workspace/sdk_xx zhangsan_xx_gz //克隆一个分支到xx_xx_gz
git clone zhangsan@192.168.5.183:/vob/xx_workspace/sdk_xx zhangsan_xx/
cd zhangsan_xx_gz
git checkout master //切换到master分支,master分支是创建工作区是默认创建的分支,可以直接切换远程分支
git checkout filename //撤销工作区内filename的改动
git reset HEAD filename //撤销暂存区内filename的改动,使其转变成工作区的改动
git branch //查看本地分支
git branch -r //查看远端分支
git branch -a //查看本地和远端分支
git branch -vv //查看本地分支的上一次提交以及和远程分支的追踪状态
git branch Example_xx_xx origin/Example_xx_xx //创建一个关联到远端分支Example_xx_xx的一个本地分支
git branch -D //删除一个分支
git branch -d XX 提示: the branch XXX is not fully merged
原因:XXX分支有没有合并到当前分支的内容
解决方法:使用大写的D 强制删除 git branch -D XXX
git log Example_xx_xx //查看Example_xx_xx分支的log,即提交记录,包括本地分支和远端分支
git log Example_xx_xx -p //列出该分支的提交记录,包含具体的改动内容
git log Example_xx_xx --stat //列出该分支的提交记录,包含每次提交的改动文件以及被改动的地方的数目
git log 351523c23f8afda3cc19cf06b26979a95c5c3c8b //列出本次提交之前的所有提交记录,包括本次提交
git log -p 351523c23f8afda3cc19cf06b26979a95c5c3c8b //列出本次提交之前的所有提交记录的详细修改,包括本次提交
git log --stat 351523c23f8afda3cc19cf06b26979a95c5c3c8b //列出本次提交之前的所有提交记录的修改文件,包括本次提交
git log commit1..commit2 //列出commit1和commit2之间的提交记录,但不包括commit1(commit1应在commit2之前提交)
git log -p commit1..commit2 //列出commit1和commit2之间的提交记录,但不包括commit1(commit1应在commit2之前提交)
git log --stat commit1..commit2 //列出commit1和commit2之间的提交记录,但不包括commit1(commit1应在commit2之前提交)
git log HEAD //列出当前分支的所有提交记录
git log HEAD~14 //列出14次提交之前的提交记录
git log -p HEAD~14 //列出14次提交之前的修改记录,包括修改的内容
git log -p -2 //只显示最近的两次提交
git log --oneline --graph
git log --graph master
git log --graph
git log --graph --decorate
git log --graph --decorate --oneline
git log --name-only 7cf33b3 //显示本次提交的文件列表,包括本次提交之前的所有提交
git whatchanged 7cf33b3 //显示本次提交的文件列表,包括本次提交之前的所有提交
git status //查看当前分支被修改但未提交的文件,包括工作区和暂存区的文件状态
git status [-s][-v] shared/opensource/boardparms/bcm963xx/boardparms.c //查看当前分支某一特定文件的状态
git status -u no //不显示未被跟踪的文件
git status -s //以脚本的形式显示文件状态,M顶行表示修改提交了,M位于第二字符表示未提交。
git show commit1//查看commit1的提交记录
//在git上配置个人信息,每次提交的时候都会用到这些信息
git config --global user.name "zhangsan"
git config --global user.email zhangsan@sinachina.com.cn
git config -l //显示配置信息
git config --list
git checkout -p remotes/origin/master shared/opensource/boardparms/bcm963xx/boardparms.c //这个命令可以用来打补丁。这个命令主要用来比较两个分支间的差异内容,并提供交互式的界面来选择进一步的操作。
//这个命令不仅可以比较两个分支间的差异,还可以比较单个文件的差异哦!
//选择y,将补丁添加到工作区和暂存区
git diff shared/opensource/boardparms/bcm963xx/boardparms.c //查看工作区和暂存区的文件差异
git diff HEAD //查看暂存区和仓库间的文件差异
git diff --staged //查看暂存区和仓库间的文件差异
git ls-files - 会显示缓冲区内的文件信息。
git stash save //暂时保存当前分支的未提交修改(工作区和暂存区),然后可以切换到其他分支
Saved working directory and index state WIP on tmpbuild: d4c91aa enable debug message for rdp
HEAD is now at d4c91aa enable debug message for rdp
git stash list //显示暂存内容列表
stash@{0}: WIP on tmpbuild: d4c91aa enable debug message for rdp
git stash pop //回复最近一次的暂存修改到工作区
清理当期工作目录中未被追踪的文件或目录:
git clean -fdx //f文件,d文件夹,x .gitignore中的文件
git clean -f //删除untracked files
git clean -fd //删除untracked 的文件和目录
git clean -fdx //连gitignore中untrack的文件/目录一起删掉(慎用,一般用来删掉编译出来的.o之类的文件)
git clean -nxfd //在用上述命令前,建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nf
git clean -nfd
git add filename //将文件加入到暂存区
git commit -m "" //将暂存区的文件加入代码库
git reset HEAD filename //撤销暂存区的文件
git checkout filename //撤销工作区的文件
从远端分支更新代码:
git fetch origin;
git rebase origin/master; //变基操作,从当前分支转换到master,并将当前分支的改动合并到master,废弃当前分支
git fetch origin; git reset --hard origin/master;
git fetch origin //更新远端分支代码到本地,但未与本地分支合并
git merge origin/minifix //将更新的代码合并到当前分支
git commit //如果有冲突,进行冲突处理
git push origin minifix //将本地代码推送到远端
git push origin [本地分支名]:[远程分支名] //将本地分支推送到远程分支
git push //push当前分支到当前分支的追踪关系分支
git reset HEAD -- <file> //git reset fe23d65 --filename
该操作 可以 拉取最近一次提交到版本库的文件到暂存区 并且该操作不影响工作区
简单的来说 就是可以帮我们从版本库中 拉取文件到 暂存区 当我们把工作区的某个文件弄乱了 我们就可以使用该命令 把版本库中的那个文件拉到暂存区 然后再拉回工作区
将分支改动合并到主分支:
$git branch
minifix
* tmp
$ git checkout minifix //切换到主分支
$ git merge tmp //合并tmp分支到主分支
git bundle create <filename> master //为master分支创建bundle文件,保存改动历史
git clone repo.bundle repo //从bundle中克隆一个分支,如果在创建bundle时没有指定引用,所以此处需要使用-b来制定一个被引入的分支,否则git
不知道应该检出哪一个分支,例如 -b master 即检出master分支
git cherry-pick <commitid>...<commitid> //可以将其他分支的提交拉取到当前分支
mkdir onu_debug
git clone ssh:remote-branch-url ./onu_debug //从远端个人分支clone本地仓到onu_debug,个人远端仓从主仓fork而来
cd onu_debug
git checkout -b onu_eqpt //创建本地分支onu_eqpt,-b并切换到该分支
git remote -v //查看远端链接,origin即为远端个人仓的链接简称
git remote add trunk ssh:remote-master-url //添加到主仓的ssh链接,命名为trunk
git pull trunk onu_EQPT //通过trunk拉去主仓上onu_EQPT分支代码到本地分支
git reset --hard 25es78d // 如果拉去失败,则强制更新到最新的commitid
git pull trunk onu_EQPT //通过trunk拉去主仓上onu_EQPT分支代码
git status
git add
git commit -s
git push origin onu_eqpt:onu_EQPT //推送本地提交到远端个人分支onu_EQPT,如果不存在,则创建远端个人分支onu_EQPT;如果远端
和本地分支同名,则不需要指定远端分支;如果本地分支已经关联了远端分支,则pull或push的时候不需要指定分支,直接git pull或是git
push即可
git branch -vv 查看关联分支