Git

Git使用

git的基本使用

Posted by jorce on July 10, 2017

git clone

  • git clone url 拷贝一个 git 仓库到本地

git pull

  • git pull 获取远程分支并合并到当前分支

git push

  • git push 将本地仓库代码推到远程仓库

  • git push remoteName branchName 将本地仓库代码推到 remoteName 远程仓库中的 branchName 分支

  • git push --set-upstream remoteName branchName 在 remoteName 远程仓库创建 branchName 分支,并将当前仓库当前分支的代码推到新建的分支中

  • git push remoteName -d branchName 删除 remoteName 远程仓库中的 branchName 分支

git branch

  • git branch 显示本地分支

  • git branch -a 显示所有分支,包括本地分支和远程分支

  • git branch -d branchName 删除 branchName 分支

  • git branch -D branchName 强制删除 branchName 分支

git remote

  • git remote 查看已经配置的远程仓库服务器

  • git remote -v 显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL

  • git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个别名

  • git remote show remoteName 查看 remoteName 远程仓库的详细信息

git checkout

  • git checkout branchName 切换到 branchName 分支

  • git checkout -b branchName 从当前分支创建新分支 branchName,并切换到该分支

  • git checkout -b [branch] [remotename]/[branch] 创建本地分支跟踪远程分支

git add

  • git add filePath 添加指定文件到缓存区

  • git add . 将所有改动添加到缓存区

git commit

  • git commit -m"commit message" 将暂存区代码添加本地到仓库中

  • git commit -am"commit message" git add 和 git commit 的合成命令,将工作区所有文件的更改添加到缓存区同时提交到仓库

git merge

  • git merge branchName 合并 branchName 分支到当前分支

git status

  • git status 查看上次提交之后是否有修改

  • git status -s 查看简短的输出结果

git log

  • git log 显示提交日志

  • git log -p 显示提交日志以及每次提交所对应的代码变动

  • git log -n 显示 n 个 commit 的日志

  • git log --pretty=format:'%h %s' --graph 图示提交日志

git reset

  • git add 相对的,git reset 可以将添加到暂存区的文件还原到工作区:

    • git reset filePath 还原指定文件

    • git reset . 还原所有文件

  • git reset 还有回退版本的功能:

    • git reset --hard HEAD^ 将当前版本回退到上一个版本

      HEAD 代表当前版本,HEAD^ 代表上一个版本,托字符 ^ 可以用来表示回溯版本的个数,写几个就回溯几个版本。但如果我们要回溯80个版本,git 也不会让我们就真的傻乎乎的写80个 ^,这时可以这么写 HEAD~80

    • git reset --hard commitId 还可以回退到指定版本:

      其中 commitId 可以不用写全,写前几位就好,git 会帮我们自动去找。但也不能只写两三位,如果匹配到多个 commitId 的话 git 就不知道我们要回退到哪一个了。

git rebase

  • git rebase branchName 将当前分支变基到 branchName 分支

    更多内容可查看 Rebase 代替合并

git fetch

  • git fetch 获取所有远程分支(不自动合并)

git tag

  • git tag 查看所有的标签

  • git tag newName 创建一个轻量级的标签

  • git tag -a newName -m"annotate" 创建一个带注释的标签

  • git tag -d tagName 删除某个标签

  • git checkout tagName 切换到某个标签

  • git tag -l 查看所有标签

  • git show tagName 查看该标签的信息

    tag 指向的是一次 commit,show tagName 命令展示出来的 diff 也是该次 commit 的

  • git push --tags 将本地的标签推到远程

    默认情况下,git push不会将标签上传到远程服务器,为了共享这些标签,须在git push后加 --tags 选项

git stash

  • git stash 将工作区和暂存区的代码临时储存起来,每 stash 一次就在储存栈的顶部新增一个储存项

  • git stash list 查看当前储存栈

  • git stash pop 恢复储存栈顶部的储存项,同时将其从储存栈中移除

  • git stash show / git stash show stashName 查看顶部或指定储存项的简要 diff 信息,增加参数 -p 可以查看详细 diff 信息

  • git stash drop / git stash drop stashName 删除储存栈顶部或指定的储存项,可以使用 git stash list 查看 stashName

  • git stash clear 清除储存栈中所有储存项

  • git stash apply / git stash apply stashName 恢复顶部或目标储存项,但不从储存栈中删除它

git config

  • git config user.name 查看本地用户名

  • git config user.email 查看本地用户邮箱地址

  • git config --global user.name "username" 修改本地用户名

  • git config --global user.email "email-address" 修改本地用户邮箱地址

如果发现将某些文件加入 gitignore 的忽略规则之后未生效,原因可能是:.gitignore 只能忽略那些原来没有被 track 的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 文件是无效的,解决方法就是把本地缓存删除(改变成未 track 状态),然后再提交:

1
2
3
git rm -r --cached .
git add .
git commit -m "update .gitignore"