git 使用經驗

1, 切換分支:linux

git  checkout  《分支名字》: git checkout clhandlegit

 

2,查看有哪些分支:github

git  branch ;服務器

查看遠端有哪些分支:ssh

git branch -rfetch

 

3,拉取遠端分支:(本地沒有該分支的時候???)this

git fetch origin cl_handle: clhandle;  url

注意: fetch  將遠端拉到本地 可是 不合並;spa

origin 表示遠端, 日誌

cl_handle 是遠端的分支名

clhandle 若是本地沒有這個分支 就會建立;

 

---------------------------------

git pull origin cl_handl  將遠端的 cl_handle 分支 拉取到本地併合並;(本地的當前分支)

 

 

 

4, 撤消 修改(當內容尚未提交的時候  有效)

例如 git status 列出 如下文件被修改;

那麼 : git  checkout 《文件名》 便可;

還支持通配符;

 

 

5,add:

1) git status:  to list all file status ;

2)git add *.cpp  to add all cpp file listed;

 

 

6,commit : for first established git , should after first commit, there would be a master branch can be seen;

git commit -m "this is a first commit"  //[提交的是暫存區裏面的內容,也就是 Changes to be committed 中的文件 ]

git commit -a 除了將暫存區裏的文件提交外,還提交 Changes but not updated 中的文件。

 

 

7,添加遠程主機

 git remote add origin git@192.168.1.106:/home/XXXXX.git

中間這個orgin 就是 添加的遠程 主機名; 正如前面用到的;//[此時還不用輸入密碼]

 

8,push:

 git push origin master:master :  遠程主機名 +  本地分支名: 遠程分支名(若是不存在該分支 則建立)

 

 

 

9,恢復:

git reset -soft :取消了commit  
git reset -mixed(默認) :取消了commit ,取消了add
git reset -hard :取消了commit ,取消了add,取消源文件修改

我使用了 git  reset 文件名 來回復以前錯誤的add 操做;

 

當代碼被刪除  而且被提交了; 可是並無被更新到遠端;

我使用了 git reset HEAD <file name > 來撤消當前的add 操做;

 而後使用了 git checkout <file name > 這樣被刪除的代碼就回來了;

 

10:關於遠端設置

git remote -v:顯示當前全部遠程庫的詳細信息,顯示格式爲 遠程庫名字 url鏈接(類型)

2)修改已經保存的遠端地址:

git remote rm origin 

git remote add origin git@github.com:Liutos/foobar.git

或者嘗試 使用

 

11, git fetch origin

自從mac 上在遠程倉庫上建立了新的分支,在unbuntu 上怎麼也找不到;(git branch -r ); 緣由:git沒有中心服務器, 全部的命令都在本地執行; Origin 是遠端名稱;

這樣會將遠端的分支信息 同步到本地 , 這樣就能夠拉去遠程其餘分支了;

 

12: 新建一個本地分支

git branch <新分支名字>

 

13,git 查看 某一個 文件的 修改記錄

git log -p filename

 

14: git 中止跟蹤 文件

git rm --cached readme.txt  參數: --cached: 不刪除 本地文件

git rm -n readme.txt  查看某文件是否被跟蹤

 

15: 代碼合併:當遠端代碼 有更新  , 同時本地代碼也有更新; 有衝突的時候 直接push  和 push 都不行了;

1)先 fetch :  例如 git fetch clpc master  : 拉取 遠端 clpc 的master的分支提交信息[ 不知道是否必要,可是我執行了這一步]

2)再merge: 例如:git merge clpc/master: 將遠端的更新直接 合併到當前的分支;

 

16: 強行推送到遠程分支:錯誤代碼 被提交到了遠端, 本地代碼 回滾後,就須要強行把 本地代碼提交到遠端 分支;

不然 git pull 後 錯誤代碼又回來了;

方法: git push -f origin;

 

 

17:  重遠端拉取 並在本地創建一個新的分支

git checout -b [new branch name ] origin/[origin branch name]

 

18:

git diff 當前工做目錄和上次提交與本地索引間的差別。
 git diff master..develop 比較master和develop這兩個分支版本差別
 git diff master...develop 比較master和develop這兩個分支 分支間的差別
 git diff --stat 查看哪些文件被修改,其實用git status也能夠看到
 git diff HEAD  上面這條命令會顯示你工做目錄與上次提交時之間的全部差異  
 git diff     ORIG_HEAD 比較內容和上次提交時的差別
 git diff master^..master~2  ^表示上一次 ~2表示上上次. 依此類推.比較上次和上上次文件提交的差別
 git diff --cached 好比緩衝區
 以上命令均可以加上目錄名.這樣就只比較某個目錄了

 

git diff branch1 branch2 --name-only :只顯示差別的文件

 

疑問:

1) 爲何在使用git pull 拉取最新代碼後, 可是 卻沒有發現 代碼修改,查看 文件 log 時候  發現了 更新日誌;

緣由: 本地文件在合併前  有修改,而且已經提交, 所以沒有merge  進來;

解決辦法:

須要手動merge 遠程分支 到本地; 而後提交merge 之後 才能使用;

git merge clpc/master master

 

 

19, 標籤; 將標籤推送到遠端:

git push remoteName tagName : 將指定標籤推送到遠端。

或者:

git push remoteName --tags  將本地標籤所有推送到遠端。

 

查看本地有哪些標籤:

git  

 

 

20:  刪除本地新增的 未跟蹤文件(untracked files)

git clean -fd

-f : 只刪除文件

-d 新增的文件夾。

 

21, 公司git 服務器須要用ssh 驗證才能訪問問題: for linux

cd ~/.ssh

create a new file config  with content as below:

-----

Host XXXX

    IdentityFile XXXX

------

erro: bad owner or permission  in accessiong config

solution: chmod 600 config

erro: permissions XXX for XXXX are to open .

solu: chmod 600 XXXX 

fixed;

相關文章
相關標籤/搜索