初始化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会恢复到分支提交前的状态。
}

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐