创建版本库
$ git clone <url> #克隆远程版本库
$ git init #初始化本地版本库
分支与标签
$ git branch #显示所有本地分支
$ git branch -a #显示全部分支,即本地分支和远程分支
$ git checkout -b <branch> #创建新的分支,并切换到新的分支
$ git checkout <branch/tag> #切换到指定分支或标签
$ git branch <new-branch> #创建新分支
$ git branch -d <branch> #删除本地分支
$ git tag #列出所有本地标签
$ git tag <tagname> #基于最新提交创建标签
$ git tag -d <tagname> #删除标签
修改和提交
$ git status #查看状态
$ git diff #查看变更内容
$ git add . #跟踪所有改动过的文件
$ git add <file> #跟踪指定的文件
$ git mv <old><file> #文件改名
$ git rm <file> #删除文件
$ git rm --cached <file> #停止跟踪文件但不删除
$ git commit -m "commit message" #提交所有更新过的文件
$ git commit --amend #修改最后一次提交
合并与衍生
$ git merge <branch> #合并指定分支到当前分支
$git rebase <branch> #衍合指定分支到当前分支
查看提交历史
$ git log #查看提交历史
$ git log -p <file> #查看指定文件的提交历史
$ git blame <file> #以列表方式查看指定文件的提交历史
撤消
$git reset --hard 版本号(就是git log 中的 commit后面的哈希值) #本地回退到某个历史版本
$ git reset --hard HEAD #撤消工作目录中所有未提交文件的修改内容
$ git checkout HEAD <file> #撤消指定的未提交文件的修改内容
$ git revert <commit> #撤消指定的提交
远程操作
$ git remote -v #查看远程版本库信息
$ git remote show <remote> #查看指定远程版本库信息
$ git remote add <remote> <url> #添加远程版本库
$ git fetch <remote> #从远程库获取代码
$ git fetch -p #在fetch之后删除掉没有与远程分支对应的本地分支
$ git pull <remote><branch> #下载代码及快速合并
$ git push <remote><branch> #上传代码及快速合并
$ git push <remote> :<branch/tag-name> #删除远程分支或标签(推送空内容到远程分支)
[
在Git v1.7.0 之后,可以使用这种语法删除远程分支:
$ git push origin --delete <branchName>
删除tag这么用:
git push origin --delete tag <tagname>
]
$ git push --tags #上传所有标签
note:
git提交 push到github时,每次都要输入用户名和密码的问题 每次push 的时候,都要输入用户名和密码,非常麻烦。原因是使用了https方式 push 在termail里边。
输入 git remote -v 可以看到形如一下的返回结果
origin https://github.com/xciceboy/demo.git (fetch)
origin https://github.com/xciceboy/demo.git (push)
下面把它换成ssh方式的。
1. git remote rm origin
2. git remote add origin git@github.com:<span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">xciceboy</span>/demo.git
3. git push origin