Git 使用經驗

ybny 9年前發布 | 15K 次閱讀 Git 版本控制系統

在UBUNTU 上使用git 也有很長一段時間了, 個人覺得 這些命令 不一定要 精通。 滿足使用需求就OK了。以下的都是我在日常使用中需要用到的命令;跟大家分享一下;

1, 切換分支:

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

 

2,查看有哪些分支:

git  branch ;

查看遠端有哪些分支:

git branch -r

 

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

git fetch origin cl_handle: clhandle;  

注意: fetch  將遠端拉到本地 但是 不合并;

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: 將遠端的更新直接 合并到當前的分支;




疑問:

1) 為什么在使用git pull 拉取最新代碼后, 但是 卻沒有發現 代碼修改,查看 文件 log 時候  發現了 更新日志;

原因: 本地文件在合并前  有修改,并且已經提交, 因此沒有merge  進來;

解決辦法:

需要手動merge 遠程分支 到本地; 然后提交merge 以后 才能使用;

git merge clpc/master master

 本文由用戶 ybny 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!