git實用操作以及相關問題彙總

前言

現在大部分公司代碼都用git進行進行版本控制,便於團隊協作開發。個人寫代碼的時候也可以放到GitHub上或者gitlab上面進行版本控制便於開發。最近在使用git的時候遇到了一些問題和坑因此記錄一下,以方便以後的使用。

git配置

1.下載並安裝git工具

git的安裝網址git打開網址安裝需要的類型,git官方提供了Mac,windows和linux的版本
這裏寫圖片描述

2.GitHub上進行註冊

GitHub註冊也很簡單主要分爲一下幾步:
1.進入github官網,點擊右上角註冊按鈕。
2.填寫賬號名,郵箱和密碼
3.選擇免費的公開倉庫,點擊完成就提示註冊成功了。
4.點擊右上角的賬號設置,可以填寫一些基本信息。 這部分屬於github的社交功能了
5.我們看到頁面上有一個警告標記,是郵箱驗證。 打開郵箱找到郵件點擊即可。

3.本地配置

當我們註冊完成後,就可以使用註冊的郵箱在本地進行配置,這個配置主要是本地電腦上與github進行關聯,關聯後就可以在本地操作,然後進行與GitHub同步更新等操作,配置的過程如下:

1.設置用戶名和郵箱(–global 爲全局參數,表明本地所有Git倉庫都會使用這個配置)

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

2.生成密鑰(SSH key)

ssh-keygen -t rsa -C "[email protected]"

這裏寫圖片描述
3.添加密鑰(SSH key),並驗證是否成功

添加密鑰:將上一步驟生成的密鑰即.ssh/id_rsa.pub中內容全部複製。在github的 Settings–>SSH and GPG keys–>New SSH key,key中粘貼複製的內容(Title自定義)。

驗證:github輸入ssh -T [email protected]

4.創建項目工程

1.遠程倉庫
在github中New repository 輸入Repository name。[例如:TestDemo]

2.項目工程
在自己本地電腦上新建一個與github新項目工程同名的文件夾。[例如:TestDemo]

5.創建版本庫

進入步驟四中的文件夾下,輸入以下命令初始化倉庫,若出現:Initialized empty Git repository in E:/* /*/.git/ 則表示創建成功[注意:此時會生成一個.git目錄(隱藏目錄)]

git init

6.連接遠程倉庫(下面兩種方式都可以)

git remote add origin git@github.com:yourName/repositoryname.git

git remote add origin https://github.com/yourName/repositoryname.git

7.從遠程倉庫pull文件(若遠程倉庫沒有文件,直接執行步驟8)

git pull origin master

8、將本地文件push到遠程倉庫(若沒有文件則手動創建)

git status          查看工作目錄的狀態

git add <file>        將文件添加到暫存區

git commit -m "commnet"   提交更改,添加備註信息(此時將暫存區的信息提交到本地倉庫)

git push origin master    將本地倉庫的文件push到遠程倉庫

4.git分支管理

當本地倉庫與遠程倉庫建立連接後,有時候需要新切一個分支來進行操作,避免影響到原來的分支。如果原來的倉庫叫 demo。首先使用命令:git checkout branch看看所有的分支,也可以使用git checkout status來看看當前分支名稱和其他信息。確定當前是在demo下面,如果不在就使用命令git checkout demo
1.新建分支
git checkout -b newdemo,其中newdemo是你新建分支名稱,可以自己去取。
2.刪除分支

git branch -d newdemo

該命令是刪除的本地分支,不會刪除遠程上的分支。刪除分支的時候記得先切換到其他分支下再來刪除你要刪除的分支,刪除分支時可能會出現 cannot delect的異常,這時候可以使用git branch -D newdemo來進行強制刪除,記得是大寫的D。
3.拉取遠程分支

git pull demo

4.提交分支到遠程

git push origin demo

當然提交之前先commit一下,git commit newdemo -m "提交分支",提交分支的時候可能會出現提交不了的情況,記得先進行合併之後再提交。

5.項目中實用操作

有時候我們在當前分支下工作時還未完成相關工作,又要切換到其他分支工作,這時候由於本分支下的工作還未完成,並不想commit,此時有一個特別實用的操作。
1.git stash
在切到其他分支之前,我們可以先執行,git add .,然後再執行git stash操作,這樣分支中修改的內容就會在本地倉庫先保存起來。當我們在其他分支上完成工作後再切回本分支時,使用 git pop就可以恢復到切分支前的狀態開始工作了。
2.git stash list

也可以用 git stash list 來查看所有的擱置版本在出現一個擱置棧的情況下,比如如果你想找回棧中的第2個,可以用 git stash apply stash@{1}如果想找回第1個,可以用 git stash pop如果想刪除一個stash,git stash drop <id>
刪除所有stash,git stash clear
3.找回刪除的stash
如果有時候刪除了stash,然後又想找回來該怎麼辦,使用git fsck可以找回所有的stash,找回後再使用stash apply stash@{n}就可以切換到你想要的stash上了,其中n是可以自己選的,1,2,3等。具體可以看StackOverflow上面的https://stackoverflow.com/questions/89332/how-to-recover-a-dropped-stash-in-git
4.刪除遠程分支

git push origin --delete Test_Branch

6.其他問題

1.Cannot delete branch 'Test_Branch' checked out at '[directory location]'.
解決方案:切換到另一個分支,再刪除如下:

$ git checkout master
$ git branch -d Test_Branch

如果還刪除不了使用如下命令進行強制刪除:

$ git branch -D Test_Branch

2.error: Entry '<fileName>' not uptodate. Cannot merge. (Changes in working directory)
或者

error: Entry '<fileName>' would be overwritten by merge. Cannot merge. (Changes in staging area)

解決方案:git reset --hard詳情可以參考StackOverflow上的https://stackoverflow.com/questions/1248029/git-pull-error-entry-foo-not-uptodate-cannot-merge

參考文獻

1.http://genomewiki.ucsc.edu/index.php/Resolving_merge_conflicts_in_Git
2.https://stackoverflow.com/questions/89332/how-to-recover-a-dropped-stash-in-git
3.https://backlog.com/git-tutorial/cn/stepup/stepup2_5.html

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