git clean -n
: 显示将要清除的文件和目录
git clean -f
:强制清除文件(不包括目录)
git clean -df
:强制清除所有文件和目录
若要同时再移除被忽略的文件或目录,加上-x参数;若只移除被忽略的文件或目录,加上-X参数。
合并
git merge -m <msg> <commit>
:如果产生新的合并提交,则附加msg说明
git merge --no-commit <commit>
:合并成功后不会自动产生新的提交,用户可以在下次提交前对这次的合并结果进行修改和调整
git merge --abort
:遇到合并冲突时,此命令将终止合并,并恢复未合并之前的状态
分支挑捡
如果不需要合并某个分支的全部提交,而只需要该分支的某个或某些提交,使用git cherry-pick命令,它会将指定的commit重新应用到当前分支,命令格式为:
$ git cherry-pick <commit>...
远程交互
查看远程仓库
git remote
加上-v
选项,显示对应的克隆地址:git remote -v
添加远程仓库
git remote add <shortname> <url>
git remote add upstream https://github.com/xgenvn/InputHelper.git
拉取所有xgenvn有的,但本地仓库没有的信息
git fetch upstream
git remote rename <old> <new>
:重命名远程仓库
git remote rm <name>
:删除名为name的远程仓库
git remote [-v] show <name>
:查看远程仓库信息
git remote prune <name>
:删除不存在对应远程分支的本地分支
推送提交到远程仓库
git push <remote> <branch>
git push <remote> <lbranch>:[<rbranch>]
:将本地lbranch分支推送到remote远程仓库的rbranch分支。若rbranch缺省则默认为lbranch,等同于git push
git push <remote> :<branch>
:将空推送到remote远程仓库的branch分支,即删除remote远程仓库的branch分支
git push <remote> --delete <branch>
:删除remote远程仓库的branch分支
git push <remote> -f <lbranch>:[<rbranch>]
:将本地lbranch分支强制推送到remote远程仓库的rbranch分支
从远程仓库拉取最新改动
基本命令为git fetch
,其作用是到远程仓库中拉取所有本地仓库中还没有的最新改动,但不会自动将这些改动合并到当前工作分支
git fetch [<remote>]
:到remote远程仓库拉取所有本地仓库中还没有的最新改动,不指定remote则默认为origin
git fetch <remote> <branch>
:将remote远程仓库的branch分支拉取到本地,同时用FETCH_HEAD指针指向它
git fetch --all
:拉取所有远程仓库
git fetch -p
:删除不存在对应远程分支的本地分支
从远程仓库拉取最新改动并合并
基本命令为git pull
,其作用是从远程仓库自动拉取最新改动到本地(Fetch),然后将远程分支自动合并到本地仓库中的当前分支(Merge)
git pull <remote> <branch>
其将remote远程仓库的branch分支拉取到本地,然后将其合并到本地当前分支。
git pull <remote> <rbranch>:<lbranch>
:将remote远程仓库的rbranch分支拉取到本地,然后将其合并到本地lbranch分支
重置
基本命令为git reset,其作用是将当前分支指针(HEAD指针)重置为指定状态
git reset [<commit>] [--] <paths>...
将暂存区域中指定路径的文件重置为指定commit(不指定则默认为HEAD)时的状态,但不会改变工作目录及当前分支,其相当于git add 的反向操作。该命令执行后,自从commit以来指定文件的所有改动都显示在Changes not staged for commit中,而这些改动的反向改动会显示在Changes to be committed中。
git reset (--soft|--mixed|--hard) [<commit>]