Git 命令集 實踐整理

文章命令摘抄於《GitHub入門與實踐》一書、網上搜集和實踐整理。git

生成ssh key

$ ssh-keygen -t rsa -C "your_email@example.com"

查看ssh目錄的文件

$ ls -al ~/.ssh

設置git暱稱和郵箱

$ git config --global user.name "暱稱"
$ git config --global user.email "郵箱"

命令

基本操做

初始化倉庫

git init

查看倉庫的狀態

git status

向暫存區中添加文件

git add
暫存區是提交以前的一個臨時區域

保存倉庫的歷史記錄

git commit

記述一行提交信息

git commit -m "here enter description"

記述詳細提交信息

git commit

執行後編輯器會啓動
提交格式:shell

  • 第一行:一行文字簡述提交的更改內容
  • 第二行:留空
  • 第三行:記述更改的緣由和詳細的內容
編輯器啓動後按 i 進入編輯狀態,寫完按 Esc 輸入 :wq(w寫入q退出)

git commit description

停止提交

編輯狀態下想終止提交segmentfault

  • 尚未輸入過內容ssh

    • 輸入:q退出
  • 已經有內容了,但不想保存編輯器

    • 輸入:q!退出

查看提交日誌

git log

顯示簡短的提交日誌

git log --pretty=short

顯示一行的提交日誌

git log --pretty=oneline

只顯示指定目錄、文件的日誌

git log README.md

顯示文件的改動

對比文件的上一個提交,清晰顯示改動的地方fetch

git log -p readme.md

查看工做樹和暫存區的區別

git diff

查看工做樹和最新提交的差異

在執行git commit命令以前先執行git diff HEAD,能夠查看本次提交和上次提交之間的差異spa

git diff HEAD

分支的操做

顯示分支列表

分支前面有*號這表示咱們當前所在的分支3d

git branch

建立分支

建立branch-name的分支,並切換到該分支下日誌

git checkout -b branch-name

另一種建立寫法code

git branch branch-b # 建立branch-b分支
git checkout branch-b # 切換到branch-b分支

切換分支

git checkout branch-b

重命名分支

git branch -m old_name new_name

切換回上一個分支

git checkout -

合併分支

默認是: --fffase forward 快速合併,不會生成新的提交

不使用快速合併

  • step 1 先切換回要合併到的主分支
$ git checkout master
  • step 2 而後合併 branch-b 分支
$ git merge --no-ff branch-b

--no-ff 的效果就像下面這樣,並會生成一個新的提交。
--no-ff
圖解4種git合併分支方法

壓縮合並

將待合併的分支內容壓縮成一個新的提交

$ git merge --squash branch-b

刪除分支

刪除分支,刪除前主分支的提交中有合併分支的提交,會丟失分支信息,內容不會丟失。

$ git merge -D branch-b

以圖表方式查看分支提交日誌

$ git log --graph

回溯(時光機、後悔藥)

$ git reset --hard d6f34b7c6d72fdc4e3d01fe6fb2a430278b913ff
$ git reset --hard d6f34b # 或者更簡短一些,惟一便可

回退到上一個版本

$ git reset --hard HEAD^

撤銷上一個提交(commit)

這個操做會撤銷到上一個的本地提交,可是會保留其提交的修改內容,做用就是以便修正內容以後從新提交。

$ git reset HEAD~

查看倉庫操做日誌

在倉庫執行過的操做日誌都會被記錄下來,包括乘坐時光機的操做

$ git reflog

放棄修改

放棄本地修改

未使用git add命令的文件或目錄,能夠經過下面的命令來進行

$ git checkout -- filename // filename換成文件名或者文件,放棄單個
$ git checkout . // 放棄本地全部的修改

已使用git add,但未使用git commit命令的文件或目錄
下面命令會回到add以前,文件會保留並不會刪除

$ git reset HEAD filename // 放棄添加單個文件
$ git reset HEAD . // 放棄全部

還有一種狀況,發現上面的操做都沒法徹底清除本地的改動,可使用下面的命令。
緣由是,這些清不掉的文件都是新添加的文件,上面的操做只對改動原文件有效。

git clean -df # 刪除新添加的文件

已使用git add&git commit的文件,撤銷這次commit

git reset --hard commit_id // 直接還原到指定的commit記錄,因此commit會被刪除

放棄添加

撤銷add操做

仍會保留改動的內容

$ git reset

版本tag

$ git tag -a v0.1 -m "version 0.1 released" 1094adb

查看tag版本

$ git show v1.0

同步tag到遠程倉庫

$ git push origin --tags

刪除tag版本

$ git tag -d v1.0

拉取遠程分支到本地

$ git fetch origin branchname:branchname # 拉取branchname到本地branchname分支

強制忽略文件

若是已存在版本庫裏面的文件,是沒法加入到.gitignore忽略列表裏面的。
可使用,下面的命令進行強制忽略

git update-index --assume-unchanged <files>

解除忽略命令

git update-index --no-assume-unchanged <files>
相關文章
相關標籤/搜索