Git
1:選擇git
2:下載對應版本
安裝
Git常用命令:
顯示信息類命令
git ls-files -u 顯示沖突的文件,-s是顯示標記為沖突已解決的文件
git diff 對比工作區和stage文件的差異
git diff --cached 對比stage和branch之間的差異
git branch 列出當前repository下的所有branch
git branch --a 列出local 和remote下的所有branch
git ls-files --stage 檢查保存在stage的文件
git log 顯示到HEAD所指向的commit為止的所有commit記錄 。使用reset HEAD~n 命令使HEAD指針向前移動,會導致HEAD之后的commit記錄不會被顯示。
git log -g則會查詢reflog去查看最近做了哪些動作,這樣可以配合git branch 恢復之前因為移動HEAD指針所丟棄的commit對象。如果reflog丟失則可以通過git fsck --full來查看沒被引用的commit對象。
git log -p -2 對比最新兩次的commit對象
log -1 HEAD
git log --pretty=oneline
git log --stat 1a410e 查看sha1為1a410e的commit對象的記錄
git blame -L 12,22 sth.cs 如果你發現自己代碼中 的一個方法存在缺陷,你可以用git blame來標注文件,查看那個方法的每一行分別是由誰 在哪一天修改的。下面這個例子使用了-L選項來限制輸出范圍在第12至22行
創建類命令
git brach branchName 創建名為branchName分支
git checkout branchName 切換到branchName分支
git checkout -b 創建並切換,也就是上面兩個命令的合並
git brach branchName ef71 從commit ef71創建名為branchName的branch
撤銷類命令
如果是單個文件
1.use "git reset HEAD <file>..." to unstage
如果已經用add 命令把文件加入stage了,就先需要從stage中撤銷
然后再從工作區撤銷
2.use "git checkout -- <file>..." to discard changes in working directory
git checkout a.txt 撤銷a.txt的變動(工作區上的文件)
如果是多個文件
git chenkout .
如果已經commit 了,則需要
git commit --amend 來修改,這個只能修改最近上一次的,也就是用一個新的提交來覆蓋上一次的提交。因此如果push以后再做這個動作就會有危險
$ git reset --hard HEAD 放棄工作區和index的改動,HEAD指針仍然指向當前的commit.(參照第一幅圖)
這條命令同時還可以用來撤銷還沒commit的merge,其實原理就是放棄index和工作區的改動,因為沒commit的改動只存在於index和工作區中。
git reset --hard HEAD^ 用來撤銷已經commit的內容(等價於 git reset --hard HEAD~1) 。原理就是放棄工作區和index的改動,同時HEAD指針指向前一個commit對象。
git revert 也是撤銷命令,區別在於reset是指向原地或者向前移動指針,git revert是創建一個commit來覆蓋當前的commit,指針向后移動
提交類命令
git add +文件名 跟蹤新文件或者已有文件的改動,或者用來解決沖突
git commit +文件名 把文件從stage提交到branch
git commit -a 把修改的文件先提交到stage,然后再從stash提交到branch
刪除類命令
git rm --cached readme.txt 只從stage中刪除,保留物理文件
git rm readme.txt 不但從stage中刪除,同時刪除物理文件
git mv a.txt b.txt 把a.txt改名為b.txt
Merge類命令
在沖突狀態下,需要解決沖突的文件會從index打回到工作區。
1.用工具或者手工解決沖突
2.git add 命令來表明沖突已經解決。
3.再次commit 已解決沖突的文件。
$ git reset --hard ORIG_HEAD 用來撤銷已經commit 的merge.
$ git reset --hard HEAD 用來撤銷還沒commit 的merge,其實原理就是放棄index和工作區的改動。
git reset --merge ORIG_HEAD,注意其中的--hard 換成了 --merge,這樣就可以避免在回滾時清除working tree。
git help 幫助命令
eclipse中git(推送到網絡服務器)
1:新建項目
2:右鍵項目Teamàshare project
3:選擇git
4:選擇為git項目
5:第一次觀察狀態
修改后沒提交,或者剛創建現在>
6:右鍵項目Teamàcommit(寫完項目后)
提交到本地倉庫
7:第二次觀察狀態
有個油瓶說明提交到本地倉庫
8:右鍵項目Teamàremoteàpush(推到網絡倉庫)
1:登入github或者碼雲
2:創建個新的項目
3:復制秘鑰
輸入相關信息:
9:選擇推送進入的分支
輸入完上面兩個后,單擊add,下一步,在finish。
10:推送中(完成)
完成刷新頁面查看:
Eclipse獲取網絡git任務
1:選擇git視圖
2:選擇clone
或者
3:復制網絡秘鑰
在表格中復制秘鑰,填寫信息。
4:選擇需要復制下來的分支項目
5:更改到當前工作空間並給個倉庫名
6:出現以下視圖完成
7:切換到java視圖,導入項目
右鍵工作欄,importàgit
8:選擇油管
9:完成
Eclipse修改提交到網絡倉庫
1:右鍵項目Teamàcommit
2:右鍵項目Teamàremoteàpush(推到網絡倉庫)
就可以
獲取網絡他人修改
1:右鍵項目Teamàpull
如果出錯:就更改
點擊open添加屬性:
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "origin"]
url = https://git.oschina.net/maofa/test.git
fetch = +refs/heads/*:refs/remotes/origin/*
push = refs/heads/master:refs/heads/master
更改沖突
1:右鍵項目Teamàsynchronize 添加到同步視圖
2:出現紅圖標證明修改沖突
先拉下來更新pull
3:手動解決沖突
4:右鍵項目 teamàadd to index 出現*
5:右鍵項目Teamàcommit
6:右鍵項目Teamàremoteàpush
完成:
出現問題:防火牆問題:http:ssIVerify=false
Git 快速配置:
Ssh:
1:生成ssh鑰匙
ssh-keygen -t rsa -C "youremail@example.com"
可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件
在gitHub或者任何托管代碼平台上添加鑰匙:
2:git clone https://github.com/master-dev.git克隆遠程分支
進入克隆目錄就可以實現代碼的上傳推送
第一次創建目錄:
git init
git remote add origin http://192.168.0.240/root/bagtree.git
git add .
git commit
git push –u origin master