git笔记
git总结1
git总结1升级了git版本,git clone 的时候报了如下的错误fatal: unable to access 'https:///open-falcon/falcon-plus.git/': SSL connect error百度了好久,试了好多⽅法,最后google到了解决⽅法,特记录下解决⽅法: yum update -y nss curl libcurlgerrit 上查找多个⽤户的提交status:merged project:android/qiku/frameworks branch:QCOM_8976pro_7.x_360OS (owner:yangbinhu OR owner:zengzhigang OR owner:dengweihua OR owner:wangfuquan)====================================================================================================虚拟硬盘MYDROID root ⽤户密码:zzgubuntu root ⽤户密码:123456虚拟机安装配置gerrit过程###################################################### [001] Install virtualbox and init virtual machine1. Install VirtualBox2. Double click MYDROID\MYDROID.vbox to start the VirtualMachine.!!Recommand: free space of your VBox disk is larger than 300G建议系统安装的⼀个虚拟机硬盘上,再创建⼀个虚拟机硬盘挂载到系统中⽤于存放数据。
git使用及提交规范
Git 版本控制Git中大部分操作都是针对本地文件和本地数据库,只有在我们平时执行类似克隆(clone)、pull、push等命令时才与远程服务器交互。
这样对于开发维护代码库就很安全,因为一旦远程服务器代码丢失仍然可以将本地代码上传到服务器;也会给开发者带来诸多方便,因为将远程代码取到本地后可以随意的修改,一旦修改混乱之后仍然可以恢复到以前版本,即使本地代码被误删除仍然可以重新从服务器取回代码。
下面将针对一些常用使用命令和技巧进行介绍:一、git提交规范在commit是,如果有对应PR,请在第一行写上PR号,然后再描述信息(另起行),并把涉及到改动的文件名附上.具体操作如下(不用git commit -m 填写说明):1、如果提交全部文件(请先git status确认是否要提交所有改动)1.1 git commit -a1.2 在打开的编辑器中(默认为VIM) 第一行填写PR号(顶格写,多个PR用逗号隔开,要写全),然后再写说明。
1.3 把涉及修改文件路径前的# 去掉,就会提交,不用手工输入文件路径。
1.4 然后ESC 输入:wq退出VIM.2、如果提交部分文件2.1 分别git add 要提交的所有文件。
2.2 git commit。
2.3 以后步骤同上。
二、第一次初始配置1、第一次取出代码到本地需要克隆代码(从服务器取代码到本地),一般如果新建一个本地代码库都需要重新克隆一次代码。
命令:git clone git://服务器代码库地址2、第一次使用git环境一般应该配置你的用户信息,这样会方便别人与自己查看git提交代码记录。
命令:$ git config --global zhangsan$ git config --global user.email *****************.cn这里使用的—global,以后的所有项目都默认使用这个配置,这时写入的是用户主目录的git配置文件(跟曲以鹏在邮件里边说的那个“.gitconfig”文件应该是一回事),如果想改变其中一个项目的配置可以去掉—global重新配置如:命令:$ git config lisi查看这些配置信息,如:命令:$ git config --list3、修改编辑器,一般我们在git commit(提交)后,需要添加PR号或者添加注释信息,对于编辑可以选用自己习惯的编辑器如:vi命令:$ git config --global core.editor vi三、提交代码(这部分只是针对本地代码库,所有操作都没有涉及服务器)1、提交代码过程大家都非常熟悉,平时常用几种命令,如:$ git add file –> $ git commit 或者全部提交:$ git commit –a当中可能经常使用如$ git status 查询状态、$ git diff 比较不同。
git message 语法
git message 语法全文共四篇示例,供读者参考第一篇示例:Git是目前最流行的分布式版本控制系统之一,为了更好的管理代码版本,保证团队协作的顺畅,Git 提供了强大的命令行工具和一套规范的语法。
在Git的使用过程中,git message 语法是至关重要的一部分,它主要用于规范提交信息的格式,方便他人阅读和理解代码变更的目的和内容。
下面我们将详细介绍Git message语法的规范和最佳实践。
### Git message 的基本格式Git message 通常分为三个部分:标题、内容和注释。
标题通常为单行文字,用于简洁明了地描述代码变更的目的,内容为多行文字,详细描述代码变更的具体内容,而注释则提供了更多的信息和上下文,比如相关的issue 编号、提交者信息等。
### 标题提交信息的标题应该简洁明了,一般不超过50 个字符。
标题的格式可以采用以下几种规范方式:- 动词开头:比如Add、Fix、Update、Remove 等- 使用第一人称:比如I add、I fix 等- 描述变更目的:比如Add feature A、Fix bug B 等### 内容提交信息的内容应该清晰详细,可以包含代码变更的原因、具体内容、影响范围等信息。
内容通常应该空一行,然后开始描述具体内容,每行文本应该不超过72 个字符,以便于在终端窗口中正确显示。
### 注释提交信息的注释是可选的,用于提供更多的信息和上下文。
注释通常应该以# 号开头,可以包含相关的issue 编号、提交者信息、参考文档等信息。
### 示例下面是一个符合Git message 语法规范的提交信息示例:```Add feature A- 在页面上添加了一个新的按钮- 修复了一个点击事件的bug- 关联了issue #123- 提交者:JohnSmith<****************>```### 最佳实践为了更好的遵守Git message语法规范,以下是一些最佳实践建议:- 提交信息应该清晰明了,描述变更的目的和内容- 标题应该简洁准确,不要包含无关内容- 内容应该详细全面,避免模棱两可的描述- 注释应该提供额外的信息和上下文,帮助他人理解代码变更的原因和环境Git message 语法的规范是为了更好地记录和管理代码变更历史,方便团队协作和版本控制。
git小乌龟 常见用法
git小乌龟常见用法Git 小乌龟是一个流行的 Git 客户端工具,提供了一个简单易用的图形用户界面(GUI),用于管理和提交代码更改。
下面是 Git 小乌龟的一些常见用法:1. 打开 Git 小乌龟:在终端或命令提示符中输入 `git gui`,然后按 Enter 键。
2. 添加文件到暂存区:在 Git 小乌龟中,选择要添加的文件,然后点击工具栏上的 "Add" 按钮,或者使用快捷键 Ctrl+A。
3. 查看提交历史:在 Git 小乌龟中,点击工具栏上的 "Log" 按钮,或者使用快捷键 Ctrl+L,可以查看提交历史记录。
4. 创建新的提交:在 Git 小乌龟中,选择要提交的文件,然后点击工具栏上的 "Commit" 按钮,或者使用快捷键 Ctrl+C。
在弹出的对话框中输入提交信息,然后点击 "OK" 按钮。
5. 查看分支:在 Git 小乌龟中,点击工具栏上的 "Branches" 按钮,或者使用快捷键 Ctrl+B,可以查看当前分支列表。
6. 切换分支:在 Git 小乌龟中,选择要切换的分支,然后点击工具栏上的"Checkout" 按钮,或者使用快捷键 Ctrl+O。
7. 合并分支:在 Git 小乌龟中,选择要合并的分支,然后点击工具栏上的"Merge" 按钮,或者使用快捷键 Ctrl+M。
8. 查看差异:在 Git 小乌龟中,选择要比较的文件,然后点击工具栏上的"Diff" 按钮,或者使用快捷键 Ctrl+D,可以查看文件差异。
9. 撤销更改:在 Git 小乌龟中,选择要撤销的文件,然后点击工具栏上的"Discard" 按钮,或者使用快捷键 Ctrl+D,可以撤销文件更改。
10. 保存更改:在 Git 小乌龟中,选择要保存的文件,然后点击工具栏上的"Save" 按钮,或者使用快捷键 Ctrl+S,可以保存文件更改。
obsidian git用法
obsidian git用法Obsidian是一款强大的笔记应用,它支持多种存储和同步方式,其中之一就是Git。
Git是一个分布式版本控制系统,它可以帮助用户记录笔记文件的修改历史,并可以进行版本控制和回滚操作。
在本篇文章中,我们将介绍Obsidian Git的用法,包括安装与设置、基本操作和进阶操作。
一、安装与设置1. 安装Obsidian和Git:首先,您需要在您的计算机上安装Obsidian和Git。
确保您已经正确安装了这两个软件。
2. 配置Git:在Obsidian中,您需要配置Git来识别您的笔记文件。
在Obsidian的设置中,找到“Git”选项卡,并确保“Enable Git integration”选项被勾选。
这将使Obsidian与Git进行集成。
3. 导入本地文件:在Obsidian中,您需要将本地笔记文件导入到Obsidian中。
您可以使用“Import”功能将文件导入到Obsidian 中。
确保将本地文件与Git仓库关联起来。
二、基本操作1. 查看修改历史:在Obsidian中,您可以通过点击笔记右上角的“…”图标来查看修改历史。
在这里,您可以查看笔记文件的版本历史记录,包括提交信息、修改内容和修改时间等。
2. 提交更改:如果您对笔记文件进行了修改,您需要提交更改。
在笔记右上角,点击“…”图标,选择“Commit changes”选项,输入提交信息并提交更改。
3. 合并分支:如果您需要将另一个版本的笔记文件合并到当前版本中,您可以使用Git的合并功能。
在Obsidian中,您可以通过点击笔记右上角的“…”图标,选择“Merge different versions”选项来合并分支。
三、进阶操作1. 创建和管理Git仓库:在Obsidian中,您可以通过点击笔记右上角的“…”图标,选择“Manage Git repository”选项来创建和管理Git仓库。
在这里,您可以添加其他用户作为协作者,并管理仓库的权限。
Git学习文档
Git学习⽂档#########################################################Study Document for Git#########################################################Git 基础Git ⽂件的三种状态:已提交(committed)、已修改(modified)和已暂存(staged)。
Git ⼯作⽬录的状态:已跟踪和未跟踪。
已提交表⽰数据已经安全的保存在本地数据库中。
已修改表⽰修改了⽂件,但还没保存到数据库中。
已暂存表⽰对⼀个已修改⽂件的当前版本做了标记,使之包含在下次提交的快照中。
基本的 Git ⼯作流程如下:1. 在⼯作⽬录中修改⽂件。
2. 暂存⽂件,将⽂件的快照放⼊暂存区域。
3. 提交更新,找到暂存区域的⽂件,将快照永久性存储到 Git 仓库⽬录。
Git 语法设置 Git 的配置git config --listgit config --global ***git config --global user.email @.comgit helpgit help verbgit verb --help克隆远端仓库git clone url检查当前⽂件状态git status列出当前分⽀和⽂件的状态:已跟踪/未跟踪。
[***@*** deployment]$ git status# On branch master# Untracked files:# (use "git add <file>..." to include in what will be committed)## test.mdnothing added to commit but untracked files present (use "git add" to track)跟踪新⽂件git add file[***@*** deployment]$ git add test.md[***@*** deployment]$ git status# On branch master# Changes to be committed:# (use "git reset HEAD file..." to unstage)## new file: test.md#Changes to be committed: 已暂存状态。
Git学习笔记之(一)使用gitgui从github上下载代码
Git学习笔记之(⼀)使⽤gitgui从github上下载代码背景:⽬前⼀些开源代码均在 GitHub上管理的,包括⾃⼰写的代码也可以放在上⾯进⾏管理。
但问题是,当你换⼀台电脑,想要将你⾃⼰放在GitHub 上的代码⼯程下载下来的时候,会遇到各种问题,⽬前可以使⽤4种⼯具下载代码,可以使⽤两种不同的⽅式。
内容:1、使⽤ Git Gui 下载代码在官⽹下载 TortoiseGit 和 Git GUI for windows ,下载完成之后,进⾏安装。
图⼀在设定为 git 的⽬录中右键,打开 Git GUI 软件图⼆图三使⽤账号打开GitHub,同时打开⾃⼰的⼯程,在Clone or download 下拉之后,选择 use SSH,拷贝输⼊框中的内容到 Git GUI 界⾯中。
图四此时点击 Clone,会提⽰如下内容:此时应该是SSH-key没有⽣成,需要到 GitHub 上,打开settings ---> SSH and GPG keys ---> 点击右侧的 generating SSH keys,查看官⽅的介绍,如何⽣成SSH key。
⼤致步骤如下:(1) ⾸先检查服务器上否已经安装了 SSH key。
打开 Git Bash执⾏ ls -al ~/.ssh 命令,如下图可以看到以下列出了含有 SSH key的地⽅。
当列表⾥⾯没有数据的时候,此时需要⽣成⼀个新的 SSH key,并添加到 ssh-agent (见操作4)和 Git Hub(见操作3)中。
(2) ⽣成新的 SSH key打开 Git bash ⼯具执⾏ ssh-keygen -t rsa -b 4096 -C "your email@"(3) 将 SSH key添加到 GitHub上直接打开 id_rsa.pub⽂件;将其中的内容拷贝到 GitHub上(setting----> SSH and GPG keys )选择 New SSH key。
Git知识点汇总
Git知识点汇总设置全局⽤户名git config --global "yourname"设置全局邮箱git config --global user.email "youremail"查看git版本git --version查看git⼯作⽬录情况git status查看⼯作区和版本库⾥⾯最新版本的区别git diff HEAD -- readme.txt提交⽂件⾄缓存区git add file提交⽂件⾄版本库git commit -m "这⾥是注释"回退⾄上⼀个版本git reset --hard HEAD~1回退⾄指定版本git reset --hard f21d35ef8b查看提交历史git log显⽰操作⽇志和版本号git reflog场景说明:每次修改,如果不add到暂存区,那就不会加⼊到commit中git checkout -- readme.txt 让这个⽂件回到最近⼀次git commit或git add时的状态。
场景1:当你改乱了⼯作区某个⽂件的内容,想直接丢弃⼯作区的修改时,⽤命令git checkout -- file。
场景2:当你不但改乱了⼯作区某个⽂件的内容,还添加到了暂存区时,想丢弃修改,分两步,第⼀步⽤命令git reset HEAD file,就回到了场景1,第⼆步按场景1操作。
要关联⼀个远程库,使⽤命令git remote add origin git@server-name:path/repo-name.git;关联后,使⽤命令git push -u origin master第⼀次推送master分⽀的所有内容;此后,每次本地提交后,只要有必要,就可以使⽤命令git push origin master推送最新修改;分布式版本系统的最⼤好处之⼀是在本地⼯作完全不需要考虑远程库的存在,也就是有没有联⽹都可以正常⼯作,⽽SVN在没有联⽹的时候是拒绝⼲活的!当有⽹络的时候,再把本地提交推送⼀下就完成了同步,真是太⽅便了!创建与合并分⽀在版本回退⾥,你已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就是⼀个分⽀。
.gitignore的语法
.gitignore的语法.gitignore是一个非常有用的文件,它可以帮助我们在版本控制系统中忽略不必要的文件和文件夹。
这个文件通常被放置在项目的根目录下,并且可以使用文本编辑器进行编辑。
在使用.gitignore文件时,我们需要了解其语法规则。
下面我将介绍一些常用的语法规则,帮助读者更好地理解和使用.gitignore文件。
1. 文件名匹配规则.gitignore文件中可以使用通配符来匹配文件名。
常用的通配符有两种:- *:表示匹配任意数量的字符,但不包括路径分隔符(/)。
- **:表示匹配任意数量的字符,包括路径分隔符(/)。
例如,如果我们想忽略所有以.txt结尾的文件,可以在.gitignore文件中添加如下规则:*.txt如果我们想忽略所有的日志文件,无论是什么后缀,可以使用如下规则:*.log2. 文件夹匹配规则除了文件名匹配规则,.gitignore文件还可以使用路径匹配规则来忽略整个文件夹。
常用的路径匹配规则有两种:- /:表示匹配项目根目录下的文件夹。
- /**/:表示匹配任意层级的文件夹。
例如,如果我们想忽略一个名为temp的文件夹,可以在.gitignore文件中添加如下规则:/temp如果我们想忽略所有的build文件夹,无论其层级如何,可以使用如下规则:/build/3. 特殊字符转义在.gitignore文件中,有些特殊字符需要进行转义,以确保它们被正确匹配。
常用的特殊字符包括:- ?:表示匹配任意单个字符。
- [abc]:表示匹配括号中的任意一个字符。
例如,如果我们想忽略一个名为?.txt的文件,可以在.gitignore文件中添加如下规则:\?.txt如果我们想忽略一个名为[a].txt的文件,可以使用如下规则:\[a\].txt4. 注释在.gitignore文件中,我们还可以添加注释。
注释使用“#”字符开头,并且只会影响到它们在同一行的内容。
例如,我们可以在.gitignore文件中添加如下注释:# 忽略所有的日志文件*.log总结一下,.gitignore文件的语法规则非常灵活,我们可以根据项目的需求来编写适合的规则。
git分支原理命令图文解析
本地分支解析git 通过可变指针来实现对提交数据的历史版本的控制,每当我们提交新的更新,当前分支(设为master)则指向最后一个提交更新A,而最后一个提交对象则存在一个指针指向前一次的提交更新Q。
如果我们创建一个新的分支,child,它和master共同指向A,这时,如果我们向child分支提交更新B,我们会发现child 指向B,而master依然指向A。
无论我们在child分支进行了任何开发,只要回到master分支,就能恢复到更新A的数据状态了。
在图片里,我们还注意到有一个head指针,一般来说,它会指向我们目前所在的工作分支。
现在它指向了我们的master分支,意思是master是我们目前的工作分支。
一旦提交更新,就会在master分支上提交。
现在,让我们看看与git 分支有关的操作命令:1. git branch [option] [name]如果不使用任何参数,它可以用来查看所有的分支,而在分支名前有*标记的则为主分支,如果加上name为创建新分支,,如git branch child,则会创建一个名为child 的分支,此外,它有一些常用的参数:2. git checkout [name]切换到对应的分支,对于上图,如果我们是使用git checkout child,我们的head 指针就会指向child分支了。
这时候,如果我们提交新的更新D,我们会发现:我们的D指向C,而C依然指向A,也就是说,以后我们在child分支上做的任何更新,都不会对master分支所在的之路造成任何影响!一旦使用了checkout命令,我们还会发现,不仅head指针会指向新的分支,而且当前工作目录中的文件也会换成了新分支对应的文件了。
此外,我们还可以使用git checkout -b [name]命令,它会新建一个分支,并自动将当前的工作目录切换到该分支上。
3. git merge [name]合并分支,有的时候,我们创建次要分支,可能是为了修改原有程序的bug,或为了拓展新的功能,这时候如果我们想把次要分支的修改何并进主分支中,我们可以使用git merge命令来实现。
CENTOS 安装GITLAB笔记
升级完成后,系统版本是6.5。
增加PUIAS安装源PUIAS Linux是面向桌面和服务器的完整的操作系统,它靠编译Red Hat Enterprise Linux 的源代码包来创建。
除了这些上游的软件包外,该项目还提供一些其他的软件仓库:“Addons”包含了通常的Red Hat发行中未收入的额外软件包,“Computational”提供专门针对科学计算的软件,“Unsupported”则收入各种各样的测试性软件包。
该发行由美国普林斯顿大学的高等研究所维护。
创建/etc/yum.repos.d/PUIAS_6_computational.repo,并添加如下内容:下载并安装GPG key检验下是否安装成功Tips:安装完EPEL和PUIAS两个源后,可以检测下:RHEL提示如果部分包不能安装,例如:eg. gdbm-devel, libffi-devel and libicu-devel,那么增加rhel6的安装源。
配置redis配置redis使其在开机时启动:f、配置邮件服务器笔者注:这个过程笔者没有配置,请参考英文文档。
2、安装Ruby下载并编译:安装完成后,重新登录终端确保$PATH生效,检测ruby的安装成功与否:安装bundle:如果提示sudo: gem: command not found,使用root账号登录执行该命令即可。
如果无法下载--http-proxy http://5.53.16.183:8080使用该参数系统用户创建用户git因为git用户不需要登录,所以这里不需要设置git的密码。
转发所有邮件笔者注:因为上面没有配置发送邮件,这里也省略。
4、配置GitLab shellGitLab shell是专门为GitLab开发的提供ssh访问和版本管理的软件。
先使用root登录,而后切换成git克隆gitlab shell切换成1.8.0版本,并编辑配置这里最重要的是将gitlab_url修改成gitlab的访问域名。
git notes 用法
git notes 用法Git Notes 是 Git 版本控制系统的一个功能,它允许用户向Git 数据库中的对象添加注释信息。
这些注释信息可以用来记录额外的元数据,比如用来记录某个提交的相关信息或者备注。
下面我将从多个角度来介绍 Git Notes 的用法。
1. 添加注释:要向一个对象(比如提交、树、标签等)添加注释,可以使用以下命令:git notes add -m "Your note message" <object>。
其中,`<object>` 可以是提交的 SHA-1 标识、分支名或者其他引用。
2. 显示注释:要显示一个对象的注释内容,可以使用以下命令:git notes show <object>。
这将会显示指定对象的注释内容。
3. 编辑注释:如果需要编辑已存在的注释,可以使用以下命令:git notes edit <object>。
这将会打开文本编辑器,允许你编辑已存在的注释内容。
4. 显示所有注释:要显示所有对象的注释,可以使用以下命令:git notes list.这将列出所有对象的注释信息。
5. 删除注释:要删除一个对象的注释,可以使用以下命令:git notes remove <object>。
这将会删除指定对象的注释。
总之,Git Notes 提供了一种灵活的方式来向 Git 对象添加注释信息,帮助用户更好地管理和理解版本控制系统中的数据。
通过上述介绍,我希望你能对 Git Notes 的用法有一个全面的了解。
Git学习笔记之(二)Gitbash命令介绍
Git学习笔记之(⼆)Gitbash命令介绍打开 git bash 界⾯,在该界⾯进⾏命令操作。
在你的本地⼯程根⽬录下右键打开 git bash 命令⼯具。
1、git -- help输出命令该命令,回车,可以看到所有git 命令,其也介绍了对应⽤法。
2、git log可以查看该⼯程最新提交的记录。
3、 git diff可以查看本地该⼯程与github该⼯程之间的差异性红⾊表⽰冲突点。
绿⾊表⽰表⽰新增点。
4、git commit(1) 初次提交某个⽂件⾄远程仓库(这⾥均是指同步⾄ GitHub上,以修改了根⽬录下的pom.xml为例)。
a) git commit -i pom.xml -m "修改pom中的依赖数据"该命令表⽰将 pom.xml 提交到本地仓库中,提交的 message为 "修改pom中的依赖数据",其中 -m "message",这个在提交的时候必须写的。
-i xxxx 表⽰提交某个⽂件。
此时回车,出现了如下情况:提⽰需要配置提交账号。
b) git config --gobal "accountname"该命令表⽰配置git的账号名;c) git config --gobal user.email "accoutemail"该命令表⽰配置git的邮箱;d) git commit --amend --reset-author该命令表⽰重置⽤户信息在输⼊ d) 的命令之后,直接进⼊了编辑器⾥⾯,在该编辑器⾥⾯会提⽰本次要提交什么样的内容,同时要求输⼊提交的message。
此时直接输⼊message,之后按 esc 键退出输⼊状态,并按ZZ 返回命令⾏。
命令⾏呈现如下状态;e) git push origin 分⽀名该命令表⽰提交到远程仓库中(2) 本次修改的内容同步⾄远程仓库本地有新增⽂件,需上传⾄远程仓库,先执⾏如下命令:git add ⽂件若是在⼯程⽬录下启动 git bash⼯具的话,这⾥的⽂件填写的路径为相对⼯程⽬录的路径;可以填写多个⽤空格隔开,如:git add 1.txt 2.txtgit commit -i ⽂件 -m "备注"将⽂件提交到本地仓库中, -i 命令表⽰特定的⼏个⽂件,多个⽂件⽤空格隔开,如: git commit -i 1.txt 2.txt -m "提交修改的⽂件"git push 远程服务器分⽀名称将修改的⽂件提交到远程服务器,如: git push origin master 将变更的内容提交到 git 上的主⼲上5、以下是从⽹上找到的命令还未经验证,并实际操作理解⽤途git Bash here从远程仓库更新代码到本地以及上传代码到远程仓库第⼀步:创建分⽀⾸先先在云平台或者github上⾯创建⼀个你的分⽀,⽐如叫做dev-ts-whitelist,第⼀次平台会⾃动帮你从master(主⼲)⾥⾯把代码同步到dev-ts-whitelist分⽀⾥⾯。
git manifest 语法
文章标题:深度解析Git Manifest语法:从简单到复杂的探讨在计算机科学领域,Git是一个非常重要的版本控制系统,而Git Manifest语法则是Git中一个关键但相对复杂的概念。
在本文中,我们将深入探讨Git Manifest语法,并从简单到复杂地解释这个主题。
通过本文的阅读,你将能够全面、深刻地理解Git Manifest语法的核心概念和应用场景。
1. 什么是Git Manifest语法?Git Manifest语法是Git中用于管理多个仓库的一种机制。
它允许用户在一个仓库中定义多个其他仓库的信息关系,从而可以在一个统一的环境中管理多个相关的项目。
这种机制对于大型项目或者需要跨项目协作的团队来说极为重要。
2. Git Manifest语法的基本概念Git Manifest语法的基本概念包括使用一个特殊的清单文件(通常称为manifest文件)来定义多个仓库之间的依赖关系。
这个清单文件可以包含仓库的名称、远程位置区域、分支信息等。
通过这种方式,Git 可以根据清单文件自动管理多个仓库之间的关系,从而简化了代码的管理和维护。
3. Git Manifest语法的具体语法及使用方法在清单文件中,通常会使用一种简单的XML格式来定义仓库的信息。
每个仓库的信息都会被包含在一个\<project\>标签中,并且可以包含各种属性,如name、path、revision等。
通过这些属性的组合,可以精确地定义多个仓库之间的关系,以及它们在本地环境中的具体位置和状态。
4. Git Manifest语法的高级应用除了基本的清单文件外,Git Manifest语法还支持一些高级的应用,比如分支管理策略、同步选项等。
通过这些高级应用,用户可以更加灵活和精细地控制多个仓库之间的关系,从而满足不同项目的特定需求。
5. 个人观点和理解对我来说,Git Manifest语法是Git中一个非常强大且有趣的功能。
git基础操作命令
1. git pull 更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支2. git push 将本地代码提交到服务器3. git log 查看提交信息a). git log -p 查看历次的log信息及更改情况b). git log -p -4 查看距现在最近的4次的log信息及更改情况c). git log frameworks/ 查看关于frameworks/目录修改相关的log信息d). git log --stat 查看log显示文件修改情况e). git log --stat packages/apps/Contacts/ 查看关于packages/apps/Contacts/目录修改相关的log显示的文件修改情况4. git status查看工作目录和代码仓库的改动情况,这个比较重要,可以查看你自己代码哪些需要上传,然后再去add commit5. git diff 查看工作目录和本地仓库的差异或者本地仓库各个版本的差异a). git diff packages/apps/Contacts/AndoridManifest.xml 查看工作目录中AndoridManifest.xml和本地仓库中AndoridManifest.xml的不同b). git diff b46cae3b9a377bcd9cfc249a5778fce647feb961dc94bf29aab18168e79d6496a89e47dba7a1d494 查看这两个版本的不同(git diff history_oldhistory_current)c)git diff84d7c8bf6fde87316f693015d4a541a1adf037b3 b39cf58eea2f7733723ad90d104b83774136efa8 pa ckages/apps/Phone/src/com/android/phone/CallCard.java 查看两个版本之间针对特写文件的变化6. git commit 提交当前修改内容a). git commit file1 file2 -m "log message" 提交file1,file2到本地仓库b). git commit -a -m "log message" 提交所有在Git索引中的改动,所以事先先用git status,看自己代码和服务器的对比有哪些改动,最好不用-a7. git add 增加文件到Git索引a). git add file3 file4将file3,file4加入到Git索引中8. git rm 从Git索引移除文件a). git rm file3 将file3从Git索引中删除9. git branch 对分支的增、删、查操作a). git branch 显示所有本地分支b). git branch new_branch 在当前版本创建一个名为new_branch的分支c). git branch -D new_branch 强制删除名为new_branch的分支10. git checkout 在不同的branch切换和还原文件a). git checkout branch1 切换到branch1分支b). git checkout /packages/apps/Contacts/AndroidManifest.xml 会将AndroidManifest.xml文件从上一次提交的版本更新回来,未提交的部分会全部回滚11. git reset 将当前的工作目录完全回滚到指定的版本号a). git reset [--fixed] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1 只更新索引,不更新工作目录,也就是说所有的本地文件都不会更新b). git reset [--soft] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1c). git reset [--hard] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1 强制回滚到指定版本号,未提交的和此版本之后的更改全部删掉12. git mergea). git merge branch1 将branch1的改动合并到当前所在分支13. git patcha). git format-patch -1 打一个当前提交的补丁,也就是最后一次的提交改动b). git fromat-patch -1 6525c43add803bfee37cf5c1cb573ed8aecf529e 打一个指定具体某一次的补丁c). git format-patch -2 6525c43add803bfee37cf5c1cb573ed8aecf529e 打基于指定具体某个版本的接连两次的补丁15.git reset HEAD^表示回退刚刚的提交, git reset HEAD^^ 表示回退刚两次的提交,以此类推, 补充一下16.git format-patch -1 打印刚刚提交的一版的patch,相当于svn diff17.git show 查看当前提交的版本18.git show ffd98b291e0caa6c33575c1ef465eae661ce40c9 查看指定版本的文件19.git show ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename 查看指定版本的某个文件20.git show 2010-Aug-12 查看指定tag的文件21.git remote show 查看远程仓库的信息22.git remote show origin 查看某个远程仓库的详细信息,比如要看所克隆的origin仓库23.git revert -n hashcode : git撤销某次历史提交; -n 不加的话,相当于撤销后的树状态也提交了,加了-n只是工作树回退了那次提交的内容,工作树处于待提交状态24.git show 9f5202b77bdd33f885207b618b7b2a78b6671813packages/apps/FM/src/com/hymost/fm/ui/FMRadio.java 查看特定版本特定文件的修改25.git diff 6af41d3 d67778 packages/apps/Music/>2.patch这个非常有用, 6af41d3 比d67778 新, 上句这样做的好处是可以产生从6af41d3 到d67778的反向diff ,把这个反向diff 写入2.patch,这样谁打了2.patch,谁就等于作了一次6af41d3 版本在对packages/apps/Music上所做修改的文本回退(如果该版本对这个目录的改动是有错的需要回退的,这是个好办法).回退,千万少用revert和reset ,这两个动作和危险,容易导致结点丢失.Changes to be committed:# (use "git reset HEAD <file>..." to unstage) //reset 加--soft 会保持文件的stage状态,(to be committed,这往往是被撤消的提交中的文件,stage中的文件的修改是diff不出来的), 如果不加(默认:mixed)就会把所有mark to be committed的文件全unstage掉,这时可以diff出来该文件的改动了## modified: packages/apps/Contacts/src/com/android/contacts/ContactsUtils.java //不会被diff出来, ## Changed but not updated: //会被diff出来# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: frameworks/base/core/java/com/android/internal/app/RingtonePickerActivity.java# modified: frameworks/base/media/java/android/media/RingtoneManager.java## Untracked files: //不会参与版本管理,除非用git add进来# (use "git add <file>..." to include in what will be committed)补充一下: reset --hard hashcode就是相当于check out 掉所以从此hashcode之后的所有本地修改了,很危险,慎用.revert hashcode1相当于reset --hard, 不过它的指针不回退,反而是在当前HEAD之上再加一个版本,而该版本在文本上相当于hashcode1之前一个版本的文本内容,但这时候指针都没丢,反而还多了一个,这时候想回过来有办法,就是reset --hard 到HEAD^就行了,一切都回来了,等于什么也没做过.不过尽量不要用revert. 这已经是一个deprecated 命令了.其实对于像1->2->3->4->5,这样的版本链上,如果2->3东西有问题,想回掉这部分修改,却不影响3后面的修改,最好的办法就是不要通过指针来实现,而是通过本文修改来实现新增一个6版本,盖在5之上,我们只要把2->3的patch拿过来,在当前5的基础上,打个反向patch就行: git apply -R 2to3.patch, 这时你的本地代码从文本上就达到了你要想的结果,就是5的状态下把2->3的修改抹掉. 不过打patch有一点要注意,我们尽量不要把png等图片的patch放里头,这样会很慢,图片的二进制码很大. 而且我们可以对patch 进行修改,回退我们想要回退的文件和修改.26. 问题:1->2->3->4->5(本地和服务器上都是这个状态)如果你想把package/app/Contacts从5这个结点的内容恢复到2这个结点,但又想让HEAD指针保持在5上,怎么做?(1)首先,git checkout 78350ad27ed3ad070bc0b5044ec594e70800aded(结点2的hashcode) packages/apps/Contacts/此时,你git log 看到的最新的commit结点会是:commit ba5ca90406bd6aaba3c54c46e9d143829b6a52fb-----结点6Merge branch 'master' of 192.168.10.104:repositories/7x27a-2045这句话到底做了件什么事呢,首先它把packages/apps/Contacts/的内容恢复到2这个结点的状态,然后并最新的内容修改(即恢复后的)做为一个新的结点6来在5的后面提交一个新的结点,所以现在情况变成了:1->2->3->4->5->6(2)但是我们又不想增加新结点,怎么办呢,很简单,只要软reset一下就行,也就是:git reset 5点的hashcode,这样子你再用git diff 就会发现相当于你把package/app/Contacts下面的内容都手动准确地改到了2结点的状态,指针链还是保持在原来的1->2->3->4->5。
Git学习笔记(SourceTree克隆、提交、推送、拉取等)
Git学习笔记(SourceTree克隆、提交、推送、拉取等)学习⼀下sourcetree使⽤git⽬录⼀克隆Clone⼆提交Commit和推送Push三拉取pull和获取fetch四版本回退reset五检出checkout六标签Tag⼀从远程库克隆CloneClone就是将远程库的代码拷贝到本地。
填写远程和本地项⽬路径,点击“克隆“。
这样就会将服务器上项⽬代码克隆到本地了。
git -c diff.mnemonicprefix=false -c core.quotepath=false clone --recursive https:///gamedaybyday/HelloGit.git D:\Git\HelloGit Cloning into 'D:\Git\HelloGit'...⼆提交Commit和推送Pushcommit将⼯作空间修改提交到本地库。
push将本地库修改提交到远程库。
新建⼀个test.txt来测试,任意改点什么。
在⽂件状态处可查看,红⾊为删除,蓝⾊为增加部分。
将修改后⽂件由未暂存⽂件,勾选到已暂存⽂件。
选择提交添加修改⽇志。
这⾥如果勾选“⽴即推送变更”则会同时执⾏commit和push。
git -c diff.mnemonicprefix=false -c core.quotepath=false commit -q -F C:\Users\gzy\AppData\Local\Temp\ofkmvj0p.tft这时,修改的代码提交到了本地仓库。
sourcetree会提⽰有修改代码尚未推送到远程库。
选择推送。
将本地仓库推送push到远程库。
git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags origin master:master三拉取pull和获取fetchpull 从远程拉取最新版本到本地⾃动合并 mergefetch 从远程获取最新版本到本地不会⾃动合并 merge虚线表⽰拉取到本地仓库实现表⽰拉取到本地仓库,并合并到⼯作空间git -c diff.mnemonicprefix=false -c core.quotepath=false fetch originFrom https:///gamedaybyday/HelloGit9664a7c..42c8f2e master -> origin/mastergit -c diff.mnemonicprefix=false -c core.quotepath=false fetch origingit -c diff.mnemonicprefix=false -c core.quotepath=false pull origin masterFrom https:///gamedaybyday/HelloGit* branch master -> FETCH_HEAD假如有冲突,使⽤解决冲突。
gerrit常用命令笔记
gerrit常⽤命令笔记repo使⽤笔记:rsync -avr .repo [username]@yourServerIP:/home/ 同步.repo配置到⽬标服务器绝对路径下repo sync -l 同步完上⾯.repo配置后使⽤此命令同步代码repo list -nr sboot 列举sboot仓库路径repo list dtv/fusion-bsp2/mstar/mboot/sboot 查仓库映射关系git使⽤笔记:⼀、新服务器git环境配置git config --global "[username]" 配置⽤户名git config --global user.email "[emailAddress]" 配置邮箱ssh-keygen ⽣成ssh-key,拷贝~/.ssh/id_rsa.pub内容到gerrit上注册⼆、提交修改部分1、git diff [filename] 显⽰本地与远程git库中⽂件差异-b PATH,忽略空格,显⽰差异2、git stash,保存⼯作区修改的现场,以得到⼲净的代码-- pop,恢复保存的⼯作区修改,继续未完成的⼯作-- list,查看stash列表-- clear,清除所有的stash history3、git status,查看⼯作⽬录状态,包含当前分⽀信息及修改信息等。
git add xxx或git add -i,添加到commit暂存区(如果add之后再次修改相同⽂件,需要再次add,否则第⼆次修改的内容不会被放到暂存区)4、git reset HEAD <file>...,撤出暂存区(与add相反)5、git commit -m "Comment Something"或者git commit -F xxx.log,添加版本注释,并提交暂存区到本地版本库6、git commit --amend 在当前commit上修改提交内容7、git reset --soft HEAD^,回滚最近⼀次commit,重新修改后,可以再次commit。
git reset 的常用用法
git reset 的常用用法
git reset 是一个常用的 Git 命令,用于撤销之前的提交、修改提交历史以及撤销暂存区的内容。
它有几种常用的用法,包括软重置、混合重置和硬重置。
首先,软重置(soft reset)是一种撤销提交并保留修改的方式。
使用 git reset --soft <commit> 可以将 HEAD 指针移动到指定的 <commit>,并且保留之前的更改。
这意味着之前的更改会留在暂存区,你可以在之后再次提交它们。
其次,混合重置(mixed reset)是默认的重置模式,它会移动HEAD 指针并重置暂存区,但不会改变工作目录中的文件。
使用 git reset --mixed <commit> 可以实现这一目的。
最后,硬重置(hard reset)是一种彻底撤销提交并丢弃修改的方式。
使用 git reset --hard <commit> 会将 HEAD 指针、暂存区和工作目录都重置到指定的 <commit>,这意味着之前的修改都会被丢弃。
除了以上的常见用法,git reset 还可以用来撤销暂存区的内
容,通过 git reset <file> 可以将指定文件从暂存区中移除,但保留在工作目录中的修改。
总的来说,git reset 是一个非常有用的命令,可以帮助我们管理提交历史和撤销不必要的更改。
通过合理运用软重置、混合重置和硬重置,我们可以更好地控制项目的版本管理和提交历史。
希望这些信息对你有所帮助。
git reset --soft的高级使用技巧
git reset --soft的高级使用技巧一、引言Git是一款强大的版本控制系统,reset命令是Git中常用的命令之一,其中--soft选项用于只更改工作目录中的文件状态而不改变Git仓库中的版本记录。
在高级使用场景中,掌握--soft选项可以更好地管理版本记录和保持工作目录的整洁。
二、使用--soft选项的场景1.撤销未提交的更改:当您想撤销未提交的更改但不想删除它们时,可以使用reset--soft命令。
这将把更改标记为"已更改",但不会将其添加到Git仓库中。
2.回退到某个版本:如果您想回退到Git仓库中的某个版本,而不想将之后的更改合并到该版本,可以使用reset--soft命令。
它将将工作目录更改为该版本的状态,但不会将之后的更改合并到该版本。
3.分支切换:当您从一个分支切换到另一个分支时,reset--soft 命令可以帮助您保持工作目录的整洁。
它将将工作目录更改为切换分支时的状态,但不会将之前的更改合并到切换分支后的状态。
三、使用方法1.进入Git仓库所在的目录,并运行以下命令查看当前HEAD的位置:```arduinogitrev-parseHEAD```这将输出当前HEAD的SHA值。
2.使用reset--soft命令回退到之前的版本,例如回退到SHA值为"abc123"的版本:```arduino```这将把工作目录更改为该版本的状态,但不会将之后的更改合并到该版本。
请注意,您需要将"abc123"替换为您要回退到的实际SHA 值。
3.如果您想保留工作目录中的更改并将其添加到Git仓库中,可以使用以下命令:```arduino```这将把工作目录更改为最新的提交状态,并将更改添加到Git仓库中。
请注意,这里的"HEAD^"表示上一个提交的SHA值。
四、注意事项1.使用reset命令时要小心,因为它会直接更改工作目录和Git 仓库中的状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
git笔记
前言
Git 确实是很好的版本管理系统。
有关其优点这里暂时不说了,网上也有很多相关资料介绍。
把这些记录下来方便以后查阅理解。
∙一些好的Git学习资源
∙Git分支管理策略
∙Pro Git books
∙Git交互学习
∙专为设计师而写的GitHub快速入门教程
∙GotGitHub
以下记录一些简单笔记,以便日后查阅,当然要想系统的学习下Git原理可以参考上面列出的学习资源
关于安装
请移步Git安装
当然最好能在Linux下。
创建版本库
∙通过git init命令将你要所在的当前目录变成Git可以管理的仓库;在当前目录下你能看到.git目录
∙一般你要将新写好的文件要加入该仓库管理时,用命令git add youfile ∙将上面加入仓库的文件提交到仓库,用命令git commit -m "your annotation information";注意:-m 参数后面记得填写你修改的注释说
明,方便别的开发者能阅读。
∙git status命令可以随时查看仓库当前的状态,如有哪些文件更改了,哪些已经提交,哪些文件没有跟踪.
操作远程仓库
一般可以自己搭建一个自己运行的Git服务器。
如果没条件,就用Github网站吧,一个提供仓库托管服务的网站,这里你可以将Github理解为Git服务器,但是它不免费提供私有的仓库。
所以,要是你的项目不公开的话,要么交点费用,要么自己搭建个Git服务器。
不多说
∙首先在上面注册个账号,我的账号
∙然后你“Create a new repo”创建一个新的仓库(我的新仓
库COS-IIAPP),按照默认情况设置就可以了。
∙关联你的本地仓库。
注意:最好本地仓库名字与你在Github上面新建立的仓库名字一样。
在本地仓库所在目录下运行命令:
1.$ git remote add origin git@:yourcoun
t/hello-world.git
其中origin即为远程库
∙将本地库的所有内容推送远程库
1.$ git push -u origin master
当然,如果你在本地创建了其他分支(不知道什么是分支?别急,要不你
先看我后面介绍的分支吧),也可以推送,将master改为你要推送的分
支名称即可。
你也可以从远程库clone到本地库,效果一样。
好了,到这步恭喜你,你现在可以看看你的github上面的是不是和你本
地的项目一样呢!妈蛋!没有??,好了忘记下面这一步了。
创建SSH Key
对了,在这之前需要创建SSH Key,因为你的本地Git仓库和GitHub仓
库之间的传输是通过SSH加密。
2.$ ssh-keygen -t rsa -C “”
并行开发
Git强大地方就在于它的多人共同开发了。
现在假设你的另外成员一起在分支dev开发一个项目.
∙他使用git clone git@:guxiaole/COS-IIAPP.git 命令克隆到他本地仓库
∙他要创建远程origin的dev分支到本地,用这个命令git checkout -b dev origin/dev;
∙他很厉害,很快就在dev分支上开发了一个伟大的Idea,推送到远程库git push origin dev后他很幸福的去看苍老师的电影了;
这个时候,你很痛苦的加班加点在dev上修改,终于搞定时候,试图也推送到远程库,这个时候就会提示报错。
次奥,那小子比我快!
原因:推送失败,因为远程分支比你的本地更新。
解决办法:
∙先用git pull试图合并; 注意:要是git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命
令git branch --set-upstream dev origin/dev
∙如果合并有冲突,则解决冲突,并在本地提交;
∙没有冲突或者解决掉冲突后,再用git push origin dev推送
分支的操作
∙默认master初始分支,一般比较稳定的项目版本在这个分支上,一旦开发出成熟的其他功能分支,测试稳定后再和此分支合并
∙现在你需要和其他成员开发一个新的功能,一般新建一个分支,并很愉快的在上面进行修改提交。
当然,这个时候还没有和主分支进行合并
这个时候,突然有人报告你发布的稳定版本master的一个bug需要修复,这个时候停下手头上进行的dev分支;转到master分支。
∙新建一个bugfix分支,修改提交
∙bug搞定,合并到主分支
回到dev 分支,继续工作,发现dev 新功能完成,合并master分支
对了,忘记bugfix分支此时可以删掉了。
另外
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场
小结
最常用的Git命令差不多就这么多了,随着后面学习继续更新吧。
当然,要想要彻底搞清楚git原理,还是系统看看相关书籍吧。
【编辑推荐】
1.GIT入门-基本概念与操作
2.超实用!高手的私人笔记之APP设计流程全科普
3.Git的好伙伴:SourceTree & BeyondCompare
4.给Git中级用户的25个精品提示
5.Git使用规范流程。