git入門

git入門

在平常的工作中雖然一直在使用git作爲項目管理的工具,但一直使用的就是git addgit commitgit pullgit push,沒有做檢測,因此一直會把一些不應該同步的文件同步,或者提交一些髒代碼,使得原本能執行的程序,變得不能執行。這不能是用簡單的粗心能夠說明。一是自己對git中的命令不熟悉。二是沒有一個好的代碼提交習慣。

工具

我使用git命令練習是使用githug這個遊戲。

安裝

這個遊戲是使用Ruby語言編寫的,可以通過:sudo gem install githug進行安裝

如果,沒有安裝Ruby使用:sudo apt install ruby(針對 Ubuntu 16.04) ,如果是其他版本把apt替換成apt-get即可。

安裝完後輸入githug,然後輸入y 出現如下界面:》

然後進入git_hug文件夾準備開始遊戲。遊戲的玩法可以通過說明查看。

Git命令

init

Git 的init命令用於創建一個空的Git倉庫或者重新初始化一個已經存在的倉庫。但是講道理這個命令很少用到,除了上次在AWS上搭建Blog時使用到了一次。

config

config命令通常是用於配置git的一些屬性,同過git config,可以發現 config下帶如下參數:

但比較常見的做法是設置自己的郵箱和用戶名

git config --global user.name "hsulei"
git config --global user.email "[email protected]"

add

add指令通常用於添加文件索引到庫中,git add .或者git add xxx(xxx爲指定文件名)

commit

commit命令用於將以及add的文件添加到庫中。在每次提交的時候需要使用-m 後面添加上提交的信息。用一種情況是當提交完成之後,突然發現了漏了一些文件沒有提交。很多的做法是在單獨提交一次。但是這樣是不合理的,在這種情況下可以使用--amend子命令:

git add a.txt
git commit --amand

commit的時候可以帶時間。使用--date參數

git commit -m"add  date" --date "2016-12-2 23:23:23"

clone

clone用於克隆一個倉庫到本地。

git clone xxx //xxx爲具體的倉庫地址
git clone xxx location //xxx爲具體的倉庫地址,location爲要clone到的本地庫路徑

.gitignore

這不是一個命令。在所有的git倉庫中都會有一個.gitignore文件,這個文件是用來控制一些文件不應該添加到git倉庫中的忽略文件。在.gitignore文件中填寫要忽略的文件的路徑,就可以在下次提交時,將這些文件忽略掉。比如寫Android的一些編譯文件。在.gitignore中可以忽略一類文件。例如使用vim編輯後產生的.swp文件。在.gitignore中添加:

*.swp

但是有時候在忽略一類文件的時候,需要提交某一個特定的文件,比如忽略所有的.a文件,但是,需要提交lib.a文件,此時我們就可以在.gitignore文件中這樣寫:

*.a
!lib.a

status

使用 git status命令可查看提交的記錄,可以看到哪些文件提交了,哪些文件還沒有添加到庫中:

綠色的部分是已經被git追蹤到的,紅色的還沒有提交到庫中的。

rm

git rm用來告訴git ,需要將哪些文件從倉庫中刪除,同時將這個操作記錄下來,如果只是簡單的rm只是將該文件從物理硬盤上刪除,但是沒有將其從git記錄中刪除。

stash

有時候,做了修改,但是突然來了命令,要緊急需改bug,那這次的修改不能提交。可以用stash命令將當前的修改暫存,當bug修改完成並且commit了之後,在使用git stash pop命令恢復,繼續新功能開發。

mv

mv移動或重命名一個文件、目錄或符號連接,比如,我們想把一個old.txt重命名成new.txt,此時我們就能使用:

git mv old.txt new.txt

log

log 通過該命令,可以查看代碼的提交記錄。

tag

tag 通過該命令,可以添加一個標籤,但是在提交的時候,git是不會自動提交該標籤的,需要在使用push,命令的時候添加--tag參數。

reset

reset可以將錯誤提交的文件取消提價狀態 :

git reset xx

reset 可以將當前地 HEAD重置到制定的位置,如果希望變更保持在staging area,那麼就添加--soft

checkout

checkout有很多的左右:

  1. 撤銷變更
  2. 切換分支
git checkout xxx   //xxx爲要撤銷的文件名稱
git checkout -b xxx //xxx爲分支名
git checkout  xxx //xxx爲tag名稱

remote

remote命令可以查看當前的倉庫。

git remote 

使用-v子命令可以查看查看的URL地址。

可以使用add 子命令,添加一個倉庫的地址。

git remote add xxx //xxx爲倉庫的url地址

pull

pull命令用於從倉庫中拉取數據。

push

push 用於向指定的倉庫中提交數據。

rebase

rebase命令也是用於合併,但是這個合併和merge命令不同。?

diff

diff命令用於查看改動變化:

git diff xxx  //xxx爲要查看的文件名

使用了該命令後的效果如下:

在修改的地方使用了不同但是和標記來表示:紅色表示刪除的,綠色的表示添加的。

blame

blame命令用於查找文件每個部分是有誰修改的

branch

branch命令用於拉取分支。如果忘記開啓新的分支就修改並提交了代碼,也是使用branch帶指定參數,使新的分支基於任意一次提交:

git branch test HEAD

使用-d參數就可以刪除一個分支。

merge

merge指令用於合併分支

git merge test

fetch

fetch指令將更新的代碼拉回本地,但是不進行合併。

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