Git在項目中使用技巧
1.常用的命令
mkdir 文件夾名 創建文件夾
clear 清楚螢幕
ls或者ll 將當前目錄下的子文件和子目錄平鋪在控制台
find 目錄名 將對應目錄下的子孫文件或子孫目錄平鋪在控制台
rm 文件名 刪除文件
mv 源文件 重命名文件
cat ... 查看對應文件內容
2.git高級命令
git 操作基本流程
- 創建一個文件夾(項目)
git init項目下出現 .git 文件 - git全局配置
git config --global user.name "XXXX"
git config --global user.email "XXXX" - 在所在項目中工作 (例如你在src文件下寫完你的程式碼)
項目程式碼寫完,執行 git add 路徑 (一般直接寫 git add ./ 將所有程式碼提交到暫存區
git add ./命令流程(先到版本庫再到暫存區 git hash-object -w 文件名 git update-index 不理解就去看git的底層命令) - 程式碼提交
git commit -m "注釋內容"(提交到本地庫) - 分支上工作(項目主分支是dev,開發使需要創建新的分支,例如創建test)
1. 創建分支git branch test
2. 切換分支git checkout test(切換操作,必須保持分支的處於已提交狀態)
註:可以直接創建並切換git checkout -b test
3. 分支上工作順序 (首次無需拉取遠程dev程式碼)
4. 拉取遠程dev程式碼(或者合併dev程式碼)
git pull origin “dev”或git merge dev
處理衝突,然後工作
5. 事情處理完,將修改後內容添加至暫存區
git add ./
6. 添加暫存區後再添加到本地倉庫
git commit -m "注釋"
7. 將分支程式碼提交到遠程倉庫
如果項目是首次創建,需要和遠程倉庫連接(如果項目是直接從遠程 clone,則無需操作)
git remote add origin 地址
git push -u origin test
8. 提交分支後,團隊leader會審查程式碼,再合併到dev上
git操作
-
如何修改分支名稱?
需要將分支br_rename_old修改為br_rename_new,執行如下步驟:
1、執行命令git checkout br_rename_old
2、執行命令git pull origin br_rename_old將程式碼更新到和遠程倉庫一致
3、執行命令git branch -m br_rename_old br_rename_new將本地倉庫的br_rename_old的名稱修改為br_rename_new
4、執行命令git push --set-upstream origin br_rename_new將本地分支push到遠程倉庫
5、執行命令git push origin --delete br_rename_old將遠程分支br_rename_old刪除 -
如何刪除暫存區文件?(可以使用編輯自帶)
1、僅僅刪除暫存區文件
git rm --cache 當前文件所在目錄(例如git rm --cache src/vdfvsdfvosdjfvosdfvdof.txt)
2、暫存區和工作區都刪除
git rm -f 當前文件所在目錄(例如git rm -f src/vdfvsdfvosdjfvosdfvdof.txt) -
如何刪除版本庫?(已提交)
1.僅僅只是撤銷已提交的版本庫,不會修改暫存區和工作區
當我們執行 –soft 命令後,可以看到控制台無任何輸出。它只是把HEAD指向了上一個版本
git reset --soft HEAD^(指向上一個版本)
git reset --soft 版本庫ID
2.僅僅只是撤銷已提交的版本庫和暫存區,不會修改工作區
git reset ----mixed HEAD^
3.徹底將工作去/暫存區和版本庫記錄恢復到指定的版本庫
git reset --hard HEAD^(返回上一個)
git reset --hard HEAD@{n}(通過reflog返回)或者git reset --hard 版本庫id(通過reflog返回)** -
git fetch作用?
更新遠程 從遠端倉庫中下載commits, files, refs到本地倉庫中。當你想要看看其他人都在做些什麼的時候,就要使用fetch命令。
你可以認為git fetch是這兩者中更加安全的那個,即便下載了遠端的內容,但也不會更新你本地倉庫的版本狀態,以保證你本地當前程式碼完好無損。反觀git pull命令則是一個更加激進的命令,它會下載當前正在工作的分支對應的遠端內容,並且在下載成功之後馬上執行一個git merge命令,為新下載下來的遠端內容創建一次merge commit。此時如果你有正在進行中的工作還沒準備好進行合併,這些行為可能會造成程式碼衝突。 -
git stash作用?(以及git stash pop)
在某分支上修改內容,這時候卻需要切換其他分支,但沒修改好不想提交,可以使用git stash 命令,將但前分支沒修改好的程式碼,保存至堆棧區,在切換到別的分支操作。在別的分支操作完,切回到剛才的分支,可以先將剛才分支刪除,在重新創建,切換後,在把剛才保存在堆棧的修改內容,pop出來,執行 git stash pop命令(可以在任意分支pop出來) -
刪除分支?
git branch -D ‘分支名’ 刪除本地分支
git push origin –delete 分支名 刪除遠程分支 -
如何更新本地分支內容?(例如主分支為dev,當前分支為test)
如果想拉去dev分支最新程式碼
方法一:git pull origin dev (做了兩步操作,拉去dev最新程式碼,並將它合併到當前分支)
方法二:git merge dev (將dev分支合共到當前分支,dev不是最新還需要切到dev分支更新,切換之前先git stash) -
常用命令
git branch -r查看所有遠程分支git branch -a列出所有本地分支
git checkout -切換到上一個分支 (可以方便兩個分支之間進行切換)
git push origin --delete分支名 刪除遠程分支
git status顯示有變更的文件
git log顯示當前分支的版本歷史
git diff顯示暫存區和工作區的差異 (你可以查看你改了什麼,前期你沒有添加到暫存)
git fetch下載遠程倉庫所有變動 (哪些分支新建了等)
git stash(未跟蹤的文件不會被快取,例如新創建的文件)
git stash list查看快取了幾條
git stash save "test-cmd-stash"
git stash pop//命令恢復之前快取的工作目錄,這個指令將快取堆棧中的第一個stash刪 除,並將對應修改應用到當前的工作目錄下。(並將快取拷貝刪除)
git stash apply//命令,將快取堆棧中的stash多次應用到工作目錄中,但並不刪除stash拷貝。
git stash apply stash@{n}n表示第幾個到工作區
git stash drop//移除stash 移除具體哪一個
git stash drop stash@{n}
git stash clear//刪除所有快取的stash -
撤回push操作?(遠程倉庫)撤回已經提交到遠程的程式碼
先head指向要回到的版本,在強行推送到遠端
git push –force

例如撤回前兩個,只需將本地head指向第三個,在強行推送到遠端
git reset --hard 1c41df20421e36343d453d64477e0594fd98b041
git push --force
10. reset回退commit,後悔咋辦?
例如執行git reset –hard HEAD^,指向了別的版本,想在回來。
執行git reflog 查看所有 HEAD的切換 找到版本id,在執行git reset –hard 版本id

上圖是執行git reflog後的結果
git reflog展示你歷史操作記錄,在你執行錯誤命令時,可以幫助你快速返回執行錯誤之前的狀態
reflog第一個記錄(HEAD@{0})就是你最新的操作記錄,如果你想返回這操作之前的一個步驟,只需將 HEAD指向HEAD@{1} ,具體操作如下:
git reset --hard HEAD@{1} 或者 git reset --hard baa789e (對應的版本id)

