1. 代码仓库及工作区:
- 工作区 working directory
- 暂存区 staging area
- 仓库区 repository
查看远程仓库
git remote -v
添加远程仓库
git remote add <repo_name> <git_url>
删除远程仓库
git remote rm <repo_name>
重命名远程仓库
git remote rename <old_repo_name> <new_repo_name>
2. 代码从拉到推过程
git fetch origin <branch>
git merge <branch>
git add xxx
git commit -m "xxx"
git push origin <branch>
3. 替换本地改动
撤销工作区修改
git checkout -- <filepath>
撤销暂存区修改
git reset HEAD <filepath>
用远程仓库中的代码覆盖本地代码
git fetch origin <branchname>
整个工作区用远程仓库的代码分支代替
git reset --hard origin/<branchname>
git reset --hard HEAD
单个文件用远程文件代替
git checkout origin/master -- platform/src/utiltp/CmTraceFromT120.cpp
git checkout HEAD -- src/evt/CXmlDSEvent.cpp
4. 创建切换删除分支
-
创建分支
git checkout -b <branchname>
-
切换分支
git checkout <branchname>
-
删除分支
git branch -d <branchname>
删除远程分支:
git push origin --delete <branchname>
or git push origin :<branchname>
清空本地分支:
git remote prune origin
-
查看分支
git branch -a
-
重命名分支
git branch -m <old_branch_name> <new_branch_name>
git push origin <new_branch_name>
5. 查看历史
显示最近5次的提交的概要历史记录
git log --graph --stat --oneline -5
显示最近3次的提交的详细历史记录
git log -p -3
6. 比较区别
1) 比较工作区和暂存区 git diff
2) 比较暂存区和仓库区 git diff --cached
3) 比较工作区和仓库区 git diff HEAD
git diff ref1:path/to/file1 ref2:path/to/file2
一般来说, ref1 and ref2 可以是分支名, 也可是仓库名/分支名, 或者 commit 哈希
6.1 比较远程文件与本地文件
git diff remotename/branchname:remote/path/file1.txt local/path/file1.txt
6.2 比较两个分支中的文件
git diff HEAD:local/path/file1.txt remotename/branchname:remote/path/file1.txt
7. 管理标签
7.1 显示标签
git tag
7.2 添加标签
git tag -a <tagname> -m <comments>
7.3 推送标签
git push --tags
7.4 获取远程标签
git fetch origin tag <tagname>
7.5 删除标签
git tag -d <tagname>
git push origin :refs/tags/<tagname>
git push origin --delete tag <tagname>
8. 子模块
添加子模块
git submodule addhttps://chromium.googlesource.com/v8/v8.git
初始化子模块
git submodule init
修改子模块
git submodule update
9. 回退
git log -10
git reset xxx
git push origin <branchname> --force
10. 冲突解决
git stash
git stash pop