Git-基础

常用命令

参考 Git远程操作详解Git教程

which -a git # 查看所有版本的 git
git –version # 查看使用 git 的版本
git xxx –help # 查看 xxx 命令相关的帮助文档
git config –global alias.别名 命令 # 给命令起别名
git log –oneline –decorate –graph –all # 查看提交记录

拉取和提交操作

git clone url [name] – 从远程主机克隆一个版本库
git clone -b url – 拉取指定分支
git pull – 拉取远程仓库,默认为远程origin master分支
git pull origin [remoteBranchName] [localBranchName] – 拉取远程仓库remoteName分支到本地localBranchName分支
git fetch origin remoteBranchName – 从远程分支更新最新的版本到origin/remoteBranchName分支上,没有更新到工作区,默认情况下取回所有分支的更新
git merge origin/localBranchName – 合并内容到本地localBranchName分支,更新到工作区
git diff master origin/master – 比较本地的master分支和origin/master分支的差别
git status – 列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交( commit)的文件
git add fillname – 把文件添加到仓库,新添加的文件必须add后提交才生效
git rm fillname – 把文件从仓库删除,被删除的文件必须rm后提交才生效
git commit -m “description” – 把文件提交到本地仓库
git push origin [name] – 把所有本地提交推送到远程库name分支,默认为master分支

临时备份

git stash – 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致,同时将当前的工作区内容保存到Git栈中
git stash pop stash@{id} – 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容,由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复,将对应的stash id 从stash list里删除
git stash apply stash@{id} – 与stash pop的区别是会继续保存stash id
git stash list – 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
git stash clear – 清空Git栈
git stash show stash@{0} – 查看压入Git栈的版本为0的文件列表
git stash drop – 如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash

忽略文件不提交

在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如:

1
2
*.log
node_modules/

恢复操作

git reset – 将当前的分支重设(reset)到指定的commit或者HEAD(默认,即最新的一次提交),可有–hard 或 –soft 参数
git revert filename – 恢复指定文件
git rebase localBranchName – 用于把localBranchName分支的修改合并到当前分支,该命令会把当前分支里的每个提交(commit)取消掉,然后把当前分支更新为最新的localBranchName分支

分支操作

git branch – 查看本地分支
git branch -r – 查看远程分支
git branch [name] – 创建本地分支
git checkout [name] – 切换分支
git checkout -b [name] [commit 引用] – 基于指定的 commit 新建并切换到该分支
git branch -d [name] – 删除分支,-d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的,如果想强制删除一个分支,可以使用-D选项
git merge [name] – 将指定分支合并到当前分支
git push origin [name] – 本地分支push到远程同名分支,远程没有该分支则创建
git push origin :heads/[name] – 删除远程分支
git push origin :master – 删除远程分支
git push origin –delete master – 删除远程分支
git push origin [remoteBranchName] [localBranchName] – 提交本地local分支作为远程的remote分支,如果没有则创建
git push –force origin – 如果远程主机的版本比本地版本更新,可以使用–force选项,结果导致远程主机上更新的版本被覆盖
git branch –set-upstream dev origin/dev – 指定本地dev分支与远程origin/dev分支的链接

版本操作

git tag – 查看版本
git tag [localTagName] – 创建版本
git push origin –tags – 把本地tag推送到远程
git fetch origin tag – 获取远程tag
git tag -d [localTagName] – 删除本地tag
git push origin :refs/tags/[remoteTagName] – 删除远程tag
git checkout tagName – 切换到指定版本

fork的项目与原项目同步

fork一个项目并clone到本地,如果原项目已经更新了,要保持github上fork的项目和本地的项目与原项目同步,只需执行以下操作。

1
2
3
4
5
6
7
8
# 远程拉取更新项目,先将原包作为 remote 加到本地项目中,A_REPOSITORY_URL需替换
git remote add upstream A_REPOSITORY_URL
# 从上游仓库获取到分支
git fetch upstream
# 合并到本地当前分支
git merge upstream/master
# 提交到自己的 fork
git push origin master

初始化项目

1
2
3
4
5
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/zhulichao/react-native-hello.git
git push -u origin master