git从入门到放弃

到你想进行版本控制的文件所在的目录下(该目录即是工作区)
查看状态 git status

初始化 git init


添加到暂存区 git add

提交到版本库 git commit -m "注释"

为什么Git添加文件需要两步呢?一步add,一步commit。嘿嘿,因为commit命令可以一次提交多个文件,所以你可以多次使用add命令呢。(相当于在某地集合然后大家一起去网吧开黑,当然你也可以自个去)

然而我们在工作区的文本中添加一行内容

想知道做了哪些修改的话可以使用命令 git diff(仅对已追踪的文件好使)

再次修改文件再次添加

版本回滚

多添加提交几次
用git log命令可以查看最近几次提交的版本。如果你发现内容太多,可以用这个命令查看 git log --pretty=oneline -n(n表示显示几条记录)


在Git中我们用HEAD表示当前版本,也就是我们最新提交的,上一个版本就应该这么表示”HEAD“,再上一个版本就这样表示”HEAD“,当然如果有几十个版本或者1000个版本,我们还要写1000个,这是不可能的,所以哟。我们写成这样HEAD~1000

回退到上一版本git reset --hard HEAD^(慎用,了解详情



想回到某个版本 git reset --hard 版本号(这个会改变工作区,暂存区的数据,慎用,了解详情)


我们在工作区新建一个文本b.txt,再git status查看状态,提示


因为工作区新建的b.txt没有被add到暂存区,git提示我们有一个untracked(未被追踪)的文件。(可以用git add <file>命令添加到暂存区)

在工作区修改已经git add 过的readme.txt文本,查看状态提示:


changes not staged for commit :意思是readme.txt已经被修改了但还未添加到暂存区
Git会告诉你有你个文件被修改,你有两个选择,一个用 git add 提交到暂存区,另一个是用git checkout可以丢弃工作区的修改。命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销(discard changes(放弃修改)),这里有两种情况:

  • 一种是readme.txt自修改后还没有被放到暂存区,现在撤销修改就回到和版本库一模一样的状态;
  • 另一种是readme.txt已经添加到暂存区后,又作了修改,现在撤销修改就回到添加到暂存区后的状态。
    总之,就是让这个文件回到最近一次git commit或git add时的状态。


当我们把修改的readme.txt和新建的b.txt添加到暂存区的时候


use "git reset HEAD <file>..." to unstage 意思是git reset HEAD <file> 可以把暂存区中的修改撤消掉,就是你git add <file>
后就后悔了,发现你其实不想添加文件到暂存区,就可以用这个命令,原理是让当前分支对应的内容,覆盖掉暂存区的内容,这样就相当于我们没有提交




大概意思是除了存在未跟踪的文件外,未添加任何提交 ,说明暂存区是空的,告诉我们可以用git add <file> 跟踪文件



這意味著你有一個乾淨的工作目錄——換句話說,已追蹤的檔案沒有被修改; Git 也沒有看到任何未追蹤檔案,否則它們會在這裡被列出來;

b.txt同時被列在已預存「及」未預存。 這怎麼可能? 原來 Git 在你執行 git add 命令時,的確將當時的檔案內容預存起來; 如果你現在提交,最後一次執行 git add 命令時,那個當下的 b.txt 的版本會被提交,而不是在提交時你在工作目錄所看到的檔案版本被提交; 如果你在 git add 後修改檔案,你必需再次執行 git add 預存最新版的檔案:

簡潔的狀態輸出

雖然 git status 輸出內容相當全面,但也相當囉嗦; Git 另外提供一個簡潔輸出的選項,因此你可以以一種較精簡的方式來檢視你的修改; 如果你執行 git status -s 或 git status --short,你可以從該命令得到一個相當簡單的輸出內容:

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

未追蹤的新檔案在開頭被標示為 ??、被加入預存區的新檔案被標為 A、已修改檔案則是 M 等等。 標記有二個欄位——左邊欄位用來指示「預存區」狀態,右邊欄位則是「工作目錄」狀態。 所以在這個範例中,在工作目錄中的檔案 README 是已修改的,但尚未被預存;而 lib/simplegit.rb 檔案則是已修改且已預存的; Rakefile 則是曾經修改過也預存過,但之後又再次修改,所以總共有二次修改,一個有預存一個沒有。

git diff 会对比【工作目录】和【暂存区】间的内容,,然后将【工作目录】已修改但未存入【暂存区】的内容展示出来

git diff --staged会对比【暂存区】和版本库中最新的一个版本,即最后一次commit上去的内容,把【暂存区】和【版本库】的差异展示出来,如果一样,无返回(--staged和--cached是一回事)


对比的是已追踪的文件

git commit -a -m "注释" Git 在提交前自動預存所有已追蹤的檔案,讓你略過 git add 步驟(前提是文件已被追踪)
在提交之前,你並不需要執行 git add 來預存 b.txt 檔案; 那是因為 -a 選項會納入所有已變更的檔案; 很方便,但請小心,有時候它會納入你並不想要的變更。

image

如果将【工作目录】即电脑本地的文件删除(rm <file>),git status会显示:有变更但未添加到【暂存区】,暂存区有而工作目录没有



如果接下来执行 git rm,【暂存区】会记录该档案的移除动作



另一個有用的技巧是保留工作目錄的檔案,但將它從預存區中移除; 換句話說,你或許想保留在磁碟機上的檔案但不希望 Git 再繼續追蹤它; 當你忘記將某些檔案加到 .gitignore 中而且不小心預存它的時候會特別用有,像是不小心預存了一個大的日誌檔案或者一堆 .a 已編譯檔案。 加上 --cached 選項可做到這件事:

git rm --cached


git rm --cached 只删除暂存区的文件,rm 只删除工作目录的文件,git rm 工作目录和暂存区的文件都删除

git mv b.txt bb.txt 可给文件更名

git add -A 和 git add . 的区别
  • git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
  • git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
  • git add -A :是上面两个功能的合集(git add --all的缩写)

参考
参考二
参考三
参考四

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