標籤:

Git常用命令

這裡記錄一下自己常用的 Git 命令。常用的命令其實也就那麼幾個,一些很複雜的命令我覺得等到用的時候去查就好了。

配置

在向遠程倉庫提交信息之前最重要的就是配置你的賬號和郵箱,這些出現在每次的commit信息之中。

git config --global user.namengit config --global user.mailn

使用--global選項,配置的信息是放在用戶主目錄上的。如果想在自己的項目裡面使用單獨的配置賬號郵箱,可以不加這個選項,這個時候的配置信息是放在.git/config裡面的。

git config --listn

使用--list參數可以看到所有的配置信息,可能會看到重複的變數名,那就說明它們來自不同的配置文件,不過最終 Git 實際採用的是最後一個。

同時配置的時候可以為一些常用的命令命別名,這樣可以提高工作效率,例如

git config --global alias.co checkoutngit config --global alias.br branchngit config --global alias.ci commitngit config --global alias.st statusn

這樣我們想切換分支的時候只需要使用 git co即可。

幫助

查看命令怎麼用有一個很好的的方式的是查看 Git 自身的 help,這是隨時查看不需要聯網的。可以使用下面的命令

git help <verb>n或者ngit <verb> --helpn

diff

對未暫存的文件使用git diff命令能查看工作區這次修改的文件和上次提交的文件之間的區別,使用git status命令是查看具體有哪些文件有改動,在使用git status之後推薦使用git diff來查看具體的改動是什麼。注意這裡 git diff是查看未暫存的文件和上次提交的區別,如果是查看已經暫存的文件和上次提交的文件的區別使用 git diff --cached。

移除文件

移除文件主要使用的有兩個命令rm,git rm。

移除文件主要是從暫存區移除文件,然後提交,這時候可以使用git rm命令,然後再提交,也可以使用rm命令,然後再git add,git commit.

這兩個命令最主要的區別就是使用rm僅僅是刪除工作區域的文件,需要再使用git add命令,而git rm相當於刪除暫存區的文件,可以一步做完。

如果在刪除之前修改過並且放在暫存區之後就需要使用強制刪除 -f 選項。還有一種情況是有時候我們只希望刪除暫存區的一些不起作用的文件但是希望在工作區保留這些文件,可以使用git rm --cached命令。

修改前一次提交

如果在提交的時候發現自己的commit的信息寫錯了,你想修改這一次提交的信息,就可以使用git commit -- amend命令。

這個命令主要是用來修改最後一次提交,使用之後會出現 git 默認的文本編輯器,編輯它確認沒問題後保存退出,就會使用新的提交說明覆蓋剛才失誤的提交。

如果在上一次的提交中發現還有一部分信息需要一起提交,也可以先git add上忘記的文件,然後使用git commit -- amend命令,成為一次提交。

reset

如果自己在使用git add添加文件到暫存區的時候,一不小心將兩個文件添加了,或者不小心使用了-- all參數,可是自己只想添加一個文件,這個時候如果想撤銷之前的操作,就可以使用git reset HEAD <file>命令,這樣這個文件就會變成未暫存的狀態。n

這個命令還有一個很強大的地方,就是可以回退版本,同時對於一個文件自己可以修改無數次,每次修改提交之後就會有一個commit 的 id,這個 id 是一個SHA1計算出來的一個非常大的數字,每個 id 都會是唯一的。

可以使用git log查看每個 commit 的 id,也可以使用git reflog,這個命令記錄了每一次提交,如果自己想退回到某個版本去,可以使用git reset --hard HEAD^,在 git 中用 HEAD 表示當前版本, HEAD^表示上一個版本,如果想退回到前幾十個版本之前,可以直接使用git reset --hard commitID就可以直接將HEAD指針指向那個版本。

撤銷修改

如果自己將工作區的某個文件改動完之後還未添加到暫存區發現之前的改動是完全沒有必要的,這個時候也有一個命令可以撤銷之前的修改,就是git checkout -- file。

這個命令只有自己真的覺得自己的修改是完全沒有必要的情況下再使用,因為這個命令會將之前版本的複製過來重寫整個文件,如果覺得自己當前的修改是想保留下來可以提交之後選擇回退版本。

如果自己的文件在改動之後已經添加到暫存區了,這個時候可以使用git reset HEAD <file>命令,使文件變成未暫存的狀態,然後使用 checkout 即可。

如果已經提交了,可以選擇版本回退到自己想要的版本。

遠程倉庫

在本地建了一個倉庫之後如果需要關聯到某個遠程倉庫進行文件的上傳下拉等操作,需要先使用git remote add <name> <url>將遠程的倉庫關聯到本地倉庫,這裡的 name 是自己為這個倉庫取得名字,url是遠程倉庫的地址。

可以使用git remote -v來查看自己的倉庫關聯了哪些遠程倉庫,關聯到遠程倉庫之後可以使用git fetch <remote-name>將遠程分支上面的數據抓取到本地,之後可以使用git branch -a查看自己的分支並可以使用git checkout <branch-name>切換到自己新抓取的那個分支上面看看都下拉了什麼,也可以使用git merge合併分支。

一般我們都會選擇克隆一個倉庫到本地,這個時候查看git remote -v會發現自動將遠程倉庫命名為 origin,所以git fetch origin會拉取上次自從上次fetch之後別人上傳的更新,fetch只會拉取數據到本地,但不會自動合併到當前工作分支。

這樣我們有另一個命令叫git pull,這個命令自動抓取數據下來,會將遠端分支自動合併到本地倉庫中當前分支。相當於fetch + merge。

說完拉取數據之後,還有一個命令git push <remote-name> <branch-name>可以將本地的數據推到遠程倉庫上面,如果在推數據前,已經有其他人推送了若干更新,那這個 push 就會被拒絕。必須先把他們的更新抓取到本地,合併到自己的項目中,然後才可以再次推送。

對遠程倉庫如果想更名可以使用git remote rename <name> <anothername>命令,如果想刪除,可以使用git remote rm <name>。

上面羅列出來的就是常用的一些命令,先寫到這裡,下次再對一些內容進行補充。

知乎編輯器真的超級難用,同步於博客 Git常用命令 · Issue #15 · LuckyAbby/LuckyAbby.github.io

參考:

Pro Git》

廖雪峰老師的Git教程《Pro Git》

推薦閱讀:

【Trac】瀏覽器中查看源碼庫
如何理解git的快照?
Working with Git | Git 與 GitHub
git 中如何撤銷部分修改?
Git如何在本地查看遠端倉庫超前本地提交的日誌信息?僅僅是日誌信息哦

TAG:Git |