git: 分佈式的項目(代碼)管理軟件
一個遠程的倉庫,多個本地的倉庫,團隊開發。
Git 準備/使用
下載git 並安裝(自行百度)
創建本地倉
桌面右鍵 gitBash 進入git ,然後 跳轉到你要存放倉庫的地方(如: cd : d/develop)
$ mkdir git-repository
$ cd git-repository
$ pwd
/d/develop/git-repository
初始化倉庫
$ git init
Initialized empty Git repository in D:/develop/git-repository/.git/
設置 用戶名
$ git config --global user.name "用戶姓名"
$ git config --global user.email "用戶郵箱"
簡單的使用
1、創建一個文件(Linux 系統下 Shift+連按二次Z Z)
$ vi newfile.txt
2、提交到暫存區 (沒有反應的。。.)使用git add -A
或git add .
可以提交當前倉庫的所有改動。
$ git add newfile.txt
3、提交至本地倉庫
git commit
命令,-m
後面輸入的是本次提交的說明
$ git commit -m "提交文件"
[master (root-commit) d70b36f] 提交文件
1 file changed, 1 insertion(+)
create mode 100644 newfile.txt
工作區操作文件,然後add到 暫存區,再commit 提交
關聯遠程倉庫
HTTPS地址配置
1、設置遠程地址
$ git remote add origin https://gitee.com/love_yu_0698/git-repository.git
2、拉取遠程代碼(初次建倉庫的README)
git pull origin master
3、添加要上傳的文件
$ git add readme.txt
$ git commit -m "提交"
4、push 推送代碼到 remote 遠程服務器上
git push -u origin master
SSH地址配置
1、在本地生成sshkey
ssh-keygen -t rsa -C "[email protected]"
會提示信息 繼續按三次回車即可
2、查看你的 public key,
cat ~/.ssh/id_rsa.pub
3、複製key 並把他添加到碼雲(Gitee.com) SSH管理-添加公鑰
4、添加後,在終端(Terminal)中輸入
ssh -T [email protected]
出現 welcome to Gitee.com, 你的名字! #則添加成功
5、添加遠程倉庫地址 ,拉取代碼/推送
$ git remote add origin [email protected]:love_yu_0698/git-repository.git
$ git pull origin master
$ git push -u origin master // 下一次可以直接 git push 後面不需要跟分支名
Git 常用命令
查看文件狀態 (暫存區內的文件)
$ git status
查看文件改動的內容 $ git diff 文件名
$ git diff newfile.txt
查看最近到最遠的提交日誌( 一行顯示)
$ git log
$ git log --pretty=oneline
回退版本
$ git reflog # 獲取每次提交後的版本號
$ git reset --hard HEAD^ # 回退上一版,^^回退上上版,依次類推
$ git reset --hard HEAD 版本號 # 常用
刪除文件
$ git rm newfile.txt
$ git commit -m "delete file"
撤銷修改/恢復刪除的文件
$ git checkout -- newfile.txt
----- 丟掉工作區修改的文件 還沒有 add到暫存區
$ git reset HEAD newfile.txt
----- 已經添加到了暫存區的文件 還沒有commit,可以退回該文件到工作區
拉取指定的遠程分支(本地分支不存在)
方法1: 需要3步,(而且還存在 需要merge 的情況)
1、創建本地分支
git checkout -b 本地分支名
2、推送本地分支到遠程倉庫 -- 建立關係
git push --set-upstream origin 遠程分支名
3、將遠程分支的內容都拉取到本地
git pull origin 遠程分支名
方法2:需要2步
git fetch // 用於獲取最新的遠程分支
git checkout -b 本地分支名 origin/遠程分支名
方法3: 只需要一步 建立連接 ,並拉取內容
git branch --track remotes/origin/遠程分支名
分支管理(解決衝突)
查看當前分支
$ git branch
$ git branch -a //查看所有分支
創建分支
$ git branch 分支名
切換分支
$ git checkout 分支名
創建+切換分支
$ git checkout -b 分支名
合併某分支到當前分支 如:A當前分支(有a,b文件) B被合併的分支(有a,c文件),merge 結果爲 A分支(有a,b,c文件)
$ git merge 被合併的分支
刪除分支
$ git branch -d 分支名
$ git branch -D 分支名 //強行刪除
bug分支(正式環境出bug了,但是你手頭上的項目做到了一半,又不能commit 可以通過 git stash 來解決)
暫時保存當前分支的內容
$ git stash
查看暫時保存的詳情
$ git stash list
-------checkout 回到master分支,拉取代碼,然後 創建新的分支,修改 ,測試,再合併修改後的分支,測試,發佈---------
恢復 暫時保存的內容
$ git stash apply //恢復,但是恢復後,stash內容並不刪除
$ git stash drop //刪除,stash內容
$ git stash pop //恢復,並刪除
遠程庫操作
更新遠程倉庫最新到本地(不會自動merge)
$ git fetch
查看遠程倉庫地址信息
$ git remote
$ git remote -v //詳細信息
推送至遠程分支
$ git push origin 分支名
$ git push --set-upstream origin 分支名 // 第一次推送 需要這麼寫,如果遠程沒有該分支名,會創建一個遠程分支
查看遠端庫的分支情況
$ git branch -r
$ git branch -a //前文有講到,這個命令是查看所有分支
git強制從遠程拉下來文件
$ git pull origin master --allow-unrelated-histories
git刪除遠程分支
$ git push origin --delete 遠程分支名
第一次把本地項目放到遠程倉庫
①初始化本地倉庫
git init
②將所有文件添加到本地倉庫(add 後面的空格+點 不能少)
git add .
③將項目提交到本地git倉庫 (“first commit” 是備註信息 自己隨便寫)
git commit -m "first commit"
④本地git倉庫與遠程倉庫關聯(git@xx.xx.xx.xx:repos/xxx/xxx/xxx.git 是遠程倉庫地址)
git remote add origin [email protected]:repos/xxx/xxx/xxx.git
⑤將項目推送到遠程倉庫(master是分支名 -f 強制推送)
git push -u origin master -f 或者 git push origin master
執行⑤出錯的話 執行下面命令後 在執行⑤
git pull --rebase origin master
⑥強拉失敗 執行如下命令
git pull origin master --allow-unrelated-histories
解決衝突 merge
團隊開發都會遇到的。
當Git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。
解決衝突就是把Git合併失敗的文件手動編輯爲我們希望的內容,再提交。