git项目上使用也有一年多了,repo是下载源码才开始了解到.
之前在公司的wiki上面也写过git使用的一些总结,但也不够全面且理解不够.
自己在项目上,git使用最常见的如下:
- git init:初始化仓库,会在当前目录生成一个.git文件夹,保存git信息和配置;
- git status:仓库状态,红色:本地文件目录改动的文件、绿色:添加到暂存区的文件;
- git add : 添加修改的文件到暂存区;
- git commit:将暂存区文件提交到本地仓库;
- git push (origin remote_branch):将本地仓库提交到远程仓库;
- git fetch:将remote分支内容同步到本地.git/FETCH_HEAD分支;
- git merge:将其他分支合并到当前分支;
- git pull:git fetch+git merge;
- git stash [list][apply][drop][pop][show]:暂存恢复部分修改,以便在此处commit进行其他操作。
- git log:log记录
- git show commit_id:提交修改内容;
- git diff xxx:文件修改的差异;
- git rebase -i:衍合commit提交记录,整理提交记录,可以对历史的commit进行合并、拆分,内容修改等。
但小弟未在remote 仓库尝试过,因为项目经理说git分支要保持一直向前,git rebase去操作前面的历史提交感觉有点不合适。 - git commt --amend 修改commit提交信息;
- git tag -a -v001:版本001的tag,命令后会让调用vim输入tag信息;
- git reset HEAD/commit_id [--hard][--soft][--mixed]:移动HEAD到指定的提交点;
- git reflog:所以操作记录;
- git branch -a:所以分支,包括remote的,前标志“*”的代表当前所处分支;
- git branch -D branch_id:删除分支;
- git checkout -b new_branch:在当前的位置,切出新的分支;
- ........:还有很多很多,包括每个命令都有很多参数,而且git reset、git fetch、git rebase都是要单独拿出来理解的。
Repo:
唯一用到的地方,就是下载android源码。
- 先将repo脚本下载到本地
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo
~/bin/repochmod a+x ~/bin/repo
- 在新建一个文件夹存放源码,初始化repo:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
- 在同步代码到本地
repo sync
- repo branches:当前分支情况
- repo status:当前项目状况,会列出每个project的大致状态,每个project自己的状态仍然有其内部的git管理。
- 待补充。