git状态图
1.配置用户和邮件(通过提交查找作者信息)
git config --global user.email zzz@qq.com
git config --global user.name xxx
不加global参数只对该仓库有效,如
git config user.email zzz@qq.com
git config user.name xxx
2.建一个git工程
git init
3.添加文件到暂存区
git add filename(对于从没有add过的文件,该命令相当于将该文件添加到版本库)
git add --all +路径 添加当前路径下的全部文件,包括已删除文件(如git add --all .)
4.提交暂存区的修改到版本库
git commit -m "commit content"
5.查看某个提交id的内容
git show commitid 看提交的内容
git show commitid --name-status看提交的文件
6.查看git提交历史
git log
git log -10 只看后面的10个提交
git log --oneline 历史简短输出
git log --name-status 查看修改的文件
7.查看仓库状态
git status
8.更新远程分支并合并到本地分支
git pull <远程主机名> <远程分支名>:<本地分支名>
如git pull origin xxxx:xxxxxxx
9.推送本地分支到远程分支
git push <远程主机名> <本地分支名>:<远程分支名>
如git push origin xxxxx:xxxxxxxxx
10.剪切 某个 提交
git cherry-pick +commitid,就是将某个提交剪切到当前分支上。
如果要剪切多个提交,可使用
git cherry-pick id1..id2(不包括id1)
git cherry-pick id1^..id2(包括id1)
11.git checkout
用法1 切换到一个已经存在的本地分支
git checkout xxxxx
用法2 创建一个本地分支,并切换到该分支
git chekcout -b xxxxx
用法3 创建一个本地分支(该分支跟远程分支xxxxxx一样),,并切换到该分支
g it checkout -b xxxx remote/xxxxxx
用法4 将暂存区文件放回工作区
git checkout -- filename
用法5将某个文件恢复到commit_id的状态,如
git checkout commit_id path/file_name
12.撤销某个提交
git revert commit_id
13.清除未加入git版本库的文件
git clean -d -df,一切垃圾都一扫而空,但需要小心,没有记录的话,git也是恢复不了这些文件的。
14.补丁
生成补丁 git format-patch commit_id commitid之后的提交按格式输出补丁(不包括commitid)
应用补丁 git am xxx.patch
假设生成了补丁xxx.patch,但由于冲突无法应用该补丁,可以对1.path进行文本编辑(删除冲突部分),冲突部分再手工合入
15.查看所有提交记录
git reflog
16.忽略某些不需要跟踪的文件
用法可见http://www.pfeng.org/archives/840
具体可参考内核源码的下的.gitignore文件
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/.gitignore?id=refs/tags/v4.5
17.git远程地址操作
git remote -v 查看远程地址
git remote add 标签 地址,git remote add qcom xxx@192.168.8.8:gitweb
可使用这种方式,将另一个git仓库关联过来,使用git cherry-pick来打补丁。也就是两个独立的git仓库,通过git remote ,
git fetch,两个仓库进行了关联,可以剪切相应的提交。
18.图形化工具
在Ubuntu上安装gitk的方法为
sudo apt-get install gitk
sudo apt-get install meld
19.git官网
http://git-scm.com/
20.git的嵌套
参考https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97
21.git冲突解决
both modified 当前分支和补丁都有修改
deleted by us:当前该文件已被删除,但补丁有该文件的修改,因为文件被删,该补丁无法正常合入
deleted by them:当前分支该文件有修改,但补丁中删除了该文件,git不知要不要保留该文件的修改
git checkout xxxxx --ours 拿当前分支的文件
git checkout xxxxx --theirs 拿剪切或者其他分支的文件
22.配置别名
git config --global alias.st status
git config --global alias.ch checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline"
23.更新仓库
git fetch //更新本地仓库(从远程仓库)
git fetch -p //更新本地仓库(从远程仓库,远程仓库删除分支本地同步删除)