Git 常用指令(保持更新中)
初始化gitgit init添加远程仓库git remote add origin https://git remote -v (查看远程连接)创建分支git branch 分支名git branch -v 查看各个分支最后一个提交信息删除分支git branch -d 分支名 (删除本地分支)git push origin --delete 分支名 (删除远程分支)切换到分支git checko
初始化git
git init
添加远程仓库
git remote add origin https://
git remote -v (查看远程连接)
git remote set-url origin 你新的远程仓库地址(修改远程仓库地址)
查看用户名和密码
查看用户名 :git config user.name
查看密码: git config user.password
查看邮箱:git config user.email
查看配置信息: git config --list
修改用户名和密码
修改用户名:git config --global user.name "要修改的用户名"
修改邮箱:git config --global user.email "要修改的邮箱"
修改密码:git config --global user.password "要修改的密码"
克隆远程仓库
git clone http:// (克隆远程仓库)
git clone -b 分支名 仓库地址 (克隆指定分支)
git clone --recursive -b 分支名 仓库地址 (克隆指定分支)
创建分支
git branch 分支名 (创建分支)
git branch 新分支名 旧节点名 (已旧节点为基础,创建一个新的分支)
git branch -v (查看各个分支最后一个提交信息)
git branch -rv (查看远程分支)
git branch -a (查看所有分支)
git push --set-upstream origin + 分支名 (远程创建分支)
删除分支
git branch -d 分支名 (删除分支)
git push origin --delete 分支名 (删除远程分支)
切换到分支
git checkout 分支名
git checkout . (放弃当前本地所有已经修改的内容(未add))
git checkout -- 文件名 (放弃当前本地特定文件已经修改的内容(未add))
git checkout -b 分支名 (创建分支并切换到该分支)
git checkout -b 新分支名 远程分支名(已远程分支为基础,创建本地分支)
查看当前状态
git status
查看提交记录
git log
git log 远程分支名 (查看远程分支LOG)
查看所有日志
git reflog
TAG
git tag (显示所有tag)
git checkout tagname (切换到对应tag,注意切换到tag后,HEAD是游离的状态,最好是创建一个新的分支去操作。)
git branch 分支名 tag名(切换到tag,并且创建新的分支)
git tag -a tagname -m "注释信息" (创建一个带注释的tag)
git show tagname (显示tag的详细信息)
git tag -f tagname -m "注释信息" (强制更改原来tag的旧注释)
git tag -d tagname (删除本地tag)
git push origin tagname (推送特定tag到远端)
git push origin --tags (推送所有tag到远端)
git push -d origin tagname (删除远端tag)
git fetch tagname (下载指定tag)
git fetch origin --tags (下载所有tag)
查看暂存区
git ls-files -c 暂存的文件(默认) -d 删除的文件 -m 修改过的文件
添加文件到缓存区
git add . (全部文件)
git add -A . (修改的文件)
删除暂存区内容(重新生效ignore文件时使用)
git rm -r --cached .
撤销已加入缓存区的文件
git reset HEAD -- . (撤销所有)
git reset HEAD -- filename (撤销特定目标)
撤销本次更改(未加入缓冲区,未add)
git reset --hard HEAD
git checkout .
撤销单个文件的更改(未加入缓冲区,未add)
git checkout 目录+文件名
移除未跟踪的文件和目录
git clean -fd
提交缓存区的文件到本地仓库
git commit -m "log信息"
git commit -a -m log信息 (-m是输入提交信息,-a是可以把还没有执行add命令的修改一起提交)
推送本地仓库到远程仓库
git push origin master
强制推送本地仓库到远程仓库
git push origin master -f
拉取远程仓库的内容
git pull (拉取并合并)=git fetch + git merge
git pull origin master –allow-unrelated-histories 拉取远程分支,并合并历史记录
git fetch (只拉取不合并) git fetch <远程主机名> <分支名> //注意之间有空格 $ git fetch origin master
git log -p FETCH_HEAD (fetch 后可以查看修改记录)
退出git文本
Esc退出编辑,
:wq保存退出,
:q!直接退出
合并分支
git merge dev (将dev分支合并到当前分支)
开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master
当master代码改动了,需要更新开发分支(dev)上的代码
git checkout master
git pull
git checkout dev
git merge master
git push -u origin dev
回退版本
git reset HEAD^ # 回退所有内容到上一个版本
git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本
git reset 052e # 回退到指定版本
注:git reset和git checkout 的区别
{
git checkout是改变head的指向。如果master指向2,现在checkout1,会发现修改的内容都恢复到了分支1的状态。git branch -v查看会发现当前的和master是不一样的分支,也就是说checkout后会产生一个临时的分支。在这个临时分支上想要提交就必须再创建一个分支,再将该临时分支merge到创建的分支上之后才能提交。另外如果在这个临时分支上进行了修改,再想要checkout回master分支,会报错,提示有修改的东西没有git add。比如add commit后才能提交。
git reset是直接改变master的内容。例如master指向2,现在reset1后,会发现修改的内容并没有发生改变。git branch -v查看会发现当前的和master是一样的分支。不同的是如果git status一下会发现提示有很多没有提交的内容。也就是说,reset之后,内容整体回退了。之前提交的状态也都消失了,状态回到了还没有add和commit的状态。这时候修改一些内容,然后再reset回2,发现是不会报错的,而且修改的内容也是在的。
总结一下,reset和checkout最大的区别就相当于checkout会恢复到分支修改前的状态,而且是个临时分支。而reset会恢复到分支提交前的状态。
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)