Git-基礎


title: Git基礎
date: 2019-02-27 13:57:19
tags:
- Git
categories:
- Git
toc: true

Git常用命令

  • 獲得版本庫
    • git init
    • git clone
  • 版本管理
    • git add
    • git commit
    • git rm
  • 查看信息
    • git help
    • git log
    • git diff
  • 遠程協作
    • git pull
    • git push

git log查看提交記錄

git log -3,查看最近三條的提交記錄

git log --pretty=oneline,以單行的形式查看提交記錄

git log --pretty=format:"%h - %an,%ar : %s",以特定格式顯示提交記錄


Git的提交id(commit id)是一個摘要值,這個摘要值實際上是用sha1計算出來的。


git checkout -- 文件名/文件夾名,丟棄提交


對於user.name與user.email來說,有3個地方可以設置

  1. /etc/gitconfig(幾乎不會使用,如果使用的是Xcode自帶的git的話這個目錄是不存在的,需要手動創建),git config --system
  2. ~/.gitconfig(很常用),git config --global
  3. 針對特定項目的,.git/config文件中,git config --local

上面三個設置,優先級由上到下遞減,也就是說在3中配置了,會屏蔽掉1,2的配置。

git config --local user.name '張三'

git config --local user.email '[email protected]'

查看文檔:git help config git config --help man git-config git config

git config user.name:查看用戶名

git config user.email:查看用戶郵箱


注意:git rmrm

git mv,rename


git add --all <==> git add .

提交描述信息寫錯了,需要修改,使用git commit --amend -m "修正msg"

#gitignore

.gitignore文件需要手動創建,將需要忽略的文件名放在這個文件中,支持增則表達式。

一些栗子:

要忽略項目目錄下的test.xcodeproject文件,將文件名寫入即可。

忽略項目目錄下所有的.xcodeproject工程文件,則*.xcodeproject

!a.xcodeproject,a.xcodeproject這個工程文件不忽略。

  • *.c#忽略所有以.c爲後綴的文件
  • !lib.c#但是lib.c除外
  • /TODO#僅僅忽略項目根目錄下的TODO文件,不包括subdir/TODO
  • build/#忽略build目錄下的所有文件
  • doc/*.txt#會忽略doc/notes.txt,但不會忽略doc/server/arch.txt
  • /*/test.txt,忽略根目錄下第一級子目錄下的test.txt文件
  • /**/test.txt,忽略根目錄下所有子目錄裏的test.txt文件

分支branch

查看當前分支:git branch

新建分支:git branch new_branch

切換分支:git checkout new_branch

快捷切換回上一次的分支:git checkout -,這個和cd -類似

刪除分支:git branch -d new_branch

刪除分支常見錯誤

​ 1. 刪除當前正處於的分支

error: 無法刪除檢出於 '/Users/hanoi_ahoj/mtgit' 的分支 'new_branch'。

​ 2. 刪除一個沒有合併的分支

error: 分支 'new_branch' 沒有完全合併。
如果您確認要刪除它,執行 'git branch -D new_branch'

合併分支:git merge new_branch

HEAD

HEAD指向的是當前分支

(HEAD保存在.git目錄下的HEAD文件裏,cat HEAD看一看)

master

master本質上指向提交

  • HEAD指向當前分支

1.png

  • 新建一個分支:dev

    2.png

  • 在dev分支上進行了一次commit

    3.png

  • fast-forward(即快進,快速合併,沒有衝突)

    4.png

  • 如果兩個分支修改的同一個文件的同一行,在合併的時候Git是不知道以master爲準還是別的分支爲準,這時就會提示衝突,這個時候看這個文件的內容就會發現裏面的內容被Git用自己的方式標註出來了衝突的地方,需要自己手動處理衝突。解決完後使用git add file_name來告訴Git這個衝突已經解決了。當在master分支中解決了這一個衝突後,在dev分支中再進行合併master分支,就不會提示衝突了,而是fast-forward。

Mac/Linux下一些小技巧

優秀的工具:oh my zsh

拷貝文件cp,移動文件mv(也用來重命名)

當不想輸入當前命令,可以使用ctrl+c

rm -rf 文件夾名,遞歸的刪除文件夾

ctrl+l,相當於clear,清屏幕

ctrl+a,跳到當前命令的開頭,ctrl+e,跳到當前命令的結尾

l,相當於ls -al,顯示當前目錄下所有文件,包括隱藏文件

ctrl+f,向下翻頁,ctrl+b,向上翻頁

mkdir -p test/test1/test2,遞歸建立多個目錄

快速切換回上次的文件夾:cd -

同時執行多條命令:mkdir mydir && cd mydir

.代表當前目錄,..代表上一級目錄


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章