1. 程式人生 > >git&github快捷命令以及筆記精華

git&github快捷命令以及筆記精華

看完後還是要自己動手,遇到問題然後解決。濃縮下git教程

git總體的流程圖
這裡寫圖片描述

git有三種狀態:Change, Staged, Committed。

Change(Unstaged):你改動了一個,沒有呼叫任何git命令前,就是這種狀態。

Staged:呼叫git add或者git commit -a之後,進入Staged狀態,表示申明要變動了。

Committed:Commit,生成新的版本commit號,進入此狀態。
git init:初始化一個目錄,其實就是加了一個.git的隱藏目錄

刪除某個倉庫裡的個別檔案流程:

#第一步
C:\Users\Geek Lee\Geek-Lee.github.io>git rm index.html
rm 'index.html'
#第二步 C:\Users\Geek Lee\Geek-Lee.github.io>git commit -m "刪除" [master 02f3a7e] 刪除 1 file changed, 1 deletion(-) delete mode 100644 index.html Warning: Your console font probably doesn't support Unicode. If you experience s trange characters in the output, consider switching to a TrueType font such as
C onsolas! #第三步 C:\Users\Geek Lee\Geek-Lee.github.io>git push origin master Counting objects: 2, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 226 bytes | 0 bytes/s, done. Total 2 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100
% (1/1), completed with 1 local objects. To [email protected]:Geek-Lee/Geek-Lee.github.io.git c138f16..02f3a7e master -> master

git clone:遠端複製一個完整的repository到本地,比如git clone
git://github.com/schacon/simplegit.git,就是從git://github.com/schacon/simplegit.git這個地址clone到本地當前目錄。

git add:把一個檔案從change->staged狀態。git add
test.txt。注意,不僅僅是新增新檔案,修改現有檔案也要git add來修改狀態,否則git不會考慮將之commit。(當然可以git

git status:剛新增完,還沒commit,這時候就能用git status
-s看看當前修改和倉庫裡面差別多少,可以看到有多少檔案被新增了,多少被修改了,多少被刪除了。加個-s用簡潔模式檢視。一般在git commit之前看一把。

git diff:不加引數比較當前修改的檔案和上次commit在倉庫裡面的區別。git diff
develop,檢視當前版本和develop分支的差異。如果想比較某個目錄下的檔案,可以用git diff –

git commit:git commit -m ‘message
here’。提交到倉庫,必須要一個message。如果嫌每次都是先git add,再git commit,很麻煩的話,直接git
commit -am ‘message’,帶上-a後全部一把進去。

git reset:撤銷某次提交。最普通用法,git reset HEAD –
file,將某個檔案從staged狀態->unstaged狀態,這檔案也不能被commit了。git reset –hard
HEAD~1,回退到當前HEAD之前的一個版本。

git branch:不帶任何引數,就是看當前目錄有多少分支,預設init後一般會有一個master。git branch
develop,建立一個develop分支。git branch -d

git checkout:快速切換分支,比如git checkout
develop,馬上切換到develop分支。這個地方我覺得git很牛逼,不用換目錄,立馬換一套context。

git tag:git tag -a
v1.0,將最後一次commit(HEAD)標記為永久的v1.0版本。如果要給以前某次commit打tag,也可以加上提交的版本號就行(版本號可以通過git

git remote:列出所有的遠端倉庫。從別處clone來的,預設都會有一個別名”origin”的倉庫。帶上-v可以看到具體URL。git
remote
add/rw,新增/刪除遠端倉庫地址。其實這些操作都是在本地,並沒有實際牽涉到遠端。另外github裡面folk過來的,預設叫”upstream”。

git fetch:從遠端下載分支。git fetch upstream
A:B,將遠端倉庫upstream下的A分支下載到本地,本地叫B分支。如果不帶A:B引數,則下載以後,可能會叫upstream/A(如果遠端是A分支的話),遠端分支要通過git
branch -r檢視。一般的做法是先git fetch upstream
master:tmp(將遠端的master先下載到本地的tmp分支,然後git diff
tmp看看本地master和tmp的區別,沒問題的話再git merge tmp。這樣比直接git pull upstream來的安全。

git pull:同fetch,只是下載以後,直接進行merge。比如git pull upstream
master,就直接將upstream下載下來,與本地的master合併。

git push:git push origin
A:B,將本地的A分支push到遠端倉庫origin下,並叫做B。如果省略:B,那麼一般本地和遠端的分支同名。特殊情況:刪除遠端分支可用通過push一個本地空分支來做到。git push origin :B,push一個空分支到origin下的B,即刪除了遠端分支B
共勉
1.在Windows上安裝Git
msysgit是Windows版的Git,從https://git-for-windows.github.io下載(網速慢的同學請移步國內映象),然後按預設選項安裝即可。
安裝完成後,在開始選單裡找到“Git”->“Git Bash”,蹦出一個類似命令列視窗的東西,就說明Git安裝成功!

install-git-on-windows

安裝完成後,還需要最後一步設定,在命令列輸入:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

因為Git是分散式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎麼辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。
注意git config命令的–global引數,用了這個引數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的使用者名稱和Email地址。
2.初始化一個Git倉庫,使用git init命令。
新增檔案到Git倉庫,分兩步:
第一步,使用命令git add ,注意,可反覆多次使用,新增多個檔案;
第二步,使用命令git commit,完成。
3.小結
暫存區是Git非常重要的概念,弄明白了暫存區,就弄明白了Git的很多操作到底幹了什麼。
沒弄明白暫存區是怎麼回事的童鞋,請向上滾動頁面,再看一次。
4.小結
要隨時掌握工作區的狀態,使用git status命令。
如果git status告訴你有檔案被修改過,用git diff可以檢視修改內容。
5.小結
現在總結一下:
HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset –hard commit_id。
穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。
要重返未來,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本。
6.先有本地庫,後有遠端庫的時候,如何關聯遠端庫。
要關聯一個遠端庫,使用命令git remote add origin [email protected]:path/repo-name.git;
關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;
此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改;
7.先有遠端庫,後克隆到本地庫的時候,自動關聯遠端庫。
要克隆一個倉庫,首先必須知道倉庫的地址,然後使用git clone命令克隆。
Git支援多種協議,包括https,但通過ssh支援的原生git協議速度最快。
8.建立與合併分支
Git鼓勵大量使用分支:
檢視分支:git branch
建立分支:git branch
切換分支:git checkout
建立+切換分支:git checkout -b
合併某分支到當前分支:git merge
刪除分支:git branch -d
9.解決衝突

$ 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無法執行“快速合併”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突,結果如下:
我們可以直接檢視readme.txt的內容:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,我們修改如下後儲存:

Creating a new branch is quick and simple.

再提交:

$ git add readme.txt 
$ git commit -m "conflict fixed"
[master 59bc1cb] conflict fixed

最後,刪除feature1分支:

$ git branch -d feature1
Deleted branch feature1 (was 75a857c).

**當Git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。
用git log –graph命令可以看到分支合併圖。**

10.分支管理策略
通常,合併分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支資訊。
如果要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支資訊。
準備合併dev分支,請注意–no-ff引數,表示禁用Fast forward:

$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
readme.txt |    1 +
1 file changed, 1 insertion(+)

11.bug分支
修復bug時,我們會通過建立新的bug分支進行修復,然後合併,最後刪除;
當手頭工作沒有完成時,先把工作現場git stash一下,然後去修復bug,修復後,再git stash pop,回到工作現場。
12.Feature分支
開發一個新feature,最好新建一個分支;
如果要丟棄一個沒有被合併過的分支,可以通過git branch -D 強行刪除。
13.多人協作
多人協作的工作模式通常是這樣:
首先,可以試圖用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 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,如果有衝突,要先處理衝突。
14.建立標籤
命令git tag 用於新建一個標籤,預設為HEAD,也可以指定一個commit id;
git tag -a -m “blablabla…”可以指定標籤資訊;
git tag -s -m “blablabla…”可以用PGP簽名標籤;
命令git tag可以檢視所有標籤。
15.操作標籤
命令git push origin 可以推送一個本地標籤;
命令git push origin –tags可以推送全部未推送過的本地標籤;
命令git tag -d 可以刪除一個本地標籤;
命令git push origin :refs/tags/可以刪除一個遠端標籤。
16.使用GitHub
在GitHub上,可以任意Fork開源倉庫;
自己擁有Fork後的倉庫的讀寫許可權;
可以推送pull request給官方倉庫來貢獻程式碼。
17.忽略特殊檔案
使用Windows的童鞋注意了,如果你在資源管理器裡新建一個.gitignore檔案,它會非常弱智地提示你必須輸入檔名,但是在文字編輯器裡“儲存”或者“另存為”就可以把檔案儲存為.gitignore了。
忽略某些檔案時,需要編寫.gitignore;
.gitignore檔案本身要放到版本庫裡,並且可以對.gitignore做版本管理!
資料:
廖雪峰Git教程

相關推薦

git&github快捷命令以及筆記精華

看完後還是要自己動手,遇到問題然後解決。濃縮下git教程 git總體的流程圖 git有三種狀態:Change, Staged, Committed。 Change(Unstaged):你改動了一個,沒有呼叫任何git命令前,就是這種狀態。

[git] github 推送以及沖突的解決

代碼 update 指向 origin 所有 test 新版本 .com 服務 推送以及沖突的解決:   1、查看分支狀態(查看所有:當前檢出分支的前面會有星號) git branch   2、切換分支 git checkout test(分支名)#創建並切換分支gi

window7電腦git設定快捷命令

平常git開發的一些命令來回重複的敲,有點麻煩,這裡給git的常用的命令設定了快捷鍵,很方便開發。 我這個是window7環境,下面開始 1.home鍵 + r 開啟執行視窗,點選確定進入黑視窗 2.新建.bashrc檔案 type nul>.bashrc 新建空的 .bashrc檔案,如下

git&repo常見命令以及工作流程

一.Git 1) git是一個快速,開源,分散式的版本控制系統。 2)Git的開發流程: a.與遠端倉庫同步git pull   b.修改檔案 c.檢視變更git status d.載入變更git add<file> e.提交載入變更git commit f.上

githubgit上傳命令的使用以及多人協作

一、文章前言 本文將討論什麼是github,為什麼要用github,怎麼使用git上傳命令?github多人協作是什麼,為什麼要使用多人協作。 二、git上傳命令的內容 1.什麼是g

Git&GitHub學習筆記之(二)Git命令操作

在上篇文章中,我們就說過Git與GitHub不是一回事。GitHub是基於Git的,Git是基礎。所以再學習更多的GitHub知識之前,就得先了解Git。 一、什麼是Git Git 是一款免費、開源的分散式版本控制系統,他是著名的 Linux 發明者 L

git —— 基本命令以及操作(No.1)

src del 刪除 blog -1 comm commit 操作 提交 git基本命令(附加描述) 1.把文件添加到暫存區$ git add readme.txt 2.把暫存區的文件文件添加到倉庫$ git commit -m "提交說明" 備註:add添加單個文

GithubGit膚淺的認識的筆記

log 筆記 fork pos 好的項目 這樣的 https 分支 com 要了解Github,需要先知道Git是什麽。Git是一個管理代碼的工具。與svn類似。Git的核心思想是 ---【分布式】,我們在服務器上面有一個【主倉庫】,裏面放著上的了臺面的代碼,然後我們在自

Git常用命令學習筆記

刪除文件 備註 簽到 關聯性 筆記 ads 禁用 查看命令 git merge (1)安裝Git    1、Linux下       先運行git看看當前有沒有安裝,大多數Linux會有很友好的提示信息告訴你安裝Git的命令。比如Debian或Ubuntu Linux,通過

git常用命令以及使用技巧整理

再次 跳過 忽略 har foo init 方括號 file pan git config --global <attr-name> <attr-value> 配置git信息,如果使用了 --global 選項,全局屬性將默認被使用,除非此屬性被局部

Git命令以及常見注意事項

命令: git init -> 初始化一個git倉庫git clone -> 克隆一個本地庫git pull -> 拉取伺服器最新程式碼git fetch –p -> 強行拉取遠端程式碼覆蓋本地(同步遠端,不止是程式碼)git add -> 新增到git倉庫git commit

GithubGIT BASH基礎命令

GITHUB中GIT BASH基礎命令列 原文 : https://www.cnblogs.com/WangXinPeng/p/8016293.html 今天來講一下關於github命令列相關知識。呵呵,其實github都沒太明白就把git bash擺上來當道菜。看來,我有當程式設

GIT常用命令以及使用詳解圖示

1配置個人資訊,方便提交程式碼管理 獲取Git配置資訊,執行以下命令: git config --list 如果你還沒有設定名字 user.name 和 user.email的話,可以用以下指令設定: git config --global user.name "user"git c

Maven學習筆記(二)--maven基本命令以及生命週期

Maven基本命令 -v:查詢Maven版本  本命令用於檢查maven是否安裝成功。  Maven安裝完成之後,在命令列輸入mvn -v,若出現maven資訊,則說明安裝成功。 compile:編譯  將Java原始檔編譯成class檔案

Github常用命令,管理Git倉庫文件分享

上次給大家分享了一個別人的部落格,今天看到了一個網站 給大家推薦一下,裡面是管理GitHub的文件,內容很豐富,GitHub遇到什麼問題看這個文件基本都能解決。 https://coding.net/help/doc/git/repository.html#git_clone 這就是

Git上傳GitHub常用命令

git config --global user.name 'lanyu96' git config --global user.email '[email protected]' //設定SSH key cd ~/.ssh  //檢查是否已生成金鑰 ssh-keygen -t

git的基本命令和如何使用git上傳到github

  安裝地址:https://git-scm.com/downloads 配置 安裝完成的地一步就是要配置好你的使用者名稱和郵箱,最好與你的github賬號一樣的配置 git config --global user.name '使用者名稱' git config --glo

使用Git LFS上傳大檔案到GitHub教程,以及可能會遇到的坑(使用了Git LFS卻依然傳不上超過100M的檔案;framework庫如何新增等)

什麼是Git LFS? Git LFS(Large File Storage) 是 Github 開發的一個 Git 的擴充套件,用於實現 Git 對大檔案的支援 簡單的說,就是如果你想傳超過100M的二進位制檔案到GitHub,你就要用Git LFS! 安裝Git LFS 首先

【Linux學習筆記11】移動檔案,目錄的mv命令以及關於檢視檔案的技巧

首先給大家分享一下移動檔案、目錄的命令—mv命令(move) (這裡不會像前面那麼詳細地說,因為與前一篇的cp命令有很多相同點,重頭戲在檢視檔案的技巧) mv命令:用於移動檔案或者目錄 mv /tmp/CJlinux/1/2/1.txt /t

Git&GitHub Git命令列操作

Git的命令列操作分為兩大類:本地庫操作和遠端庫操作 Git的本地庫操作——本地庫初始化: 1.主要運用git init命令 利用git——bash here來開啟任何一個檔案視窗,這利用Linux命令來進行命令列操作 我的工作目錄是e:/gitworkspace,在