学习了廖雪峰的Git教程,总结如下:(http://www.liaoxuefeng.com/)
一、Git( version 2.6.1.windows.1)
Linus花了两周时间用c写的一个分布式版本控制系统。
文件存在的三种状态:untracked:文件被新建后的状态
not stage :新建文件被加入(Add)Stage(Index)即暂存区后或者已加入的文件有改动
commited:文件被提交进当前仓库(Repository)的分支后
(查看命令有git log与git status,帮助命令git help Git的关键字,eg.git help log)
二、创建本地仓库与提交文件的命令
git init(初始化当前目录为Git工作区Working Directory)(同时生成了.git目录)
git add 文件名(添加文件进Index)(添加,改动都要做的操作)
git commit -m "注释内容"(提交到本地仓库)(此时会自动创建分支master)
三、文件的修改命令
git diff 文件名(与本地仓库中的文件比较,只当文件在not stage状态时有效)
git checkout 文件名(撤消文件修改)(当存在与文件名相同的Branch时,执行git checkout -- 文件名)
git reset HEAD 文件名(文件Add入Index区后的撤消)(git reset效果等效)
git reset commit码或者git reset --hard HEAD~数字(消除最近数字个提交)(git reflog或者git log --pretty=oneline --abbrev-commit查询)(文件commit入本地仓库后的撤消)
四、文件的删除命令
rm 文件名,git status
git rm 文件名
git commit -m(删除文件需要提交)
五、仓库相关命令
ssh-keygen -t rsa -C "Email地址"(生成公钥和私钥)
git clone 远程仓库地址(在本地初始化远程仓库)
git remote add origin 远程仓库地址(将本地仓库关联远程仓库)
git checkout -b 仓库分支(建立分支,等效于git branch 仓库分支 + git checkout 仓库分支)
git branch(查看分支列表)(clone和remote add origin后会自动生成,而init时只有在第一次提交后生成)
git checkout 仓库分支(切换到分支,master也是一个分支)
六、冲突命令
git merge 另一个分支(当当前分支与另一个分支没有冲突文件时,会fast-forward模式合并,当有冲突文件时,打开提示冲突的文件,解决冲突后重新add 和 commit)
git log --graph --pretty=oneline --abbrev-commit(查看分支合并的结构图)
git merge --no-ff -m "注释内容" 另一个分支(当当前分支与另一个分支没有冲突文件时,以fas-forward模式合并后,查看分支合并的结构图,并没有分支的合并记录,这时就要用该命令)
git stash(当前分支改动只是add入Index中而没有提交,需切换为其他分支时,真接切换后在新的分支改动的文件会影响或覆盖之前分支的对应文件,所以需要储存当前的Index)
git stash list(查看当前分支存储的Index)
git stash apply(恢复当前分支存储的第一个Index,git stash apply stash@{数字}恢复任意Index)
git stash drop(删除前分支存储的第一个Index)
git stash pop(恢复时把Index也删了)
git branch -d 仓库分支(当未合并时,不能删除,需要执行git branch -D 仓库分支)
七、多人协作命令
git checkout -b 仓库分支(创建了一个新的分支)
git push origin 仓库分支(创建了远程仓库分支)
git checkout -b dev origin/仓库分支(直接创建关联远程分支的本地分支)
git pull(失败,执行git branch --set-upstream-to=origin/仓库分支 当前分支后,与新创建的远程分支建立关联)(将远程仓库文件同步到本地,如果产生冲突,参照六冲突)
git add XXX,git commit XXX,git push origin XXX
八、标签命令
git tag(查看当前分支的所有标签)
git tag 标签名(创建标签)
git tag 标签名 Commit码(根据Commit码创建标签)
git tag -a 标签名 -m "标签说明" Commit码(创建带有说明的标签)
git tag -s 标签名(为标签建立PGP签名)
git show 标签名(查看标签信息)
git tag -d 标签名(删除标签名)
git push origin 标签名(推送一个标签到远程仓库)
git push origin --tags (推送所有标签到远程仓库)
删除远程标签(git tag -d 标签名,git push origin :refs/tags/标签名)
九、别名
git config --global alias.别名 需要替换的内容
也可以在配置.gitconfig里添加:
[alias]
co = checkout
ci = commit
status = st
十、其他
Git 文档,运行git help 任意关键字,会打开本地的文档