mkdir workcopy
cd workcopy
git init
git remote add origin /work/git/firstGit.git/
{
git pull origin master
git push origin master
}
vi .git/config
+++[branch "master"]
+++ remote = origin
+++ merge = master
+++ pushurl = /work/git/firstGit.git/
+++ push = refs/heads/master
{
git pull
git push
}
####################################################################
git checkout 切换分支
git add/rm [<.>|<file>] //将文件纳入/移除版本控制
git diff [<.>|<file>] //显示文件改动
git status [-s] //显示文件状态
git show [<version>] //显示提交记录
git blame <file> //显示文件历史修改
git log [<version>] //显示log
git show-ref //显示分支的最后一次commint生成的ID
git reflog //显示最后一次commit生成的ID的前7位
git reset <reflog> //将当前版本回退到reflog版本,reflog号可以在git reflog中查询
git cherry-pick --ff <reflog> //效果类似取消回退,将当前版本还原到reflog版本
git push [<remoteURL> <localBranchName>] //将本地分支提交到远程仓库
git pull [<remoteURL> <localBranchName>] //将远程仓库下载到本地分支
git merge <branch> //将分支branch合并到当前分支
.git/目录下:
HEAD 记录了commint指针的位置,当存在多个分支的时候,HEAD记录了当前使用的是哪个分支ref:refs/heads/branchName 。
refs/heads/branchName 记录了各自分支指针当前位置
logs/HEAD记录所有HEAD指针的变化过程
logs/refs/heads/branchName记录了各自分支指针的变化过程
远程仓库的指针是无法移动的
git init 初始话一个本地仓库
git remote add some_remote ssh://gerrit2@127.0.0.1:29418/test.git 添加一个远程仓库
git fetch some_remote 取出远此仓库索引,
git merge some_remote/master
合并远程仓库内容到本地当前分支
git fetch和git merge合起来相当于git pull
撤销提交
git reset HEAD~1
git merge remote
将远此程仓库合并到当前分支
意即将指针向前回滚1个节点
---------------------------------------------------------------
$ repo init
-u ssh://ip/manifest.git (manifest为清单库,描述了所有协作的库的路径)
-b branchname (下载分支代码)
-m version_name.xml(清单库文件,默认是default.xml,实际上manifest库里面也只有几个xml文件)
--repo-url=ssh://ip/tools/repo.git (下载repo)
--no-repo-verify
--repo-branch=stable
$ Repo sync 同步代码(第一次是直接下载代码,以后是将远程仓库更新取下来合入当前工作分支,封装了git pull?) (repo sync project)
$ Repo start (branchname -all 批量新建)新建分支 (repo abandon)
$ Repo branch 列出分支
$ Repo status 查看状态
$ repo upload 提交到远程(实际是封装了git add,git status,git commit操作)
$ repo forall -p -c <git branch>遍历仓库执行命令
$ git config –-list 查看配置
$ git config --global core.editor vim (加global是全局配置,不加是当前库的配置)
$ git config --global color.ui auto
$ git config --global user.name “xx"
$ git config --global user.email xx@xx.com
$ git config remote.remote_name.push ref/head/*:ref/for/* 配置push路径
$ git checkout –b work-branch-name (在当前分支上新建分支并切换到此分支)
$ git checkout branch-name(切换分支)
$ git checkout filename (重新检出文件,覆盖打当前修改)
$ git checkout commitId file (重新检出commitId处的文件)
$ git branch (列出分支)
$ git branch branch_name ab1afef (在当前分支的comitid为ab1afef的地方创建分支)
$ git branch 查看分支 (git branch –a)
$ git branch –d/D name 删除分支
$ git branch –m old new 重命名分支
$ git branch –merged 查看是否已合并
$ git remote -v (列出远程仓库)
$ git status (查看状态)
$ git diff (当前目录)
$ git diff --cached
$ git diff-tree -p branch (整个分支)
$ git add files (使文件被跟踪或暂存)
$ git stash (存入,在切换到其他分支前可以先执行此命令,再切换回来的时候再git stash stash@{i} 恢复状态)
$ git stash pop (移除最后一次stash)
$ git reflog (列出指针移动轨迹)
$ git show-ref (显示分支的最后一次commintID)
$ git reset (重置跟踪或暂存操作)
$ git reset HEAD@{n} (移动当前分支的HEAD指针到指定节点,相当于放弃部分commit)
$ git push origin local:remote (推送本地local分支到远程origin仓库的remote分支)
$ git log -n -g [--stat] (现在最近N次提交的log)
$ git log --since=2weeks (现在最近2周提交的log)
$ git log --pretty=[oneline short full fuller]
$ git blame <file> (显示文件历史修改)
$ git diff commitId_1 commitId_2 > tmp.diff (将2此提交之间的差异打成patch)
$ git format-patch change (生成补丁邮件)
$ git apply patch-file (将patch合入当前分支)
$ git am patch-file ((移除patch?)
$ git clean –f (清除所有未跟踪的)
$ git rm --cached file (清除缓存中的)
$ git merge branch_name (合并整个branch_name分支到当前分支)
$ git cherry-pick commitid (将commitid合并到当前分支,与git merge branchname类似,但是只合并指定的提交而不是所有)
$ git rebase branch_name (将当前分支合入到branch_name分支,并将合并后的分支作为当前分支)
$ git commit (-s 添加signed-by)提交到本地
$ scp -p -P 29418 username@ip:/hooks/commit-msg ./.git/hooks/ 为commitmsg添加change-id的hook
repo upload 提示public key问题的解决办法
$git config --global review."<reviewip:port>".username <gerrit_username>
附参考文档
分享到:
相关推荐
Git是分布式版本控制系统,用于跟踪对软件项目中的文件所做的更改。在本文中,作者谭耀武以PublicCMS项目为例,分享了一些基本的Git操作。PublicCMS项目有两个版本,一个是作者fork的版本...
git使用小记----作者:谭耀武概述本文以FrameworkBenchmarks为例对git的一些操作进行说明fork版地址:https://github.c
GitKraken安装包,适用于Windows操作系统,包括GitKrakenSetup-6.5.1.exe与GitKrakenSetup-5.0.4.exe两个安装程序。该可视化程序使用简单,显示直观,且为老版本,永久免费,可以操作私有仓库,并且解决了 gitee/...
在“android开发小记”这个主题中,我们可以深入探讨Android应用程序开发的相关知识,特别是通过查看提供的压缩文件中的代码示例。这些文件名如lesson_8_code.zip至lesson_20_codel.zip,以及不同的Mp3Player版本,...
最后,开发过程中的一些工具和实践,比如Maven或Gradle构建工具,Git版本控制,IntelliJ IDEA或Eclipse IDE的使用,以及单元测试和集成测试的策略,都是提高效率和保证代码质量的关键。 总的来说,"java小记.rar"这...
9. **版本控制**:作为软件开发过程的一部分,使用版本控制系统(如Git)对源代码进行版本管理,确保代码的稳定性和可追踪性。 这款家庭小记账本的开发,不仅展示了C++在实际应用中的强大能力,也为用户提供了实用...
“源码”标签可能意味着文章会讨论在Ubuntu中编译和管理源代码的方法,比如使用Git仓库获取项目源码,使用GCC或Clang进行编译,或者配置开发环境。而“工具”标签则可能涵盖了在Ubuntu系统中常用的命令行工具,如apt...
Liferay源码可以从GitHub上下载,或者通过Git克隆官方仓库。这一步对于理解Liferay的工作原理和进行深度定制是至关重要的。源码中包含Liferay Portal的所有组件和服务,可以方便地进行调试和修改。 安装Maven是构建...
标题 "SQL学习小记" 暗示了这篇博客文章主要关注的是SQL语言的学习和实践。SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言。以下是对这个主题的详细探讨: SQL基础: 1. 数据类型:SQL...
3. **版本管理**:Git等版本控制系统帮助管理代码,协同开发,记录版本变更。 **五、实践应用** 1. **动态加载**:根据需要动态加载数据,减少初次加载时的网络负担。 2. **可扩展性**:DTree可以与其他库(如...
媳妇儿单位给个活,说让她对比两个表,查找其中一个表的某一列的内容是否在第二张表中存在媳妇儿问我有啥好用,简单的方法没,我第一时间想到的是用python解决,因为
目录Linux、IOLinux基础IO分布式分布式理论数据结构与算法RedisRedis基础redis内部数据结构Git操作系统数据库MeavnHBaseHiveSpark面试计算机网络Spring面试RedisElasticsearch分布式JVM设计模式多线程JDK数据结构...
5. **版本控制集成**:对于团队协作,软件支持版本控制系统,如Git,允许对数据库模型进行版本控制,确保项目的一致性和可追溯性。 6. **迁移工具**:内置的数据迁移工具使得从其他数据库系统迁移到MySQL变得更加...