git&Linux命令行基础&github远程仓库

参考资料:
廖雪峰git教程
常用 Git 命令清单
Linux命令对应的英文全称
每天一个linux命令
查询网站:explainshell,查命令行英文全称,便于记忆和了解作用

我常用的命令

git init
git add .
git commit -m "文件描述"
git remote add origin url_of_your_newrepository
git push -u origin master
git push origin master 
git pull
git checkout dev (切换到分支)


Linux命令行通用操作

  • 查看当前路径
pwd  // 英文全名:Print Working Directory
  • 查看当前目录下文件

ls (不包括隐藏文件)
英文全名:list
ls -a (包括隐藏文件)
ls -al (包括隐藏文件的详细信息)

  • 切换目录

cd
英文全名:Change Directory
例:
cd /c/project
cd code
cd …/css
cd ~/Desktop

  • 创建文件夹

mkdir
英文全名:Mike Directory

  • 创建文件

touch

  • 删除文件

rm (删除文件)
英文全名:ReMove
rm -rf (删除文件夹)

  • 重命名文件

mv readme.md(旧) README.md(新)
英文全名:MoVe

  • 显示整个文件

cat

  • 下载文件
 curl -L https://raw.githubusercontent.com/rupa/z/master/z.sh 

git相关操作

  • 设置名字和Email地址
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
  • 查看名字和Email地址
git config user.name
git config user.email
  • 列表内容
git config --global push.default simple # 推送本地当前分支(必要的设置)
git config --global core.quotepath false #防止文件名变成数字
git config --global core.editor "vim" # 使用vim编辑提交信息

--global 表示你这台机器上所有的Git仓库都会使用这个配置

  • 初始化仓库

git init

  • 把文件添加到仓库

git add readme.txt
git add -A (提交所有变化)
git add -u (提交被修改(modified)和被删除(deleted)文件,不包括新文件(new))
git add . (提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件)

  • 把文件提交到仓库
 git commit -m "first commit"
  • 查看仓库当前的状态
git status
git status -sb   //(简明扼要版)
  • 查看修改内容

git diff readme.txt
git diff HEAD - - readme.txt(查看工作区和版本库里面最新版本的区别)

  • 查看提交日志

git log

  • -pretty=oneline参数,简明版
  • 回退版本

git reset - -hard HEAD^
用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。

  • 版本号

git reset - -hard 版本号
commit id,找到对应的版本号可回到对应的版本

  • 查看命令历史,找到所需版本号

git reflog

  • 撤销修改,复原文件

git checkout - - readme.txt
让这个文件回到最近一次git add或git commit时的状态,既可丢弃工作区的修改,也可复原误删的文件
git reset HEAD readme.txt
把暂存区的修改回退到工作区

  • 从版本库中删除文件

git rm test.txt
git commit -m “remove test.txt”

  • 删掉仓库
//删除文件夹下的所有 .git 文件
find . -name ".git" | xargs rm -Rf
  • 需要注意的事项

  • git无法跟踪图片、视频这些二进制文件

  • 千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”


github远程仓库

  • 创建SSH Key

ssh-keygen -t rsa -C "[email protected]"
一路回车,使用默认值即可。如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
登陆GitHub,打开“Account settings”,“SSH Keys”页面,添加公钥。

  • 关联github远程仓库

git remote add origin [email protected]:username/learngit.git
username为GitHub账户名
这里把远程库的地址添加个标签叫origin
也可以添加别的名字作为标签,例如:
git remote add gitlab [email protected]:abc/blog.git
推送的时候推送到对应标签上:
git push gitlab master


git remote (查看远程库的信息)
git remote -v(显示更详细的信息)
git remote remove gitlab(删除远程库gitlab 标签)
git remote set-url origin [email protected]:jirengu/blog3.git(修改origin标签对应的地址)
git remote rename gitlab coding(把 gitlab 标签改名为coding)

  • 把本地库的所有内容推送到远程库上

git push -u origin master
第一次推送master分支时,加上了-u参数,把本地的master分支和远程的master分支关联起来
从现在起,只要本地作了提交,就可以通过命令:
git push origin master
把本地master分支的最新修改推送至GitHub

  • 从远程库克隆

git clone 地址

  • 创建与合并分支(以dev为例)

git branch dev (创建分支)
git checkout dev (切换到分支)
git checkout -b dev(创建并切换)
git branch (查看当前分支)
分支前面会标一个*号
git checkout master(切换回master分支)
git merge dev (合并指定分支到当前分支)
git merge --no-ff -m “merge with no-ff” dev(不用fast forward模式,保留分支历史信息)
git branch -d dev(删除分支)

  • 解决分支合并冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。

  • 解决bug时保存当前工作区

git stash(储藏当前工作区)
git stash list(查看储藏的工作区)
git stash apply (恢复储藏的工作区到当前的工作区)
git stash drop (删除储藏的工作区)
git stash pop (恢复并删除)
git stash apply stash@{0}(多次stash后恢复指定的工作区)

  • 多人协作有冲突时

git pull
把最新的提交从远程仓库抓下来,然后,在本地合并,解决冲突,再推送

多人协作的工作模式通常是这样:

首先,可以试图用git push origin branch-name推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git
branch --set-upstream branch-name origin/branch-name。

  • 版本号(打标签)

git tag v1.0 (给当前分支打上标签v1.0)
git tag (查看所有标签)
git tag v0.9 6224937(给指定的commit id打上标签)
git show v0.9 (查看标签信息)
git tag -a v0.1 -m “version 0.1 released” 3628164 (用-a指定标签名,-m指定说明文字)
git tag -s -m “blablabla…” (可以用PGP签名标签)
git tag -d v0.1 (删除标签)
git push origin v1.0 (推送标签到远程)
git push origin --tags (一次性推送全部尚未推送到远程的本地标签)
git push origin :refs/tags/v0.9 (删除远程库里的标签)

  • 远程远程仓库版本回退(只有自己使用时可以用)
git push origin master --force    //远程仓库版本回退
  • .gitignore 不生效的解决方案

当我们将 .gitignore 文件配置好后,却往往不能失效。这是因为 .gitignore 只能忽略那些没有被追踪(track)的文件,因为 git 存在本地缓存,如果文件已经纳入了版本管理,那么修改 .gitignore 是不能失效的。那么解决方案就是要将 git 的本地缓存删除,然后重新提交。

git rm -r --cached .
git add .
git commit -m "update .gitignore"
  • 自定义Git

好用的插件

安装:

npm i -g git-open

**使用:**帮你打开本地仓库对应的github网页

git open

附:
常见的自带命令

操作 命令
进入目录 cd
显示当前目录 pwd
创建目录 mkdir 目录名
创建目录 mkdir -p 目录路径
我是谁 whoami
查看路径 ls 路径
查看路径 ls -a 路径
查看路径 ls -l 路径
查看路径 ls -al 路径
创建文件 echo ‘1’ > 文件路径
强制创建文件 echo ‘1’ >! 文件路径
追加文件内容 echo ‘1’ >> 文件路径
创建文件 touch 文件名
改变文件更新时间 touch 文件名
复制文件 cp 源路径 目标路径
复制目录 cp -r 源路径 目标路径
移动节点 mv 源路径 目标路径
删除文件 rm 文件路径
强制删除文件 rm -f 文件路径
删除目录 rm -r 目录路径
强制删除目录 rm -rf 目录路径
查看目录结构 tree
建立软链接 ln -s 真实文件 链接
下载文件 curl -L https://www.baidu.com > baidu.html
拷贝网页 wget -p -H -e robots=off https://www.baidu.com
磁盘占用 df -kh
当前目录大小 du -sh .
各文件大小 du -h

你可能感兴趣的:(tool)