总结下git的使用方法。
安装Git
这里推荐使用git或msysGit这个工具,下载后安装就可以了。
Git 常用指令
初始化仓库
1git init添加文件
1git add提交
12git commit -m 'message'git commit -a -m 'message' // 只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
克隆现有的仓库
1git clone查看文件状态
1git status打开文件
1cat .gitignore工作目录文件对比暂存区域快照
12git diffgit diff --staged // 查看已暂存的将要添加到下次提交里的内容移除文件
123git rmgit rm -f // 强制删除选项,这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复git rm --cached // 你想让文件保留在磁盘,但是并不想让 Git 继续跟踪移动文件
1git mv file_from file_to // renamed: file_from -> file_to查看提交历史
1git log
-重新提交1git commit --amend // 最终你只会有一个提交,第二次提交将代替第一次提交的结果。
取消暂存的文件
1git reset撤消对文件的修改
1git checkout -- [file] //撤消修改,将它还原成上次提交时的样子查看远程仓库
1git remote添加远程仓库
1git remote add <shortname> <url> // 添加一个新的远程 Git 仓库从远程仓库中抓取与拉取
12git fetch [remote-name] // git fetch 命令会将数据拉取到你的本地仓库,它并不会自动合并或修改你当前的工作git pull [remote-name] // git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支推送到远程仓库
1git push origin master远程仓库的移除与重命名
12git remote rename pb paul // 将 pb 重命名为 paulgit remote rm paul // 移除paul标签
1234567git tag //列出标签git tag -a v1.4 -m 'my version 1.4' // 创建一个附注标签git show v1.4 // git show 命令可以看到标签信息与对应的提交信息git tag -a v1.2 9fceb02 // 假设在 v1.2 时你忘记给项目打标签,你可以在之后补上标签。 要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和)git push origin v1.5 // 默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上git push origin --tags // 把所有不在远程仓库服务器上的标签全部传送到那里git checkout -b version2 v2.0.0 // 如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname] 在特定的标签上创建一个新分支分支创建
1git branch分支切换
12git checkout // 分支切换git checkout -b // 新建一个分支并同时切换分支合并
1git merge删除分支
1git branch -d // 前没有 * 号的分支通常可以使用 git branch -d 删除掉使用图形化工具来解决冲突
1git mergetool删除远程分支
1git push origin --delete变基
123git checkout experimentgit rebase master //使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上git rebase --onto master server client // 取出 client 分支,找出处于 client 分支和 server 分支的共同祖先之后的修改,然后把它们在 master 分支上重演一遍
奇妙的变基也并非完美无缺,要用它得遵守一条准则:不要对在你的仓库外有副本的分支执行变基。
变基操作的实质是丢弃一些现有的提交,然后相应地新建一些内容一样但实际上不同的提交。 如果你已经将提交推送至某个仓库,而其他人也已经从该仓库拉取提交并进行了后续工作,此时,如果你用 git rebase 命令重新整理了提交并再次推送,你的同伴因此将不得不再次将他们手头的工作与你的提交进行整合,如果接下来你还要拉取并整合他们修改过的提交,事情就会变得一团糟。