git 學習筆記

目錄

 

1. 配置

2. 刪除文件

3. 提交歷史記錄

3. 撤銷操作

4. 遠程

5. fetch 和 pull

6. 推送到遠程倉庫

7. 遠程倉庫的移除與重命名

8. 分支

9. 變基 rebase


 

1. 配置

1)查看配置信息

$ git config --list

  git config <key>            //查看某一項配置

2)查看user

$ git config user.name 

3)首次配置用戶信息

$ git config --global user.name "username"
$ git config --global user.email your_email

2. 刪除文件

$ git rm fileName                //刪除已跟蹤文件,並且連帶從工作目錄中刪除指定文件
$ git rm --cached fileName      //只刪除已跟蹤文件,不會從磁盤中刪除

3. 提交歷史記錄

$ git log
常用選項
-p  按補丁格式顯示每個跟新之間的差異
--stat  顯示每次更新的文件修改統計信息
--shortstat 只顯示--stat中最後的行數修改添加移除統計
--name-only 僅在提交信息後顯示已修改的文件清單
--name-status 顯示新增、修改、刪除的文件清單
--abbrev-commit 僅顯示SHA-1的前幾個字符,而非所有的40個字符
--relative-date 使用較短的相對時間顯示(比如,"2 weeks ago")
--graph 顯示ASCII圖形表示的分支合併歷史
--decorate 顯示每個commit的引用(如:分支、tag等)
--oneline 每個提交記錄只以一行的形式顯示

常用組合:

$ git log --oneline
$ git log --oneline --graph
$ git log --oneline --graph --all     //以單行簡圖的形式顯示所有的分支

$ git log -n                          //只顯示最近的n次提交
$ git log --author authorName         //只顯示指定作者相關的提交

3. 撤銷操作

$ git commit --amend

例如:

$ git commit -m "new commit"
$ git add newFile
$ git commit --amend

最終只會有一個提交--第二次提交將代替第一次提交的結果

4. 遠程

1)查看遠程倉庫
 

$ git remote
$ git remote -v        //顯示需要讀寫遠程倉庫使用的git保存的簡寫與其對應的URL

2)添加遠程查庫

$ git remote add <shortname>  <url>

例:

$ git remote add origin https://github.com/hello/Hello.git

3)刪除遠程倉庫

$ git remote rm remoteName

5. fetch 和 pull

$ git fetch [remote-name]

訪問遠程倉庫,從中拉取所有你還沒有的數據。執行完之後將擁有遠程倉庫中所有分支的引用,可以隨時合併或查看。

需要注意的是,git fetch 命令會將數據拉取到你的本地倉庫--它並不會自動合併或修改你當前的工作,當準備好是你必須手動將其合併入你的工作
例:

$ git fetch origin

從遠程fetch後可通過如下命令將拉去的分支添加到當前的分支中:

$ git merge origin/master 

其中 origin/master 爲fetch下來的分支名稱


也可以建立一個分支來指向該遠程分支, 如:

$ git checkout -b remote_branch origin/master

fetch的另一個用法:

$ git fetch origin master:newbranch

該命令會在本地新建一個newbranch分支並將遠程origin倉庫的master分支代碼下載到本地newbranch分支

pull:   該命令很少用
$ git pull <遠程主機名> <遠程分支名>
$ git pull origin master

6. 推送到遠程倉庫

$ git push [remote-name] [branch-name]

$ git push origin master

只有當你有克隆服務器的寫入權限,並且之前沒有人推送過時,這條命令才能生效。當你和其他人在同一時間克隆,他們先推送到上游然後你在推送到上游,你的推送就會毫無疑問地被拒絕。你必須先將他們的工作拉取下來並將其合併到你的工作後才能推送。

7. 遠程倉庫的移除與重命名

移除:

$ git remote rm remoteName

重命名

$ git remote rename oldName newName 

修改地址:

$ git remote origin set-url [new url]

或者先刪後加

$ git remote rm origin
$ git remote add origin [url]

8. 分支

1)創建分支

$ git branch branch_name        //創建一個名爲branch_name的分支

注:該命令僅創建一個分支,並不會自動切換到新分支中去

2)切換分支

$ git checkout branch_name        //切換到branch_name分支

3)創建分支的同時切換到新創建的分支

$ git branch -b new_branch_name

它是下面兩條命令的簡寫

$ git branch new_branch_name
$ git checkout new_branch_name

4) 刪除分支

$ git branch -d branch_name

5)分支的合併
例:將名爲test的分支合併到master分支中

$ git checkout master
$ git merge test

6)合併兩個沒有關係的分支

$ git merge branch_name --allow-unrelated-histories

7)遇到衝突的分支合併
如果在兩個不同的分支中,對同一個文件部分進行了不同的修改,Git就沒法乾淨的合併它們。如上面的分支的合併的例子中,如果master分支和test分支都同時對README.md文件進行了修改,那麼執行一下命令後
$ git merge test
此時Git已經做了合併操作,但是沒有自動地創建一個新的合併提交。Git會停下來,等待你去解決合併產生的衝突。此時你可以在合併衝突後的任意時刻使用git status命令來查看那些因包含合併衝突而處於未合併(unmerged) 狀態的文件.
當自己手動解決玩所有文件裏的衝突之後,對每個文件使用git add命令將其標記爲衝入已解決。一旦暫存這些原本有衝突的文件,Git就會將他們標記爲衝突已解決。之後可以使用git commit命令提交完成分支的合併。

8)其他操作

$ git branch -v              //查看每一個分支的最後一次提交
$ git branch -vv             //查看所有的本地分支,並顯示更多的信息(是否跟蹤遠程分支)
$ git branch --merged        //查看已經合併到當前分支的分支
$ git branch --no-merged     //查看沒有合併到當前分支的分支

9. 變基 rebase

使用方式一:

$ git checkout experiment
$ git rebase master            //將experiment變基到master分支
$ git checkout master
$ git merge experiment         //合併分支

使用方式二:

$ git rebase [basebranch] [topicbranch]    //將topicbranch變基到basebranch

如上例子:

$ git rebase master experiment            //這樣做就不必先checkout到experiment
$ git checkout mater
$ git merge experiment

一般變基的目的是爲了確保在向遠程分支推送時能保持歷史的整潔。在這種情況下,你首先在自己的分支裏進行開發,當開發完成時,你需要將你的代碼變基到 origin/master上,然後再向主項目提交修改。這樣的話,該項目的維護者就不再需要進行整合工作,只需要更快合併即可。

 

 

 

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