文章命令摘抄於《GitHub入門與實踐》一書、網上搜集和實踐整理。git
$ ssh-keygen -t rsa -C "your_email@example.com"
$ ls -al ~/.ssh
$ 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退出)
編輯狀態下想終止提交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 -
默認是:
--ff
fase forward 快速合併,不會生成新的提交
$ git checkout master
$ git merge --no-ff branch-b
--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^
這個操做會撤銷到上一個的本地提交,可是會保留其提交的修改內容,做用就是以便修正內容以後從新提交。
$ 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會被刪除
仍會保留改動的內容
$ git reset
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
$ git show v1.0
$ git push origin --tags
$ 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>