android repo 切换分支
转载:https://www.xuebuyuan.com/1265653.html
查看可切换的分支
cd .repo/manifests
git branch -a | cut -d / -f 3
以 gingerbread-release 分支为例
repo init -b gingerbread-release
repo sync (not needed if your local copy is up to date)
repo start gingerbread-release --all
查看当前的分支
repo branches
git笔记
git add . 是不是表示当前目录下的提交?
git show filename 这个命令是否合法?
git reset --soft 退回仓库区的修改 ?
git commit –amend //修改最近一次的提交说明,并提交暂存区,即用新的快照替换上一个提交。
git reset //所有文件从暂存区回退到工作区,就是回退git add命令的执行。
git reset HEAD filename //回退指定名称的文件,将文件从暂存区回退到工作区 //也可以使用 git reset filename
git add -u:将文件的修改、文件的删除,添加到暂存区。
git add .:将文件的修改,文件的新建,添加到暂存区。
git add -A:将文件的修改,文件的删除,文件的新建,添加到暂存区。 //前2个没必要记忆,记住这个就可以了
git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
git add -A :是上面两个功能的合集(git add --all的缩写)
git commit提交版本时没有加-m,会进入vim,如何写入提交说明然后退出?
1.摁键盘i,会进入--INSERT--模式
2.此时光标在最上面,输入要替提交的说明'comment',嗯Esc,然后输入:,光标跑到了最下面
3.输入wq之后,摁回车即可,就要回到了原始的命令行界面
git commit --amend两种用法:
一、如果已经push到远端服务器,想修改已经提交过的commit信息
1.保存:Ctrl + o; 回车 ;退出:Ctrl + x
# git commit --amend
2.重新提交gerrit审批
# git push --no-thin origin HEAD:refs/for/master
二、如果已经push到远端服务器,有漏掉的test.txt文件想提交到上一次的commit信息
1.添加test.txt
# git add test.txt
2.修改commit信息;保存:Ctrl + o; 回车 ;退出:Ctrl + x
# git commit --amend
3.重新push到远端服务器
# git push --no-thin origin HEAD:refs/for/master
git commit --amend --no-edit
提交暂存区,编辑器会弹出上一次提交的信息,加入--no-edit标记会修复提交但不修改提交信息。需要的话你可以修改,不然的话就像往常一样保存并关闭文件。
# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...
# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]
HEAD 表示当前版本,也就是最新的提交。上一个版本就是 HEAD^ ,上上一个版本就是 HEAD^^ ,
往上100个版本写100个 “ ^ ” 比较容易数不过来,所以写成 HEAD~100 。HEAD~2 相当于 HEAD^^ 。
Git diff 常见用法
Git diff
用于比较两次修改的差异
1.1 比较工作区与暂存区
git diff 不加参数即默认比较工作区与暂存区
1.2 比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
git diff --cached [<path>...]
1.3 比较工作区与最新本地版本库
git diff HEAD [<path>...] 如果HEAD指向的是master分支,那么HEAD还可以换成master
1.4 比较工作区与指定commit-id的差异
git diff commit-id [<path>...]
1.5 比较暂存区与指定commit-id的差异
git diff --cached [<commit-id>] [<path>...]
1.6 比较两个commit-id之间的差异
git diff [<commit-id>] [<commit-id>]
1.7 使用git diff打补丁
git diff > patch //patch的命名是随意的,不加其他参数时作用是当我们希望将我们本仓库工作区的修改拷贝一份到其他机器上使用,但是修改的文件比较多,拷贝量比较大
,
此时我们可以将修改的代码做成补丁,之后在其他机器上对应目录下使用 git apply patch 将补丁打上即可
git diff --cached > patch //是将我们暂存区与版本库的差异做成补丁
git diff --HEAD > patch //是将工作区与版本库的差异做成补丁
git diff Testfile > patch//将单个文件做成一个单独的补丁
拓展:git apply patch 应用补丁,应用补丁之前我们可以先检验一下补丁能否应用,git apply --check patch 如果没有任何输出,那么表示可以顺利接受这个补丁
另外可以使用git apply --reject patch将能打的补丁先打上,有冲突的会生成.rej文件,此时可以找到这些文件进行手动打补丁
学习无他法,唯有持之以恒
git diff HEAD -- <filename> (“--”前后有空格),可以查看工作区和版本库里面最新版本的区别。
获取最近一次修改的文件
1.git diff --name-only HEAD~ HEAD
2.获取两次commit修改的文件
git diff --name-only <commit-1> <commit-2>
git reset操作的作用域:
git reset通过传入这些标记来修改你的缓存区或工作区:
--soft – 缓存区和工作区都不会被改变
--mixed – 默认选项。缓存区和你指定的提交同步,但工作区不受影响
--hard – 缓存区和工作区都同步到你指定的提交
git checkout 和 git reset 非常像,git checkout它更改的是工作区而不是缓存区。
#将工作目录中的foo.py同步到了倒数第二个提交中的foo.py。
git checkout HEAD~2 foo.py
git checkout HEAD foo.py等同于舍弃foo.py没有缓存的更改。这个行为和git reset HEAD --hard很像,但只影响特定文件。
git reset HEAD foo.py 会将当前的foo.py从缓存区中移除出去,而不会影响工作目录中对foo.py的更改。
git checkout -- file;撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区
git checkout HEAD -- file;(同上)
git reset HEAD -- file;清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文
件同该命令运行之前无任何变化
$ git checkout .
这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.
注意:在使用git checkout 时,如果其对应的文件被修改过,那么该修改会被覆盖掉。
因为切换分支会覆盖当前的本地更改,所以更换分支前git强制你彻底放弃或者提交存储当前的更改。
git reset --soft 退回仓库区的修改 ?
git reset 退回暂存区的修改(也可以通过--hard参数,退回工作区的修改)
git checkout 退回工作区的修改
记忆方法:git checkout有切换分支的作用,在回退版本(commitID)方面,git checkout 都保证工作区都是干净的,所以必须改动工作区。
git reset与git checkout都可以 退回指定文件的修改
git log 查看commit的历史
git show <commit-hash-id>查看某次commit的修改内容
git log -p <filename>查看某个文件的修改历史
git log -p -2查看最近2次的更新内容
1. git log filename
可以看到fileName相关的commit记录
2. git log -p filename
可以显示每次提交的diff
3. 只看某次提交中的某个文件变化,可以直接加上fileName
git show commit-id filename
git log 有 --stat 可以显示修改了哪些文件,-p 可以看到修改内容
git log -p 按补丁格式显示每个更新之间的差异。
git log --stat 显示每次更新了哪些文件。
git log 与git show的区别
git log 查看的是 历史提交的变化
git show 查看的是某次提交的变化
git show --only-name
git show [commit]
git show
git diff [filename]
git diff --cached [filename]
git diff HEAD [filename]
git reset --mixed HEAD~1 && git reset HEAD filename
git reset --hard HEAD
git reset --soft HEAD
git revert HEAD~2
git merge kinglong
git branch -d kinglong
git diff --name-only <commitID1> <commitID2>
git diff --name-only HEAD
git show --name-only <commitID>
git show <commitID>
git log --stat
git log -p filename
git log -S “power”
git log -p -2
git commit file1 file2 -m "change power"
git commit -m “”
git看一个历史版本的某个文件
git show HEAD~4: ./index.html 或
git show HEAD~5: ./index.html > temp.html
得到某个历史版本的某个文件夹
git ?
3. 拉,推
git pull 17MOX 远程分支名:本地分支名
git push 17MOX 本地分支名:远程分支名
git push origin master:master
git init新建仓库并上传到远端
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/Xanthuim/nodejs_express_sample.git
git push -u origin master
git push origin serverfix //将本地的 serverfix 分支推送到远程仓库上的 serverfix 分支。
git push origin serverfix:awesomebranch //将本地的 serverfix 分支推送到远程仓库上的 awesomebranch 分支。
Git恢复之前版本的两种方法reset、revert:
1. git reset --hard commit_id:
如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧
所以我们要用“git push -f”强制推上去,就可以了.
使用git log 查看,那么之前的版本提交记录都会没有了。
2. git revert -n commit_id:
并使用“git commit -m ""
如果我们想恢复之前的某一版本(该版本不是merge类型),但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
git push 推上远程库。
用“git log”查看本地的版本信息,可见多生成了一个新的版本
git 还原文件到某个版本
git checkout d98a0f565804ba639ba46d6e4295d4f787ff2949 src/main/main.c
git commit -m "revert to previous version"
git log --author yuzp 仅显示指定作者相关的提交。
git log --name-only 仅在提交信息后显示已修改的文件清单
git log --name-status 显示新增、修改、删除的文件清单。
git log -p -2 以打包的形式来显示最近2次的提交记录,相当于多次使用git show [commit_id]的结果。
git log --oneline 以一行的形式来显示不同版本的提交记录
git diff –cached 查看已经暂存起来的文件和上次提交的版本之间的差异
git diff –cached filename 查看已经暂存起来的某个文件和上次提交的版本之间的差异
git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9 b8e7b00c02b95b320f14b625663fdecf2d63e74c 查看某两个版本之间的差异
git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9 b8e7b00c02b95b320f14b625663fdecf2d63e74c --name-only 查看某两个版本之间的差异,只显示文件名
git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename b8e7b00c02b95b320f14b625663fdecf2d63e74c:filename 查看某两个版本的某个文件之间的差异
git pull <远程主机名> <远程分支名>:<本地分支名>
比如,要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样 -
$ git pull origin next:master
git show commit_id --name-only 查看某次提交了哪些文件