Linux 服務器上安裝git
yum -y install git
git config --global user.name "name"
git config --global user.email "email"
globa 參數表示這台機器上所有倉庫都會使用這個配置,當然也可以對指定倉庫使用指定的配置
創建倉庫的兩種方法:
普通 倉庫 git init 裸庫 git init --bare
兩者的區別參見 https://segmentfault.com/q/1010000004683286/a-1020000004684114
當創建普通庫時,除了 .git目錄之外,你還可以看到庫中所有所包含的所有源文件,擁有了一個可以瀏覽,修改的本地庫(add,commit.delete)
一般來說,一個裸庫往往被創建用於 作為大家一起工作的共享庫,每個人都可以往里面 push 自己的本地修改,一個常用的方式是在庫名后面加上 .git
git status 查看當前倉庫的狀態
git diff 查看修改的內容
git commit 提交
git log 提交歷史記錄
git reflog 歷史命令
git reset --hard HEAD^ 文件回退
git reset --hard 23134(版本號前面幾位)
在進行版本回退額時候 執行 git reset --hard 12312后,現在又后悔了,想要回到最新的狀態 實行 git reflog 看到最新的一次提交的commit id 執行 get reset --hard lastid 即可回到最新狀態
git chekout -- text.txt 丟棄工作區的修改 ,這讓個文件回到了最近一次 commit 或 add 時 的狀態
文件的刪除
git rm filename 然后git commit
git push origin master
如果手動刪除文件 rm -rf 1.txt 后想恢復文件 git checkout -- 1.txt 從版本庫中將文件恢復
git checkout 會用版本庫里的版本替換工作區中的版本,無論工作去是修改還是刪除,都可以一鍵還原。
關於分支。
查看現在在哪個分支 git branch 創建分支 git branch name 切換到某分支 git checkout name 創建並切換到某分支 git checkout -b name 合並某分支到當前分支 git merge name 刪除分支 git branch -d name 切換到a分支后,是看不見在b分支修改創建的文件,合並分支后是可以看見的
將工作現場儲藏 git stash 查看工作現場 git stash list 恢復現場的兩種方法 1 git stash apply 恢復后stash內容並不刪除,需要通過git stash drop 來刪除 2 git stash pop 恢復的同時把 stash 內容也刪了
通過git remote 查看遠程庫的信息 git remote -v 顯示更詳細的信息
多人分支合作分工
使用 git push origin branch branchname 推送自己的修改 如果推送失敗,則因為遠程分支比你的本地分支要新,使用git pull 合並 如果合並有沖突,則解決沖突,並在本地提交 沒有沖突或者解決掉沖突后,再用 git push origin branch branchname推送就能成功 如果 git pull 提示" no tracking information" 說明本地分支和遠程分支沒有鏈接關系 使用 git branch --set-upstream branch-name origin/branch-name
git config --list 查看git 的配置情況
一個git 服務器的搭建
參考鏈接 http://www.cnblogs.com/dee0912/p/5815267.html
git init --bare gittest.git 創建一個裸倉庫 (裸倉庫沒有工作區)
在 hooks底下創建一個文件 post-receive
內容為
#!/bin/bash
git --work-tree=/home/www checkout -f
chown git:git post-reveive
chmod a+x post-receive
地址就是 git@ip:/home/dir/git.git
客戶端每次 git clone 和pull 都要 輸入密碼
講客戶端的密鑰 放在 服務器上進行認證
服務器配置
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重啟sshd服務
service sshd restart
在git 用戶目錄下 新建 .ssh 目錄
將客戶端公鑰文件寫入authorized_keys
chmod 600 authorized_keys
chmod 700 .ssh
在windows 的git gui 執行 git clone 看是否能克隆倉庫
修改文件 推動到主分支,看post_receive內的checkout 目錄有無變化
如果出現仍然輸入密碼之類的,檢查密鑰文件等的權限和所有者