常用git命令
repo init //初始化仓
repo sync -c --no-tags //同步最新版本
repo start master --all //创建master分支,在分支开始操作
git branch -a //查看本地分支
/****以上为初始化部分,首次操作即可****/
git checkout . //回退当前目录下的所有文件,到上次upload成功的版本,Linux下工程所有改动被还原
git status //查看修改后与上次commit 有什么文件变化
git add -u //添加修改过的文件到缓冲区
git commit -m //本地库进行一次提交
git log //查看commit记录,查看change ID
git reset --hard HEAD^(HEAD~1) //撤销本次提交(本地修改不保留?)
git reset HEAD^ //撤销本次commit 修改保留在本地,可以再次add
git reflog //显示历史操作记录
git pull --rebase //提交前更新代码
repo upload //将代码提交到网络版仓中
git blame 文件名 //查看文件的每行上库记录
git stash //将修改放到垃圾箱
git stash pop //将放入垃圾箱的修改取回
git reset HEAD //此操作将缓存区的修改删除,不影响本地文件
git revert commit-id manifests //本地回退代码
repo forall -vc “git reset --hard” //抛弃本地所有修改,回退版本时保证每个仓都没有修改
git clean -dfx //清理build产生的文件
git diff > patch //生成补丁文件,文件名patch
git cherry-pick --abort // (取消cherry pick操作?)
git apply patch //拷贝patch
git blame <文件> -L <行号,行号> //(例如git blame a.c -L 13,20 查看文件a.c中的第13-20行,上次修改记录)
日常问题解决:
一.下载某时刻代码(版本回退)
1.cd ./repo/manifetes/
2.查看时间节点,找到时间节点(tag号)
3.插入到init 链接中,重新下载代码。(查看init 链接分支:cat .repo/manifests/.git/config)
二.代码改错,回退
1.代码已经修改,但没有git add,向要丢掉修改: git checkout . (将已修改代码从工作区清除)
2.代码已经修改并且执行了git add,想要丢掉修改:git reset HEAD (从本地库恢复暂存区文件,清除暂存区代码,但工作区仍保留修改)
3.git reset --hard 回到上一次的commit节点,当前修改全部丢弃,工作区也不保留.
三.上库冲突解决方法:
即有部分代码你要修改,同时别人也在修改,但比你抢先上库了,所以你在合入的时候,系统无法辨别保留谁的代码。这就产生了冲突,需要人为解决保留哪些代码(大多数是保留别人的修改,把自己的代码放在下面)。
1.git remote show 获取远程仓(假设查询到的远程仓是origin)
2.git fetch origin 获取要同步代码的远程仓
3.git branch --remote 查看命令所在分支(假设分支为origin/br_hi1152_master)
4.git rebase origin/br_hi1152_master (rebase即为变基,因为我们本地的分支代码较旧(A),但是库上的主分支已经更新到了B,此时我们就需要将本地的分支更新到B在做修改,将基于A修改的代码变基成基于B修改的代码,执行过此步骤后代码里面冲突的部分将变为如下样式
<<<<<<<HEAD
xxxx库上此处的代码xxxx
.=======
xxxx本地自己修改的代码xxxx
.>>>>>>>问题单号
5.根据实际需要,合并好代码即可
6.git add .(将当前的修改全部提交到缓冲区)
7.git rebase --continue(修改完文件冲突后,继续变基。rebase成功后git status查看,当前已没有需要提交的文件)
8.repo upload(推到网页托管,随后等待老大合入库)
GIT命令很多,很强大,其实只用一小部分就可以解决工作中的大部分问题.方法也不唯一,初学的话,廖雪峰的git教程可以看看.