git与repo的使用

来源:互联网 发布:云南管家婆软件总代理 编辑:程序博客网 时间:2024/05/16 23:47

Git的使用

git init 初始化仓库
git add -A 将递归添加当前目录下的所有文件到临时工作区
git commit -m “Message” 提交临时工作区的内容
git tag xxx 为上一次提交的内容添加tag,如果不添加名称,则显示当前仓库中的所有tag
git log –pretty=oneline 以单行的格式,显示当前工作区中的所有版本
git show 提交号 查看提交号的更改
git reset –hard tag/commit_id 还原某个版本号
当需要将多个commit合并成为一个patch的时候,可以新建一个分支,将分支reset到指定src提交点,然后使用git merge –squash得到一个新的融合commit,最后使用git format-patch HEAD^即可
–squash选项的含义是:本地文件内容与不使用该选项的合并结果相同,但是不保留待合并分支上的历史信息,也不提交、不移动HEAD,因此需要一条额外的commit命令。其效果相当于将another分支上的多个commit合并成一个,放在当前分支上,原来的commit历史则没有拿过来。判断是否使用–squash选项最根本的标准是,待合并分支上的历史是否有意义。

git reflog 当后悔git reset之后,可以在30天内,通过reflog找回被恢复的commit编号,再次执行git reset –hard tag/commit_id进行返回,从reflog中可以看出,与cherry-pick应用变更不同,reset 命令的作用就是通过commit编号,进行更改动作回溯。
git format-patch tag/commit_id 制作对特定版本号的补丁
git apply –stat newpatch.patch 先检查patch文件
git apply –check newpatch.patch 检查能否应用成功
git am –signoff < newpatch.patch 打补丁
git status 查看当前工作区状态和版本信息
git stash 将当前工作区暂存
git stash list 查看缓存工作区
git stash pop stash@{num} 恢复编号为num的缓存工作区
git stash clear 清除所有缓存工作区
git cherry-pick 将一个提交的更改应用到本地,并且产生一个新的commit,当产生冲突的时候,可以git status 查看冲突文件路径,并且直接vim打开,查找HEAD标记手动解决冲突后,git add添加文件,并且git cherry-pick –continue完成提交
git diff 提交号(src) 提交点(dst) > xxx.patch生成标准补丁
直接调用git diff 可以查看当前缓存区改动
git apply < –check> xxx.patch 检查或者打入补丁
git format-patch 提交号/-M 分知名 直接生成git标准补丁
git am xxx.patch 检查并且应用补丁

git branch xxx 创建分支,不输入名称可以查看当前branch
git branch -d xxx 删除分支
git checkout xxx 分支切换
git merge xxx 将xxx分支合并到当前分支

git clone avalon@192.168.72.45:~/Program/git_test/ ./git_test 拷贝远程仓库到本地
git remote -v 显示所有远程仓库
git remote add xxx avalon@192.168.72.45:~/Program/git_test/ 添加远程仓库
git remote rm xxx 删除远程仓库
git pull origin branch_name更新同步远程仓库,同时可以用于push前冲突检测
git pull 相当于git fetch创建一个临时分支tmp,随后通过git merge合并分支。需要注意,pull只能确认当前本地代码库包含服务器上的所有提交;换句话说,在push之前执行pull,作用是在本地检查服务器上面的其他人的最新提交是否与本地的冲突,并将这些新提交应用到本地,但是并不能保证内容一致。
git push origin local_branch:remote_branch上传更新到远程仓库将本地分支local_branch推送到仓库上的remote_branch分支,如果远程仓库不存在remote_branch,则自动创建新分支
(push失败的时候,可能是创建服务器仓库的时候没有使用–bare –shared参数,可以任意创建目录后git –bare init –shared初始化空远程仓库,随后使用git push avalon@192.168.72.45:~/Program/git_test/ master完成新仓库同步)

Repo的使用

repo常用命令

repo init -u xxx 根据xxx指定的url初始化repo仓库,可以使用的参数选项:
–repo-url指定repo工具的远程git仓库地址
–repo-branch指定repo工具使用的分支版本
-m指定当前仓库使用的manifest文件
-b指定使用的manifest仓库的版本分支
repo branch 查看仓库的分支
repo start –all xxx 为仓库创建分支
repo abandon xxx 删除仓库分支
repo upload 上传仓库改动到审核服务器(基本没有用到)
repo manifest -o -显示当前manifest内容
repo sync 同步拉取整个仓库代码(-l表示只更新工作目录,不进行fetch;-c表示只fetch当前分支的内容;-d为强制恢复为manifest指定的版本)
repo status 查看仓库当前状态
repo forall -cvp ‘xxx’ 针对仓库下的各个项目执行xxx中的命令,其中v是显示详细错误信息,p为每次执行先输出工程名
比如:
‘echo ${REPO_PROJECT}’可以输出各个工程的名称,也是服务器仓库下各个git目录相对仓库目录的路径;
‘echo\ ${REPO_PATH}’可以输出工作目录中.repo/projects下各个*.git目录的路径;
‘echo \${REPO_REMOTE}’可以输出各个工程的远程仓库名称;
‘echo \${REPO_LREV}’可以输出各个工程最后一次提交的哈希值;
‘echo \${REPO_RREV}’可以输出各个工程克隆时manifest指定的分支;

0 0