Git Shell命令

提供練習的Demo地址:Demo項目地址

1、Git本地操作流程

修改工作區中文件(創建或編輯文件)->保存到暫存區git add .git add fileName)->提交到本地倉庫git commit -m 'commit description')。

2、Git基本配置

設置全局的用戶信息:

git config --global user.name "名字"
git config --global user.email "郵箱地址"

--global去掉,可以為單個項目設置用戶信息。

3、本地倉庫操作

  • 操作流程
    1. 創建新倉庫
    2. 創建、刪除、修改文件
    3. 緩存文件
    4. 提交文件到本地
    5. 反復2-4步驟。
      mkdir gitTest  創建gitTest文件夾
      cd gitTest
      git init       初始化git倉庫
      vi README.md   創建README.md文件
      git add .      添加到暫存區
      git commit -m '創建README.md文件'
      
  • git log查看提交歷史日志
  • git status查看提交狀態
  • git reset HEAD file取消暫存區的文件
  • git commit —amend修改上一次提交
  • git commit --amend --author='new_user_name <new@example.com>'修改最后一次提交的用戶名和郵箱
  • git checkout file撤銷對工作區修改;這個命令是以最新的存儲時間節點(add和commit)為參照,覆蓋工作區對應文件file;這個命令改變的是工作區。

4、遠程倉庫操作

1、克隆遠程倉庫

  • git clone <url>克隆遠程倉庫

    該命令會在本地主機生成一個目錄,與遠程主機的版本庫同名。如果要指定不同的目錄名,可以將目錄名作為git clone命令的第二個參數。

  • git clone <url> <本地目錄名>克隆遠程倉庫且指定本地目錄名
  • git remote列出所有遠程主機
  • git remote -v查看遠程主機的網址
  • git clone -o <hostname> <url>克隆的時候,指定遠程主機名為hostname

    克隆版本庫的時候,遠程主機自動被Git命名為origin。如果想用其他的主機名,需要用git clone命令的-o選項指定。

  • git remote show <origin>查看origin主機的詳細信息
  • git remote add <主機名> <url>添加遠程主機
  • git remote rm <主機名>刪除遠程主機
  • git remote rename <原主機名> <新主機名>重命名遠程主機
  • git fetch <遠程主機名>將某個遠程主機的更新,全部取回本地
  • git fetch <遠程主機名> <分支名>取回特定分支的更新,可以指定分支名

2、分支操作

  • git branch 查看本地所有分支
  • git branch -a 查看所有的分支
  • git branch -r 查看遠程所有分支
  • git checkout -b newBranch origin/masterorigin/master的基礎上,表示創建+切換到新分支

    git checkout加上-b參數相當于:

    1. git branch newBranch
    2. git checkout newBranch
  • git branch newBranch創建新分支
  • git checkout newBranch 切換到本地newBranch分支
  • git branch -d newBranch刪除newBranch分支(需先切換到其他分支才能刪除)
  • git branch -m Dev Develop重命名分支DevDevelop
  • git merge origin/master在本地分支上合并遠程分支
  • git rebase origin/master在本地分支上合并遠程分支

3、git pull(取回遠程主機某個分支的更新,再與本地的指定分支合并)

  • git pull <遠程主機名> <遠程分支名>:<本地分支名>

    git pull origin next:master取回origin主機的next分支,與本地的master分支合并

    git pull origin next取回origin/next分支,再與當前分支合并,相當于git fetch,再git merge

    1. git fetch origin
    2. git merge origin/next
  • git branch --set-upstream master origin/next指定master分支追蹤origin/next分支

    手動建立追蹤關系,當前分支與遠程分支存在追蹤關系,git pull就可以省略遠程分支名。

  • git pull origin本地的當前分支自動與對應的origin主機”追蹤分支”(remote-tracking branch)進行合并

    如果當前分支只有一個追蹤分支,連遠程主機名都可以省略。

  • git pull當前分支自動與唯一一個追蹤分支進行合并
  • git pull --rebase <遠程主機名> <遠程分支名>:<本地分支名>如合并需要采用rebase模式,可以使用--rebase選項

4、git push(將本地分支的更新,推送到遠程主機)

  • git push <遠程主機名> <本地分支名>:<遠程分支名>
    1. 注意,分支推送順序的寫法是<來源地>:<目的地>,所以git pull是<遠程分支>:<本地分支>,而git push是<本地分支>:<遠程分支>。
    2. 如果省略遠程分支名,則表示將本地分支推送與之存在”追蹤關系”的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建。
  • git push origin master將本地的master分支推送到origin主機的master分支。如果后者不存在,則會被新建。
  • git push origin :master等同于git push origin --delete master表示刪除origin主機的master分支。

    如果省略本地分支名,則表示刪除指定的遠程分支,因為這等同于推送一個空的本地分支到遠程分支。

  • git push origin將當前分支推送到origin主機的對應分支

    如果當前分支與遠程分支之間存在追蹤關系,則本地分支和遠程分支都可以省略。

  • git push如果當前分支只有一個追蹤分支,那么主機名都可以省略
    1. 不帶任何參數的git push,默認只推送當前分支,這叫做simple方式。
    2. 此外,還有一種matching方式,會推送所有有對應的遠程分支的本地分支。
    3. Git 2.0版本之前,默認采用matching方法,現在改為默認采用simple方式。
    4. 如果要修改這個設置,可以采用git config命令。
      git config --global push.default matching
      或者:
      git config --global push.default simple
  • git push -u origin master將本地的master分支推送到origin主機,同時指定origin為默認主機

    如果當前分支與多個主機存在追蹤關系,則可以使用-u選項指定一個默認主機,這樣后面就可以不加任何參數使用git push。

  • git push --all origin將所有本地分支都推送到origin主機

    不管是否存在對應的遠程分支,將本地的所有分支都推送到遠程主機,這時需要使用 --all選項。

  • git push --force origin使用--force選項,結果導致在遠程主機產生一個”非直進式”的合并(non-fast-forward merge)。除非你很確定要這樣做,否則應該盡量避免使用--force選項。
  • git push origin --tagsgit push不會推送標簽(tag),除非使用--tags選項。

5、git tag(查看現有所有標簽)

  • git tag -l 'V0.1.*'顯示符合條件的Tag標簽
  • git tag -a V1.0.2 -m 'my version is V1.0.2, Debug environment'新建含備注的標簽

    標記當前HEAD使用git tag命令。標記名稱(版本)前加上-a選項,使用-m選項,并提供標簽備注信息。

  • git tag -a v1.2.0 <commitId>給指定的commit打Tag,commitId可通過git log獲取
  • git show V1.0.2顯示標簽詳情
  • git push origin --tags提交標簽
  • git tag -d V1.0.2 刪除本地指定tag
  • git push origin :refs/tags/tagVersion刪除遠程主機tag

git tag分為兩種類型:輕量tag和附注tag。

  1. git tag v0.1.2-light創建輕量Tag
  2. git tag -a v0.1.2 -m '0.1.2版本'創建附注Tag
    輕量tag是指向提交對象的引用,附注Tag則是倉庫中的一個獨立對象。建議使用附注Tag

6、非常用命令

git checkout --track origin/dev 切換到遠程dev分支
git rm 文件名(包括路徑) 從git中刪除指定文件
git config --list 看所有用戶
git ls-files 看已經被提交的
git rm [file name] 刪除一個文件
git commit -a 提交當前repos的所有的改變
git commit -v 當你用-v參數的時候可以看commit的差異
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git diff 查看尚未暫存的更新
git rm a.a 移除文件(從暫存區和工作區中刪除)
git rm --cached a.a 移除文件(只從暫存區中刪除)
git rm -f a.a 強行移除修改后文件(從暫存區和工作區中刪除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 將文件給push到一個臨時空間中
git stash pop 將文件從臨時空間pop下來
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文針對初級用戶,從最簡單的講起,但是需要讀者對Git的基本用法有所了解。 Git是開源的分布式版本控制系統,...
    Sachie閱讀 1,167評論 0 2
  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,611評論 1 26
  • 加密 Mac下創建加密的zip文件,無需第三方軟件,直接在終端中 敲入幾行命令就能搞定。方法一: 選擇壓縮包保存路...
    滕的世界閱讀 1,914評論 0 0
  • 生活中缺少的東西 獨自走在繁華的街道上,看著眼前的萬家燈火,心里有種莫名的失...
    慢性患者閱讀 588評論 1 1