最近在整理项目,需要用到git,于是问题就出来了:究竟是用GUI版还是命令行?不过经过实践,命令行真好用,哈哈!
所以,这篇文章激流勇进,其实吧主要是记录一下,在项目中用到的命令行以及git命令行。
命令 | 说明 |
---|---|
创建版本库 | 命令行相关 |
ls |
查看文件夹下文件 |
ls -ah |
查看文件夹下文件(包含隐藏文件) |
mkdir 文件名 |
创建文件夹 |
pwd |
命令用于显示当前目录 |
cd 文件名 |
进入某文件夹 |
cd .. |
退出到上一级目录 |
cd\ |
退出到根目录 |
cat 文件名 |
查看文件 |
vim 文件名 |
打开文件编辑 |
按住 esc + shift + : 之后输入 wq
|
保存并推出 |
git init |
把这个目录变成 Git 可以管理的仓库 |
git add 文件名 |
把文件添加到仓库,可以多次add不同的文件,例如:git add file2.txt file3.txt
|
git commit -m "提交的说明" |
把文件提交到仓库,-m 后面输入的是本次提交的说明 |
版本回退 | git相关 |
git status |
查看仓库当前的状态 |
git diff |
查看 difference ,显示的格式正是 Unix 通用的diff格式 |
git diff HEAD -- 文件名 |
查看工作区和版本库里面最新版本的区别 |
git log |
查看 git 提交的历史记录 |
git log --pretty=oneline |
按时间顺序,查看 git 提交日志 |
git reset --hard HEAD^ |
回退到上一个版本 |
git reset --hard "版本号" |
指定回到未来的某个版本,版本号没必要写全,前几位就可以了 |
git reflog |
查看命令历史 |
撤销修改 | git相关 |
git checkout -- 文件名 |
让这个文件回到最近一次 git commit 或 git add 时的状态 |
git reset HEAD <文件名> |
暂存区的修改撤销掉(unstage),重新放回工作区 |
删除文件 | git相关 |
rm 文件名 |
删除指定文件 |
git rm 文件名 |
从版本库中删除指定文件 |
添加远程库 | git相关 |
git remote add origin git@server-name:path/repo-name.git |
关联远程库 |
git push |
把当前分支推送到远程 |
git push -u origin master |
-u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令 |
git push origin master |
把本地 master 分支的最新修改推送至 GitHub
|
从远程库克隆 | git相关 |
git clone "远程库地址" |
克隆仓库 |
创建与合并分支 | git相关 |
git branch |
查看当前分支,会列出所有分支,当前分支前面会标一个 * 号 |
git branch 分支名 |
创建分支 |
git checkout 分支名 |
切到指定分支 |
git checkout -b 分支名 |
创建加切换分支 |
git push origin 本地分支名 |
提交本地分支到远程仓库 |
git branch --set-upstream-to=origin/分支名 本地分支名 |
本地分支设置为从'origin'跟踪远程分支 |
git merge 分支名 |
合并某分支到当前分支 |
git log --graph |
查看到分支合并图 |
git branch -d 分支名 |
删除指定分支 |
git branch -D 分支名 |
强行 删除指定分支 |
分支管理策略 | git相关 |
git merge --no-ff -m "提交说明" 分支名 |
加上 --no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并 |
Bug分支 | git相关 |
git stash |
把当前工作现场“储藏(stash )”起来,等以后恢复现场后继续工作 |
git stash list |
查看被“储藏”的工作现场 |
git stash apply |
恢复被“储藏”的工作现场 |
git stash drop |
删除曾被“储藏”的工作现场记录 |
git stash pop |
恢复的同时把 stash 内容也删了 |
git stash apply "版本号" |
多次 stash ,恢复时,先用 git stash list 查看,然后恢复指定的 stash
|
多人协作 | git相关 |
git remote |
查看远程库信息 |
git remote -v |
显示更详细的远程库信息 |
git push "远程仓库名称" "本地分支名称" 例如: git push origin master
|
远程仓库的默认名称是 origin ,把指定分支推送到远程库对应的远程分支上 |
git checkout -b "分支名" "远程仓库名称"/"本地分支名称" 例如: git checkout -b dev origin/dev
|
远程库 clone 时,默认情况下,小伙伴只能看到本地的 master 分支,若要在 dev 分支上开发,就必须创建远程 origin 的 dev 分支到本地 |
git pull |
把最新的提交从 origin/dev 抓下来 |
git branch --set-upstream-to=origin/dev dev |
如果 git pull 提示 no tracking information ,需指定本地 dev 分支与远程 origin/dev 分支的链接 |
git rebase |
把本地未push的分叉提交历史整理成直线 目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比 |
标签管理 | git相关 |
git tag 标签名 |
为当前分支打标签(默认标签是打在最新提交的 commit 上的) |
git tag |
查看所有标签 |
git tag "标签名" "版本号" |
为历史提交的 commit 打标签 |
git show 标签名 |
查看标签信息 |
git tag -a "标签名" -m "说明文字" "版本号" |
创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字 |
注意 |
标签总是和某个 commit 挂钩。如果这个 commit 既出现在 master 分支,又出现在 dev 分支,那么在这两个分支上都可以看到这个标签 |
git tag -d 标签名 |
删除指定标签 |
git push "远程仓库名称" "标签名" 例如: git push origin v1.0
|
推送某个标签到远程 |
git push 远程仓库名称 --tags |
一次性推送全部尚未推送到远程的本地标签 |
git push "远程仓库名称" :refs/tags/"标签名" |
从远程删除标签(如果标签已经推送到远程,要删除远程标签需要,先从本地删除,然后从远程删除) |
远程库变更 | git相关 |
git remote set-url origin "远程库新地址“ |
更改远程库 url
|
git remote -v |
查看远程 url 是否已更新 |
vim ~/.ssh/known_hosts |
查看 ssh
|
网友评论