目录
4.3 区别:git checkout -- file 与 git reset -- file 命令
5. git restore 和 git restore --staged 的区别
1. 初次运行 Git 前的配置
查看所有的配置以及它们所在的文件:
git config --list --show-origin
用户信息
安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
再次强调,如果使用了 --global
选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global
选项的命令来配置。
pull/push免密设置
进入到自己的home目录,执行以下命令后,在.gitconfig文件中生成credential
git config --global credential.helper store
原理:凭证存储
在使用Git进行开发的时候,我们可以使用ssh方式或者http url方式来进行源码的clone/push/pull,如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据。 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要用户名和密码的。
Git 拥有一个凭证系统来处理这个事情, Git 的选项:
- 默认所有都不缓存。 每一次连接都会询问你的用户名和密码。
- “cache”模式:会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。
- “store” 模式:会将凭证用明文的形式存放在磁盘中,并且永不过期。 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的 home 目录下
2. 拉取仓库代码
- 拉取Gitlab项目:git clone git@github.com:google/re2.git
- 进行项目:cd re2/
- 查看所有分支:git branch -a
- 在本地创建和远程分支对应的分支,使用:
- git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
- 建立本地分支和远程分支的关联,使用:
-
git branch --set-upstream branch-name origin/branch-name // the '--set-upstream' option is no longer supported git branch --set-upstream-to=origin/remote_branch your_branch
git pull 拉取分支,更新分支内容
(删除远程jingjing分支:git push origin --delete jingjing)
3. 提交代码
第一步:
如果分支(将此分支暂命名为dev)有修改,则先提交修改的内容,如果没有,直接跳到第二步
git commit -m “fix bug”
第二步:
切换到master分支下
git checkout master
第三步:
将远程的master代码pull到本地
git pull
扩展:强制拉取
git pull --force origin merge_code:merge_code
git pull <远程主机名> <远程分支名>:<本地分支名>
1、将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支,方法见文章末尾)
git pull
2、将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名>
3、将远程指定分支 拉取到 本地指定分支上:
git pull origin <远程分支名>:<本地分支名>
推荐使用第二种
第四步:
切换到dev分支下
git checkout dev
第五步:
合并master到dev分支
git merge master
如果在合并的过程中,提示Test.java文件出现冲突了,手动修改一下这个文件,修改成自己想要内容;如果没有出现冲突,直接跳到第八步
第六步:
添加修改的文件
git add email/Test.java
第七步:
将新添加的文件提交上去
git commit -m “merge master”
第八步:
将本地分支的代码push到远程仓库对应的分支上
git push origin dev
1.将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支,方法见文章末尾)
git push
2.将本地当前分支 推送到 与本地当前分支同名的远程分支上
git push origin <本地分支名>
3.将本地当前分支 推送到 远程指定分支上
git push origin <本地分支名>:<远程分支名>
推荐使用第二种
将本地分支的代码强制push到远程仓库对应的分支上
git push origin email_parser:email_parser --force
第九步:
在GitLab界面提交merge新请求
4. 版本回退
4.1 本地分支版本回退的方法
如果你在本地做了错误提交,那么回退版本的方法很简单
先用下面命令找到要回退的版本的commit id:
git reflog
接着回退版本:
git reset --hard Obfafd
0bfafd就是你要回退的版本的commit id的前面几位
4.2 自己的远程分支版本回退的方法
如果你的错误提交已经推送到自己的远程分支了,那么就需要回滚远程分支了。
首先要回退本地分支:
git reflog
git reset --hard Obfafd
紧接着强制推送到远程分支:
git push -f
git push origin dev:dev --force
注意:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支
4.3 区别:git checkout -- file 与 git reset -- file 命令
git checkout -- index.html
拉取暂存区文件 并将其替换成工作区文件
git checkout email/email_parser.cc email/server.cc
5. git restore 和 git restore --staged 的区别
5.1 git restore
git restore <file>
表示将在工作空间但是不在暂存区的文件撤销更改
5.2 git restore --staged
git restore --staged <file>
作用是将暂存区的文件从暂存区撤出,但不会更改文件
6. 本地关联远程分支
git branch --set-upstream-to origin/merge_code
7. git submodule的简单介绍
在软件开发过程中,通常我们会遇到有一些通用的部分希望抽取出来做成一个公共库的情况,比如安卓和IOS都通用的H5页面。而公共代码库的版本管理是个麻烦的事情。幸运的是,万能的Git有个叫子模组(git submodule)的命令完美地帮我们解决了这个问题。
如runtime工程下的build_tools