git 常用命令:
- git stat
- git command
- git whatchanged
- git show
- git checkout
- git reset
- git commit
- git diff/apply
- git clean
- git branch
- git log
- git cherry-pick
- git rebase
- git merge
查看改动文件 git status
未add
1 | [ligang@yfslcentos71 hgdb-9-15]$ git status |
修改最后一次提交作者信息
修改最后一次提交
1 | git commit --amend --author="ligang <ligang@highgo.com>" |
连续几次
1 | git rebase -i HEAD~3 |
将pick修改为edit1
2
3
4
5Stopped at 230fe3404df2790712209e8797923d6af47a42c7... add content
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
此时,用户首先要使用git commit –amend -author修改该提交的作者信息,接着执行git rebase –continue继续修改下一个提交:1
2$ git commit --amend --author="Dennis <dennis@top500corp.com>" --no-edit
$ git rebase --continue
依次修改即可
git whatchanged –stat 每次修改的文件列表, 及文件修改的统计 已经add
1 | [ligang@yfslcentos71 hgdb-9-15]$ git whatchanged --stat |
查看Commit改动 git show
1 | [ligang@yfslcentos71 hgdb-9-15]$ git show src/backend/utils/adt/oracle_compatibility/hgdbfuncs_oracle.c |
放弃本地所有修改 git checkout .
未使用 git add
1 | git checkout -- filename ## -- 指定当前版本, 可以指定commit id; |
放弃已经缓存的修改 git reset
使用 git add .
1 | 可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存, |
撤销提交的Commit
1 | git reset --options HEAD~n |
–mixed
不删除工作空间改动代码,撤销commit,并且撤销git add .
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard
删除工作空间改动代码,撤销commit,撤销git add .
推回 commit 状态 已经使用add .
1 | git reset --hard HEAD |
将commit id 作为分支:
1 | git checkout -b ligang-read commit`id |
文件diff
1 | git diff ## 可以对比分支; |
对比不同commit的文件
1 | git diff hash1 hash2 filename |
清除未识别 - 恢复原始
1 | git checkout . |
重命名分支:
1 | git branch -m oldName newName |
删除远程分支
1 | git push --delete origin oldName |
把修改后的本地分支 与 远程分支关联
1 | git branch --set-upstream-to origin/newName |
查看文件所有提交历史 git log -p
1 | git log -p fileName |
追踪函数在git历史中的变化;
1 | git log -L :checksum_bctlist:src/backend/postmaster/bct.c |
合并commit id:
1 | git rebase -i <startpointer> <endpointer> |
1 | git rebase -i HEAD~n ##n 代表要合并的commit数目; |
可以只写startpointer ; 在编辑合并界面, 进行pick sque 操作;
合并某个分支上的单个commit
dd2e86 - 946992 -9143a9 - a6fd86 - 5a6057 [master]
\
76cada - 62ecb3 - b886a0 [feature]
feature 分支上的commit 62ecb3 非常重要,它含有一个bug的修改,或其他人想访问的内容。无论什么原因,你现在只需要将62ecb3 合并到master,而不合并feature上的其他commits,所以我们用git cherry-pick命令来做:
1 | git checkout master |
现在62ecb3 就被合并到master分支,并在master中添加了commit(作为一个新的commit).
合并某个分支的一系列commit;
合并单个commit可能并不满足, 需要合并一些列相连的commits; 这种情况需要使用rebase.
dd2e86 - 946992 -9143a9 - a6fd86 - 5a6057 [master]
\
76cada - 62ecb3 - b886a0 [feature]
首先需要基于feature创建一个新的分支,并指明新分支的最后一个commit:
1 | git checkout -b newbranch 62ecb3 |
然后,rebase将这个新的分支commit合并到master( –onto masdter). 76cada^ 指明你想从哪个特定的commit开始。
1 | git rebase --onto master 76cada^ |
得到结果, 就是feature分支的commit 76cada ~62ecb3 都被合并到了master分支。
Merge 合并分支
git merge
命令用于合并指定分支到当前分支。 合并后,在查看readme.txt的内容;