0.config:配置邮箱地址和用户名
git config --global user.name 'wzl'
git config --global user.email wangzhaoli@wondersoft.cn
1.init:创建新的仓库
git init 在当前目录创建一个新的仓库
git init repositoryName 在当前目录创建一个名字为repositoryName的仓库
git init ./a/repositoryName 在指定目录创建一个名字为repositoryName的仓库
2.clone:复制(克隆)已有的仓库
git clone repositoryUrl 复制指定URL为repositoryUrl的仓库到当前目录,仓库名称按原来命名
git clone repositoryUrl repositoryNameNew 复制指定URL为repositoryUrl的仓库到当前目录,命名为repositoryNameNew
git clone repositoryUrl ./a/repositoryNameNew 复制指定URL为repositoryUrl的仓库到指定目录,命名为repositoryNameNew
3.add:将该文件添加到缓存(注意:add不仅仅是新文件的增加,而是所有文件都可以添至缓存)
commit:提交
git add . 添加当前目录的所有文件至仓库
git add *.java 添加当前目录的所有Java文件至仓库
git add login_main.xml 添加指定文件至仓库
git commit -m "添加XX功能的代码和布局文件" 提交以上信息
4.status:查看当前仓库的状态
git status -s 查看当前仓库的状态
(add-A-添加,deletion-D-删除,modify-M-修改,??(指仓库中没有的文件),
add modify-AM-添加至缓存后有修改的文件)
(注:add到缓存的文件,modify后会称为AM,此时需要先add在commit哦)
git status 查看当前仓库的状态--详细版
5.diff:
git diff 查看执行git status的结果的详细信息
(即:git status显示上次提交更新后的更改或者写入缓存的改动,而git diff一行一行地显示这些改动具体是啥。)
确切的说,git diff是显示已经缓存和未缓存文件的更改
git diff 只查看已经缓存的文件的更改,即AM状态的文件
git diff HEAD 我觉得和git diff是一样的呢
git diff --stat 显示摘要而非整个 diff
6.commit
git commit -m "提交说明" 提交已缓存的文件(A/AM/AD)
git commit -am "提交说明" 提交所有改动文件(A/AM/D/DM/M)
(说明:?状态的文件diff、status、commit等命令都不理睬的哦)
7.reset HEAD 用来撤销add的
git reset HEAD --a.java 取消a.java文件的缓存状态
git reset HEAD . 取消当前目录下所有的缓存状态
8.rm
git rm a.java 将文件从缓存区和硬盘中(工作目录)删除
git rm --cached b.java 将文件从缓存区删除,但是保留在硬盘中(工作目录)删除
9.mv:相当于git rm --cached
Git分支管理,可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
10.branch:创建分支
git branch 查看当前的所有分支,init一个仓库后只有一个分支称为master,默认就是在这个分支工作的
git branch a 创建一个名为a的新分支
git branch -d a 删除名为a的分支
11.checkout:切换分支
git checkout a 切换到名为a的分支
git checkout master 切回到master分支
git checkout -b b 创建一个名为b的新分支并切换到该分支
12.merge: 合并分支
git merge a 合并a分支的代码,冲突UU需要手动修改,修改后的文件可以通过git add 告诉Git冲突已经解决。
13.log:
git log 查看历史提交记录
git log --oneline 查看历史提交记录的简要信息
git log --graph --oneline 查看带有分支合并的历史提交记录
git log --reverse 逆向显示
git log --oneline -2 显示结果中的两条
git log --author=wzl 查看wzl的历史提交记录
git log --no-merges 隐藏可并提交的信息
git log --before={3.weeks.ago} --after={2010-04-18} 查看三周以前2010.04.18以后的提交记录
关于时间的还有:--since 和 --before,也可以用 --until 和 --after
git log --decorate 显示标签
14.tag:标签,可以给重要的快照打上标签(版本)
git tag -a V1.0 给当前快照打标签为V1.0
git tag -a v0.9 85fc7e7 给指定的快照补打标签V0.9
git tag 查看所有标签
git tag -a V1.3 -m "发布啦" 打标签同时添加描述信息,不用再跳转VIM编辑了
15.远程仓库,例如GitHub
(1)由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:
使用以下命令生成SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
验证是否成功:
ssh -T git@github.com
(2)添加远程仓库
进入到本地要添加的仓库执行:
git remote add origin git@github.com:wzl1992/repositoryOne.git 将本地仓库添加至远程仓库,给远程仓库其别名为origin
git push -u origin master 将本地仓库的master分支推送到远程仓库
(注:commit是提交至本地仓库Head,而push是将本地仓库的HEAD提交至远程仓库)
git remote 查看远程仓库
git remote -v 查看远程仓库的详细信息,每个别名的实际链接地址
git fetch + git merge = git pull 从远端仓库提取数据并尝试合并到当前分支
git fetch origin
git merge origin/master
git remote rm origin 删除别名为origin的远程仓库
16.其他
gitk 内建的图形化git
git config color.ui true 彩色的 git 输出
git config format.pretty oneline 显示历史记录时,每个提交的信息只显示一行
git add -i 交互式添加文件到暂存区
网友评论