Unix & Git基本命令

Unix 常见指令

(下面的file是指 文件名+后缀 的)

  • s –l 列出当前目录下的所有内容(文件\文件夹)

  • pwd 显示出当前目录的名称

  • cd 改变当前操作的目录

  • who 显示当前用户名

  • clear 清屏

  • mkdir dir_name 新建一个目录

  • touch file 新建一个文件(文件不存在才会新建)

  • open file/dir_name 打开一个文件\文件夹

  • 按一下tab键,可以自动补齐指令名称、文件名、文件夹名等

  • ls -ah 查看隐藏的文件

  • rm file 删除文件


Git命令

具体参考 git教程 - 廖雪峰的官方网站

对于版本仓库,跟踪的文件的改动,而不是文件的内容。
git的命令是区分大小写的。

—— 创建git仓库

  • git init 初始化git仓库

—— 把文件添加进git进行管理

添加一个文件,两个步骤

  • 1、git add 文件名.后缀
  • 2、git commit -m"要添加的备注内容"
    (问题:忘记 -m后命令行弹出来的那些东西怎么弄)

—— 怎么通过提交记录查看是否提交成功

怎么看当前的提交是否提交到了git?有提交就有记录,通过查看记录

  • git log
    会显示的时间个当初提交的备注

### —— 查看详细的Log信息
* git log --pretty=oneline

amqrMBP:learngit amqr$ git log --pretty=oneline
e15c6063a6c70728fcedf1b466e355a39cfb9242 the add under the GPL
21f61335c295f9074cccec86cb2c0554b997700d allow add
1c50901d96e3db42f4f91c68da02f630a8b62b29 first commit readme

比如这样这一串 e15c6063a6c70728fcedf1b466e355a39cfb9242 是提交的版本号(id)

—— 查看git的状态

  • git status
    如果显示 “nothing to commit, working directory clean”那么就代表是正常的,无任何冲突的
    是修改过,还是正常,还是冲突等

—— 查看文件被修改的内容与之前的区别

  • git diff

—— 版本回退

  • git reset --hard^
  • git reset --hard^^
  • git reset --hard~3

在Git中,用HEAD表示当前版本。

git reset --hard^ 表示往上回退一个版本
git reset --hard^^ 表示往上回退两个版本
git reset --hard 1c50901 表示回退到指定版本

这个1c50901就是 git log --pretty=oneline 命令得到的那些版本的前面的一长串数字的前面几个数字,我们取一定的位数足以代表就可以了。

amqrMBP:learngit amqr$ git log --pretty=oneline
e15c6063a6c70728fcedf1b466e355a39cfb9242 the add under the GPL
21f61335c295f9074cccec86cb2c0554b997700d allow add
1c50901d96e3db42f4f91c68da02f630a8b62b29 first commit readme

amqrMBP:learngit amqr$ git reset --hard HEAD^
HEAD is now at 21f6133 allow add

amqrMBP:learngit amqr$ git log --pretty=oneline
21f61335c295f9074cccec86cb2c0554b997700d allow add
1c50901d96e3db42f4f91c68da02f630a8b62b29 first commit readme
amqrMBP:learngit amqr$ 

—— 查看版本提交和回退的总的记录

  • git reflog
amqrMBP:learngit amqr$ git reflog
21f6133 HEAD@{0}: reset: moving to HEAD^
e15c606 HEAD@{1}: commit: the add under the GPL
21f6133 HEAD@{2}: commit: allow add
1c50901 HEAD@{3}: commit (initial): first commit readme

—— 回退后还怎么跳转到新的版本

amqrMBP:learngit amqr$ git reflog
21f6133 HEAD@{0}: reset: moving to HEAD^
e15c606 HEAD@{1}: commit: the add under the GPL
21f6133 HEAD@{2}: commit: allow add
1c50901 HEAD@{3}: commit (initial): first commit readme

amqrMBP:learngit amqr$ git reset --hard e15c606
HEAD is now at e15c606 the add under the GPL

======= 以上算是小小地说了一下增删改查,接下说一下暂存区的概念 =====

Git的版本库里存了很多东西,
其中最重要的就是称为stage(或者叫index)的暂存区
还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,
需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

add和commit的操作对应的state和head简图.png

具体学习点击这里

—— 查看工作区和版本库的不同

  • git diff HEAD -- 文件名.后缀

每次修改,如果不add到暂存区,那就不会加入到commit中。

—— 撤销add到工作区的内容(只add到了工作区,还没有commit到branch)

方法一:
git checkout -- file 比如 git checkout -- readme.txt
就可以把你刚刚add到暂存区的所修改的内容撤销掉,也可以相当于恢复到之前最新的commit的状态
git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令 , 以后会涉及到的。

方法二:

  • git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区
    比如 git reset HEAD readme.txt

—— 已经把错误的内容add并且commit到了分支了,还可以补救吗?可以,前提是还没有推送到远程库。

使用 git reset 补救(前提是还没有推送到远程库)。

—— 删除提交到版本库的branch的文件(这这是删除版本库的,本地的还在,想删除本地的文件的话还需要自己删除)

  • git rm file
    比如 git rm test.txt

—— 本地误删了一个文件,从版本拿到那个文件恢复过来到本地(前提是之前这个文件已经提交到版本库)

  • git checkout -- �file
    比如 git checkout -- test.txt
    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以还原。

========= 接下来是建立远程仓库(和github结合) ==============

建立远程仓库(和github结合)

现在已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作

首先电脑得有git这个不用说了,我们上面都可以用了肯定有git。

前提准备:

  • git
  • github的账号

接下里,就是需要 配 .ssh
配好 .ssh之后就可以把绑定到github了
配 .ssh 和 绑定github 请看这里

绑定好之后,我们要知道一件事,把我们的仓库推到github有两种是

  • 一种是通过 https
  • 一种是通过 ssh

我们上面的把ssh绑定到github就是为了通过ssh的方式把仓库推到github

这里说明一点,按照廖雪峰的方式以ssh的方式push,推送失败,但是只要在

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这个地方写上 yes
就可以顺利地推到github了。

对于以前已经弄过了ssh,怎么查看当初填写的邮箱名?

打开 .ssh文件夹的 id_rsa.pub ,在文本的最后面就可看到 邮箱名字。

Git的仓库克隆

git clone 后面加远仓库的https或者ssh链接

Paste_Image.png

类似于下面这样子:

$ git clone git@github.com:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

$ cd gitskills
$ ls
README.md

分支管理

  • 查看分支:git branch

  • 创建分支:git branch <name>

  • 切换分支:git checkout <name>

  • 创建+切换分支:git checkout -b <name>

  • 合并某分支到当前分支:git merge <name>

  • 删除分支:git branch -d <name>

分支具体参见

查看冲突合并情况

合并时出现冲突

$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

查看冲突的原因:

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:      readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

解决冲突后 查看冲突合并情况

  • git log --graph
$ git log --graph --pretty=oneline --abbrev-commit
*   59bc1cb conflict fixed
|\\
| * 75a857c AND simple
* | 400b400 & simple
|/
* fec145a branch test
...

--no-ff的方式merge (保留历史)

储存工作和和恢复工作区

  • git stash 储存工作区
  • git stash list 查看储存的工作区列表
$ git stash list
stash@{0}: WIP on dev: 6224937 add merge

** 恢复两个办法:**

方法一:是用git stash apply恢复,但是恢复后,stash内容并不删除,然后你需要用git stash drop来删除;

  • git stash apply
  • git stash drop

方法二:另一种方式是用git stash pop,恢复的同时把stash内容也删了:

  • git stash pop

$ git stash list
stash@{0}: WIP on dev: 6224937 add merge

强行删除还没合并的分支

  • git branch -D �分支名

多人开发

  • 查看远程库信息,使用git remote -v;

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

给分支打上标签

  • 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

  • git tag -a <tagname> -m "blablabla..."可以指定标签信息;

  • git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;

  • 命令git tag可以查看所有标签。

  • 命令git push origin <tagname>可以推送一个本地标签;

  • 命令git push origin --tags可以推送全部未推送过的本地标签;

  • 命令git tag -d <tagname>可以删除一个本地标签;

  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容